Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2
Dopo un mese di utilizzo intensivo e l'analisi di oltre 50 scatti, l'articolo offre una panoramica approfondita di Nintendo Switch 2. Vengono esaminate le caratteristiche che la definiscono, con un focus sulle nuove funzionalità e un riepilogo dettagliato delle specifiche tecniche che ne determinano le prestazioni
Gigabyte Aero X16 Copilot+ PC: tanta potenza non solo per l'IA
Gigabyte Aero X16 Copilot+ PC: tanta potenza non solo per l'IA
Un notebook che punta sull'abbinamento tra potenza di calcolo, schermo ampio e dimensioni nel complesso compatte. Gigabyte Aero X16 Copilot+ PC si trasporta facilmente, vanta buona autonomia con batteria e offre tanto grazie alla piattaforma AMD Ryzen AI e alla scheda video NVIDIA GeForce RTX 5070 Laptop tanto per un utilizzo professionale come per intrattenersi.
vivo X200 FE: il top di gamma si è fatto tascabile?
vivo X200 FE: il top di gamma si è fatto tascabile?
Molte persone vorrebbero prestazioni da top di gamma, ma in formato più tascabile. vivo X200 FE si indirizza proprio a questo tipo di persone e vuole rappresentare il giusto mix tra prestazioni e ingombri, con una batteria da ben 6.500 mAh in un corpo da 7,99 millimetri di spessore. La nostra prova completa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-02-2008, 08:03   #101
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
from
Codice:
    public void testNotMoveRightOnRestartWaitState() throws IOException
    {
        // TODO: REFACTOR THIS

        Droppable slaveGem;
        Droppable pivotGem;

        fillFourthColumn();

        loop.getPlayerTwoInput().notify(Event.create(Code.RIGHT, State.PRESSED));
        loop.getPlayerTwoInput().notify(Event.create(Code.DOWN, State.PRESSED));
        loop.getPlayerTwoInput().notify(Event.create(Code.BUTTON1, State.PRESSED));

        environment.getTimer().advance(newGemDelay);

        slaveGem = field2.getGridController().getGemsPair().getSlave();
        int slaveRow = slaveGem.getRegion().getTopRow();
        int slaveColumn = slaveGem.getRegion().getLeftColumn();

        pivotGem = field2.getGridController().getGemsPair().getPivot();
        int pivotRow = pivotGem.getRegion().getTopRow();
        int pivotColumn = pivotGem.getRegion().getLeftColumn();

        environment.getTimer().advance(restartGameDelay - 1);
        loop.doOneStep();

        assertEquals(field2.getGridController().getGemsPair().getSlave().getRegion().getLeftColumn(), slaveColumn);
        // slaveRow +1 perche la gravit� sulla gemsPair viene testata prima del check
        // del
        // gameOver(in gridController.update)
        assertEquals(field2.getGridController().getGemsPair().getSlave().getRegion().getTopRow(), slaveRow + 1);

        assertEquals(field2.getGridController().getGemsPair().getPivot().getRegion().getLeftColumn(), pivotColumn);
        // slaveRow +1 perche la gravit� sulla gemsPair viene testata prima del check
        // del
        // gameOver(in gridController.update)
        assertEquals(field2.getGridController().getGemsPair().getPivot().getRegion().getTopRow(), pivotRow + 1);

    }
