View Full Version : [TASK 10.2.2] nihil84 Vs. cionci
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
Come primo test puo' andare?
public void testInputServedInitialization()
{
assertEquals("inputServed must be 0",0,playField.getInputServed());
}
Aggiunto a PlayField:
public int getInputServed()
{
return 0;
}
Build verde. Passo a scrivere il prossimo test...
Prossimo test...
public void testInputServedAfterFirstInputReaction()
{
timer.advance(config.getInteger("InputRate"));
playField.reactToInput();
assertEquals("inputServed must be 1", 1, playField.getInputServed());
}
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
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...
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());
}
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
E adesso abbiamo finito il task...
Dobbiamo fare il commit sulla codebase...
E adesso abbiamo finito il task...
Dobbiamo fare il commit sulla codebase...
Velocissimissimi :)
Questo era semplice... E' l'altro task ad essere comlpesso :)
Dei fulmini. Ottimo lavoro.
ciao ;)
VICIUS, guarda la test list che post per il task 3...fra poco la posto...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.