Torna indietro   Hardware Upgrade Forum > Software > Programmazione

realme 12X 5G: ottimo compromesso a meno di 200 euro
realme 12X 5G: ottimo compromesso a meno di 200 euro
Il realme 12X 5G offre buoni potenti, design accattivante, display fluido a 120Hz, fotocamera principale da 50MP, grande batteria e ricarica rapida a un prezzo competitivo nel mercato della fascia medio-bassa. Lo abbiamo provato e vi raccontiamo tutto nella nostra recensione completa
Recensione Apple iPad Pro M4: è più potente di un MacBook Air M3
Recensione Apple iPad Pro M4: è più potente di un MacBook Air M3
Il nuovo iPad Pro ha ora un processore M4 che nessun altro prodotto Apple possiede oggi, è più potente di un MacBook Air base, è più sottile di un iPod del passato e lo schermo ha ora un OLED incredibile. Mancano solo delle app veramente ''Pro'' per fare il salto definitivo e sostituire davvero un MacBook.   
Recensione Kobo Clara Colour: il primo eReader a colori. Che spettacolo!
Recensione Kobo Clara Colour: il primo eReader a colori. Che spettacolo!
Kobo Clara Colour è il primo eReader dell’azienda insieme al Libra Colour a proporre agli utenti un display E INK a colori. È senza dubbio affascinante, con alcuni vantaggi che sono sicuramente tutti inerenti alla lettura dei fumetti o libri illustrati. Farà effettivamente la differenza sul mercato? Cerchiamo di scoprirlo in questa nostra recensione.
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: 1536
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: 1536
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: 12077
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: 12077
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: 12077
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: 12077
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: 12077
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: 12077
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: 1536
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: 1536
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: 12077
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à: California
Messaggi: 11781
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


realme 12X 5G: ottimo compromesso a meno di 200 euro realme 12X 5G: ottimo compromesso a meno di 200 ...
Recensione Apple iPad Pro M4: è più potente di un MacBook Air M3 Recensione Apple iPad Pro M4: è più...
Recensione Kobo Clara Colour: il primo eReader a colori. Che spettacolo!  Recensione Kobo Clara Colour: il primo eReader a...
ASUS Advanced BTF: basta cavi in vista, assemblare un bel PC è un gioco da ragazzi ASUS Advanced BTF: basta cavi in vista, assembla...
Recensione Logitech G PRO 60 X: la prima tastiera 60% del marchio convince solo a metà Recensione Logitech G PRO 60 X: la prima tastier...
My Hidden Ego, il progetto fotografico d...
La fotocamera istantanea Polaroid Go Gen...
SpaceX: il quarto tentativo di lancio di...
Rainbow Six Siege, Ubisoft annuncia l'ab...
Colla sulla pizza: Google rimuove manual...
Wolters Kluwer: alle imprese serve un pr...
Ionity presenta due nuovi abbonamenti pe...
Black Ops 6 sarà il primo Call of...
Meta Quest 2 costa solo 249€ su Amazon e...
QuObjects: lo storage compatibile S3 di ...
Il rapporto degli italiani con l'intelli...
Google indicizza i file EPUB: una nuova ...
Germania e saturazione solare: ecco cosa...
NAS Synology DS1621+ con 6 Hard Disk Iro...
L’IA generativa al centro di AWS Summit
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: 22:12.


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