PDA

View Full Version : [TASK 10.2.2] nihil84 Vs. cionci


cionci
16-02-2006, 09:56
Abbiamo ritenuto che contare i gameLoop non permettesse di creare un log riproducibile, questo perchè i gameLoop non hanno una durata costante, ma dipendono dalla velocità della CPU e dal carico del sistema.
Contando le esecuzioni della reactToInput gli eventi vengono appiattiti al momento in cui viene eseguita la reactToInput...che sappiamo venire eseguita ogni multiplo di InputRate ms...

1. Il contatore deve essere 0 subito dopo che l'oggetto playField è istanziato
2. il contatore deve essere 1 quando viene eseguita la prima GridController.reactToInput
3. il contatore deve essere 2 quando viene eseguita la seconda Gridcontroller.reactToInput

nihil84
16-02-2006, 09:58
Come primo test puo' andare?


public void testInputServedInitialization()

{

assertEquals("inputServed must be 0",0,playField.getInputServed());

}

cionci
16-02-2006, 10:00
Perfetto...

cionci
16-02-2006, 10:06
Aggiunto a PlayField:

public int getInputServed()
{
return 0;
}

Build verde. Passo a scrivere il prossimo test...

cionci
16-02-2006, 10:11
Prossimo test...


public void testInputServedAfterFirstInputReaction()
{
timer.advance(config.getInteger("InputRate"));
playField.reactToInput();

assertEquals("inputServed must be 1", 1, playField.getInputServed());
}

nihil84
16-02-2006, 10:23
ho aggiunto la variabile a PlayField

private int inputServed;


e la inizializzo a zero nel costruttore:

inputServed = 0;



infine la pongo ad uno all'interno di reactToInput

public void reactToInput()

{

if(lastInputReactionTimeStamp + config.getInteger("InputRate") <= timer.getTime())

{

gridController.reactToInput(timer);

lastInputReactionTimeStamp += config.getInteger("InputRate");

inputServed = 1;

}

}



e naturalmente adesso:

public int getInputServed()

{

return inputServed;

}



vai! A te la tastiera per il prossimo test

cionci
16-02-2006, 10:29
Aggiungo un test alla test list:

4. il contatore deve rimanere 0 anche quando viene richiamata PlayField.rectToInput, ma non è ancora passato un tempo InputRate ms

Passo a implementare il test:

public void testInputServedBeforeFirstInputReaction()
{
timer.advance(config.getInteger("InputRate") - 1);
playField.reactToInput();

assertEquals("inputServed must be 0", 0, playField.getInputServed());
}

Ma che succede... La build è già verde !!!

Ah...è vero... L'assegnazione a 2 è già stata messa dentro l'if...

Passo al priossimo test...

cionci
16-02-2006, 10:31
Ecco il test numero 3:



public void testInputServedAfterSecondInputReaction()
{
timer.advance(config.getInteger("InputRate"));
playField.reactToInput();

timer.advance(config.getInteger("InputRate"));
playField.reactToInput();

assertEquals("inputServed must be 2", 2, playField.getInputServed());
}

nihil84
16-02-2006, 10:41
fatto, la modifica e' minima. Posto il metodo corretto:

public void reactToInput()

{

if(lastInputReactionTimeStamp + config.getInteger("InputRate") <= timer.getTime())

{

gridController.reactToInput(timer);

lastInputReactionTimeStamp += config.getInteger("InputRate");

inputServed++;

}

}



e adesso? :P

cionci
16-02-2006, 10:46
E adesso abbiamo finito il task...
Dobbiamo fare il commit sulla codebase...

Jocchan
16-02-2006, 10:55
E adesso abbiamo finito il task...
Dobbiamo fare il commit sulla codebase...

Velocissimissimi :)

cionci
16-02-2006, 11:01
Questo era semplice... E' l'altro task ad essere comlpesso :)

VICIUS
16-02-2006, 11:24
Dei fulmini. Ottimo lavoro.

ciao ;)

cionci
16-02-2006, 11:35
VICIUS, guarda la test list che post per il task 3...fra poco la posto...