to
Codice:
    public void testGemsPairOnFieldTwoMoveWhenGameOverOccour() throws IOException
    {
        Droppable slaveGem = field2.getGridController().getGemsPair().getSlave();
        Droppable pivotGem = field2.getGridController().getGemsPair().getPivot();

        fillFourthColumn();
        
        int slaveRow = slaveGem.getRegion().getTopRow();
        int slaveColumn = slaveGem.getRegion().getLeftColumn();
        int pivotRow = pivotGem.getRegion().getTopRow();
        int pivotColumn = pivotGem.getRegion().getLeftColumn();

        environment.getTimer().advance(newGemDelay);
        loop.doOneStep();

        assertEquals(field2.getGridController().getGemsPair().getSlave().getRegion().getLeftColumn(), slaveColumn);
        assertEquals(field2.getGridController().getGemsPair().getSlave().getRegion().getTopRow(), slaveRow + 1);

        assertEquals(field2.getGridController().getGemsPair().getPivot().getRegion().getLeftColumn(), pivotColumn);
        assertEquals(field2.getGridController().getGemsPair().getPivot().getRegion().getTopRow(), pivotRow + 1);
    }
    
    
    public void testGemsPairOnFieldTwoNotMoveOnWaitRestart() throws IOException
    {
        Droppable slaveGem = field2.getGridController().getGemsPair().getSlave();
        Droppable pivotGem = field2.getGridController().getGemsPair().getPivot();

        fillFourthColumn();
        
        loop.getPlayerTwoInput().notify(Event.create(Code.RIGHT, State.PRESSED));
        loop.getPlayerTwoInput().notify(Event.create(Code.DOWN, State.PRESSED));
        loop.getPlayerTwoInput().notify(Event.create(Code.BUTTON1, State.PRESSED));

        environment.getTimer().advance(newGemDelay);
        loop.doOneStep();

        Region slaveRegion = cloneRegion(slaveGem.getRegion());
        Region pivotRegion = cloneRegion(pivotGem.getRegion());

        environment.getTimer().advance(restartGameDelay - 1);
        loop.doOneStep();
        
        assertEquals(slaveGem.getRegion(), slaveRegion);
        assertEquals(pivotGem.getRegion(), pivotRegion);
    }
notare la creazione in ComponentHelperForTest di cloneRegion per evitare di tirarsi fuori top e left ogni volta e confrontarle una per una..
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 08:06   #102
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
from
Codice:
    public void testControllerDontReactForKeyPressedOnDelay() throws IOException
    {
        // TODO: REFACTOR THIS

        int inputRate = environment.getConfig().getInteger("InputRate");

        fillFourthColumn();

        loop.getPlayerTwoInput().notify(Event.create(Code.RIGHT, State.PRESSED));
        loop.getPlayerTwoInput().notify(Event.create(Code.DOWN, State.PRESSED));
        loop.getPlayerTwoInput().notify(Event.create(Code.BUTTON1, State.PRESSED));

        environment.getTimer().advance(newGemDelay);
        loop.doOneStep();

        environment.getTimer().advance(restartGameDelay);
        loop.doOneStep();

        environment.getTimer().advance(inputRate);
        loop.doOneStep();

        DroppablePair newGemsPairOne = loop.getPlayFieldOne().getGridController().getGemsPair();
        DroppablePair newGemsPairTwo = loop.getPlayFieldTwo().getGridController().getGemsPair();

        assertEquals("New pivot of field One is misplaced", 4, newGemsPairOne.getPivot().getRegion().getLeftColumn());
        assertEquals("New pivot of field One is misplaced", 2, newGemsPairOne.getPivot().getRegion().getTopRow());

        assertEquals("New slave of field One is misplaced", 4, newGemsPairOne.getSlave().getRegion().getLeftColumn());
        assertEquals("New slave of field One is misplaced", 1, newGemsPairOne.getSlave().getRegion().getTopRow());

        assertEquals("New pivot of field Two is misplaced", 4, newGemsPairTwo.getPivot().getRegion().getLeftColumn());
        assertEquals("New pivot of field Two is misplaced", 2, newGemsPairTwo.getPivot().getRegion().getTopRow());

        assertEquals("New slave of field Two is misplaced", 4, newGemsPairTwo.getSlave().getRegion().getLeftColumn());
        assertEquals("New slave of field Two is misplaced", 1, newGemsPairTwo.getSlave().getRegion().getTopRow());

    }
to
Codice:
    public void testControllerDontReactForKeyPressedOnDelay() throws IOException
    {
        int inputRate = environment.getConfig().getInteger("InputRate");

        fillFourthColumn();

        loop.getPlayerTwoInput().notify(Event.create(Code.RIGHT, State.PRESSED));
        loop.getPlayerTwoInput().notify(Event.create(Code.DOWN, State.PRESSED));
        loop.getPlayerTwoInput().notify(Event.create(Code.BUTTON1, State.PRESSED));

        environment.getTimer().advance(newGemDelay);
        loop.doOneStep();

        environment.getTimer().advance(restartGameDelay);
        loop.doOneStep();

        environment.getTimer().advance(inputRate);
        loop.doOneStep();

        DroppablePair newGemsPairOne = loop.getPlayFieldOne().getGridController().getGemsPair();
        DroppablePair newGemsPairTwo = loop.getPlayFieldTwo().getGridController().getGemsPair();

        assertEquals("New pivot of field One is misplaced", PIVOT_START_REGION, newGemsPairOne.getPivot().getRegion());
        assertEquals("New slave of field One is misplaced", SLAVE_START_REGION, newGemsPairOne.getSlave().getRegion());

        assertEquals("New pivot of field Two is misplaced", PIVOT_START_REGION, newGemsPairTwo.getPivot().getRegion());
        assertEquals("New slave of field Two is misplaced", SLAVE_START_REGION, newGemsPairTwo.getSlave().getRegion());
    }
qua non ho potuto fare molto...oltre che creare in ComponentHelperForTest PIVOT_START_REGION e SLAVE_START_REGION per semplificare gli assert. Quando arrivo a lavoro metto in config i punti di partenza della slave e della pivot (come da TODO) e poi committo
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 08:34   #103
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Si ma i test non devono assolutamente dipendere dai valori nel config..
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 09:31   #104
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
Si ma i test non devono assolutamente dipendere dai valori nel config..
non sono d'accordo. Si rendono i test più resistenti al cambiamento. Domani cambiamo il tempo di reactToInput e se i valori sono hardcoded tutto si rompe. Usando i valori nel config invece tutto continua a funzionare(o almeno si rompe meno roba).

Poi si potrebbe anche fare un test per testare solo che la gems pair sia in una hardcoded posizione di partenza, ma secondo me è eccessivo.

ps. i valori da config per la posizione della gems pair li ho utilizzati solo in quel test. Se poi si vuol portare l'idea anche il altri test si può fare.

pps. dove si pensa che un test dipenda fortemente dal comportamento di default del config(il test ha senso solo se la gems pair è sulla colonna 4) allora si possono usare valori hardcoded nel test

Ultima modifica di thebol : 08-02-2008 alle 09:34.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 10:03   #105
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Ah ok pensavo dicessi test tipo:


int updateRate = config.getInteger("updateRate");

assert(updateRate == 300);



Se e` per rendere i test a prova di cambiamento sono d'accordissimo
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 10:08   #106
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
Ah ok pensavo dicessi test tipo:


int updateRate = config.getInteger("updateRate");

assert(updateRate == 300);



Se e` per rendere i test a prova di cambiamento sono d'accordissimo
ah ok, sono anche io contro quel tipo di test
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 12:06   #107
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Due cosine a cui vorrei che deste un occhiata perché mi hanno confuso non poco.

Prima di tutto non sarebbe meglio limitare l'argomento di ScoreCalculator.closeChain() a valori tra 2 e 10? In questo momento è possibile passargli qualsiasi cosa ci passi per la mente e la funzione è persino usata per resettare il tempScore usando 0.

Negli ultimi due test di TestGemCollisionSound il valore per la gravità presente nella configurazione viene moltiplicato per 2. Togliendo questa moltiplicazione i test passano comunque, quindi mi chiedevo a cosa serve? C'è qualche ragione più profonda che ho mancato?
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 21:36   #108
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
sono finiti tutti i refactor this?
ho fatto l'update alla head e non ne vedo...
che posso fare di breve stasera che posso?
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 21:42   #109
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Forse ci sono i "REFACTOR THIS" che non hai visto?

In ogni caso se vai in Windows->showView->Tasks ti trovi tutti i TODO saprsi per Diamonds
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 21:56   #110
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
Quote:
Originariamente inviato da Bonfo Guarda i messaggi
Forse ci sono i "REFACTOR THIS" che non hai visto?

In ogni caso se vai in Windows->showView->Tasks ti trovi tutti i TODO saprsi per Diamonds
no, ho guardato proprio in tasks
lo so dove si trovano i TODO
..però non ne vedo REFACTOR THIS...

P.S. mi da 26 items in tasks per la precisione....
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 22:08   #111
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
no, ho guardato proprio in tasks
lo so dove si trovano i TODO
..però non ne vedo REFACTOR THIS...

P.S. mi da 26 items in tasks per la precisione....
Io ne ho 41, di cui 11 sono REFACTOR THIS.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 22:16   #112
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Io ne ho 41, di cui 11 sono REFACTOR THIS.

sto rifacendo l'update....
e mi sta riupdatando tutto ora..
non ci sto capendo + niente..

P.S. il primo update l'avevo fatto con tortoise e ora questo lo sto facendo con subclipse..
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 22:20   #113
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
ok ci siamo..
41 todo e 11 refactor this..
sarà stato tortoise ad impallarsi
EDIT:
scoperto il motivo
in realtà ho due copie di diamonds una si I: e una in i:\workspace\eclipse
__________________

Ultima modifica di ^TiGeRShArK^ : 08-02-2008 alle 22:27.
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 22:25   #114
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
Prima:
Codice:
// TODO: REFACTOR THIS!!! I smell a bad test. Insanely long name and 5 assert.
    public void testRepeatitionActivatedAndHandlerExecutedOnInputReaction()
    {
        setupInput();
        input.notify(Event.create(Code.ENTER, State.PRESSED));
        reactor.reactToInput(environment.getTimer().getTime());
        assertFalse(handler.isRepeated(0));
        environment.getTimer().advance(201);
        handler.resetStatus();
        reactor.reactToInput(environment.getTimer().getTime());
        assertTrue(handler.isRepeated(0));
        assertEquals(handler.getFastRepeatDelay(), handler.getCurrentRepeatDelay());
        assertTrue(handler.executed());
        assertTrue(handler.pressed());
    }
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 23:24   #115
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
rettifico..
Ho dovuto sistemare TUTTO dato che era qualcosa di trascendentale.
Prima:
Codice:
    private void setupInput()
    {
        input = Input.create(environment.getKeyboard(), environment.getTimer());
        input.setEventMappings(createEventMappings());
        reactor = new InputReactor(input, 200, 100);
        reactor.addHandler(Code.ENTER, handler);
    }


    public void setUp()
    {
        environment = MockEnvironment.create();
        handler = MockEventHandler.create();
    }


    public void testNormalRepeatDelaySet()
    {
        handler.setNormalRepeatDelay(100);
        assertEquals(100, handler.getNormalRepeatDelay());
    }


    public void testFastRepeatDelaySet()
    {
        handler.setFastRepeatDelay(100);
        assertEquals(100, handler.getFastRepeatDelay());
    }


    public void testPressed()
    {
        setupInput();
        handler.handleEvent(reactor, Event.create(Code.ENTER, State.PRESSED));
        assertTrue(handler.isPressed());
    }


    public void testReleased()
    {
        setupInput();
        handler.handleEvent(reactor, Event.create(Code.ENTER, State.PRESSED));
        handler.handleEvent(reactor, Event.create(Code.ENTER, State.RELEASED));
        assertFalse(handler.isPressed());
    }


    public void testRepeatitionOnTimeDelay()
    {
        setupInput();
        input.notify(Event.create(Code.ENTER, State.PRESSED));
        reactor.reactToInput(environment.getTimer().getTime());
        assertFalse(handler.isRepeated(0)); // TODO: 3 assert? why?
        assertTrue(handler.isRepeated(201));
        assertEquals(handler.getNormalRepeatDelay(), handler.getCurrentRepeatDelay());
    }


    // TODO: REFACTOR THIS!!! I smell a bad test. Insanely long name and 5 assert.
    public void testRepeatitionActivatedAndHandlerExecutedOnInputReaction()
    {
        setupInput();
        input.notify(Event.create(Code.ENTER, State.PRESSED));
        reactor.reactToInput(environment.getTimer().getTime());
        assertFalse(handler.isRepeated(0));
        environment.getTimer().advance(201);
        handler.resetStatus();
        reactor.reactToInput(environment.getTimer().getTime());
        assertTrue(handler.isRepeated(0));
        assertEquals(handler.getFastRepeatDelay(), handler.getCurrentRepeatDelay());
        assertTrue(handler.executed());
        assertTrue(handler.pressed());
    }


    // TODO: Why all this assert?
    public void testRepeatitionDisactivatedOnEventReleased()
    {
        setupInput();
        input.notify(Event.create(Code.ENTER, State.PRESSED));
        reactor.reactToInput(environment.getTimer().getTime());
        assertFalse(handler.isRepeated(0));
        environment.getTimer().advance(201);
        reactor.reactToInput(environment.getTimer().getTime());
        assertTrue(handler.isRepeated(0));
        environment.getTimer().advance(201);
        input.notify(Event.create(Code.ENTER, State.RELEASED));
        reactor.reactToInput(environment.getTimer().getTime());
        assertFalse(handler.isRepeated(0));
    }
}
Dopo il colpo dell'uccello d'acqua di nanto:
Codice:
    public void setUp()
    {
        environment = MockEnvironment.create();
        int normalRepeatDelay = environment.getConfig().getInteger("NormalRepeatDelay");
        int fastRepeatDelay = environment.getConfig().getInteger("FastRepeatDelay");
        timer = environment.getTimer();

        handler = MockEventHandler.create();
        input = Input.create(environment.getKeyboard(), environment.getTimer());
        input.setEventMappings(createEventMappings());
        reactor = new InputReactor(input, normalRepeatDelay, fastRepeatDelay);
        reactor.addHandler(Code.ENTER, handler);
        input.notify(Event.create(Code.ENTER, State.PRESSED));
    }


    public void testNormalRepeatDelaySet()
    {
        handler.setNormalRepeatDelay(100);
        assertEquals(100, handler.getNormalRepeatDelay());
    }


    public void testFastRepeatDelaySet()
    {
        handler.setFastRepeatDelay(100);
        assertEquals(100, handler.getFastRepeatDelay());
    }


    public void testPressed()
    {
        handler.handleEvent(reactor, Event.create(Code.ENTER, State.PRESSED));
        assertTrue(handler.isPressed());
    }


    public void testReleased()
    {
        handler.handleEvent(reactor, Event.create(Code.ENTER, State.PRESSED));
        handler.handleEvent(reactor, Event.create(Code.ENTER, State.RELEASED));
        assertFalse(handler.isPressed());
    }


    public void testHandlerNotRepeated()
    {
        reactToInput();
        assertFalse(handler.isRepeated(0));
    }


    private void reactToInput()
    {
        reactor.reactToInput(timer.getTime());
    }


    public void testHandlerIsRepeatedAfterDelay()
    {
        reactToInput();
        assertTrue(handler.isRepeated(handler.getNormalRepeatDelay() + 1));
    }


    public void testRepeatDelayIsNotChanging()
    {
        reactToInput();
        assertEquals(handler.getNormalRepeatDelay(), handler.getCurrentRepeatDelay());
    }


    public void testHandlerIsRepeatedAfterTwoInputReaction()
    {
        reactTwiceToInput();
        assertTrue(handler.isRepeated(0));
    }


    public void testFastRepetitionSetAfterTwoInputReaction()
    {
        reactTwiceToInput();
        assertEquals(handler.getFastRepeatDelay(), handler.getCurrentRepeatDelay());
    }


    public void testHandlerExecutedAfterTwoInputReaction()
    {
        reactTwiceToInput();
        assertTrue(handler.executed());
    }


    public void testHandlerPressedAfterTwoInputReaction()
    {
        reactTwiceToInput();
        assertTrue(handler.pressed());
    }


    public void testRepetitionDeactivatedWhenReleased()
    {
        reactTwiceToInput();
        timer.advance(handler.getNormalRepeatDelay() + 1);
        input.notify(Event.create(Code.ENTER, State.RELEASED));
        reactToInput();
        assertFalse(handler.isRepeated(0));
    }


    private void reactTwiceToInput()
    {
        reactToInput();
        timer.advance(handler.getNormalRepeatDelay() + 1);
        reactToInput();
    }
}
ebbene si
2000 anni di scuola Hokuto ci hanno insegnato la vittoria del refactoring sul bad design e sui bug

__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 23:28   #116
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Ottimo lavoro ma perche il setUp e` diventato piu` incasinato?
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 23:53   #117
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
In CanMoveDownQuery ho trovato questo codice

Codice:
    protected void applyOn(Droppable gem)
    {
        if (pair != null)
        {
            if (gem == pair.getPivot() || gem == pair.getSlave())
            {
                return;
            }
        }

        result |= gem.getMovingDownObject().canMoveDown(getGrid());
    }
Anche questo direi che e` un rimasuglio delle dynamite. Cancello l'if. Se avete qualcosa in contrario dite pure


Codice:
    protected void applyOn(Droppable gem)
    {
        result |= gem.getMovingDownObject().canMoveDown(getGrid());
    }
Rimuovo i due test che falliscono che testano appunto questo comportamento (tral'altro in maniera oscura)
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2008, 23:57   #118
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
Ottimo lavoro ma perche il setUp e` diventato piu` incasinato?
perchè ho aggiunto lì tutto quello che era ripetuto nei vari metodi
EDIT: volendo si potrebbe reintrodurre l'extract method con setupInput... fai pure se ti va
__________________

Ultima modifica di ^TiGeRShArK^ : 08-02-2008 alle 23:59.
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2008, 08:49   #119
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
perchè ho aggiunto lì tutto quello che era ripetuto nei vari metodi
EDIT: volendo si potrebbe reintrodurre l'extract method con setupInput... fai pure se ti va
Si' per favore
fek è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2008, 09:22   #120
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
ho committare il refactor this del mio precedente post....

ho però aggiunto un todo a questo test

Codice:
    //TODO This test check a behavior not necessary for the game. Remove it? 
    public void testGemsPairOnFieldTwoMoveWhenGameOverOccour() throws IOException
    {
        Droppable slaveGem = field2.getGridController().getGemsPair().getSlave();
        Droppable pivotGem = field2.getGridController().getGemsPair().getPivot();

        fillFourthColumn();
        
        Region slaveNextRegion = cloneRegion(slaveGem.getRegion(), 0, 1);
        Region pivotNextRegion = cloneRegion(pivotGem.getRegion(), 0, 1);

        environment.getTimer().advance(newGemDelay);
        loop.doOneStep();

        assertEquals(field2.getGridController().getGemsPair().getSlave().getRegion(), slaveNextRegion);
        assertEquals(field2.getGridController().getGemsPair().getPivot().getRegion(), pivotNextRegion);
    }
praticamente questo test verifica un comportamento di diamonds, che però non è una specifica.

Praticamente quando capita il gameover sul field1 la pair sul field2 fà un movimento verso il basso.

Questo perchè viene fatto un check se cè gameover, poi viene fatto l'update sul field 1, viene generato il gameover, poi viene fatto l'update del field2(e la pair si muove verso il basso). Al giro successivo si troverà il gameover, e la pair non si muove più(verificato da un altro test).

Questo test è da tenere?


ps.C'è un simpatico plugin per eclipse di checkstyle. Una volta caricato il file di configurazione di checkstyle, e abilitato nel progetto di diamonds, vi ritroverete i warning in eclipse. Consiglio comunque sempre una build di ant prima di committare. C'è solo una modifica da fare dopo aver caricato il file, andare in Class design->Final class e deselezionare Hide Utility Class Constructor, che genera dei warning nel codice non segnalati dal task ant(non so se dipende da diverse versioni di checkstyle).

Ultima modifica di thebol : 09-02-2008 alle 09:28.
thebol è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2 Dopo un mese, e 50 foto, cosa abbiamo capito del...
Gigabyte Aero X16 Copilot+ PC: tanta potenza non solo per l'IA Gigabyte Aero X16 Copilot+ PC: tanta potenza non...
vivo X200 FE: il top di gamma si è fatto tascabile? vivo X200 FE: il top di gamma si è fatto ...
TCL 65C7K, televisore Mini-LED di qualità, versatile e dal prezzo competitivo TCL 65C7K, televisore Mini-LED di qualità...
Fujifilm X-E5: la Fuji X che tutti gli appassionati volevano Fujifilm X-E5: la Fuji X che tutti gli appassion...
75 milioni per salvare le VHS: ecco il p...
Grok 4 è meglio di un dottorato i...
L'IA ci rende più stupidi o pi&ug...
Rimac Nevera R è fuori controllo: 24 rec...
“Incomprensibili e fuorvianti”: l'accusa...
Proxmox compie vent'anni: come la virtua...
L'IA prova emozioni? Non ancora, ma sann...
Bruxelles detta le regole all'IA: chi no...
Red Hat annuncia novità per gli s...
Aqara G410: il campanello smart con Home...
Funziona davvero il raffrescatore da col...
'O paghi o accetti i cookie': il modello...
Diabete tipo 1: arriva il micro-impianto...
Prime Day: le 5 migliori cuffie in offer...
Prime Day: monitor top in offerta, dai 1...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:48.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www2v