|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
[CICLO 6] Test Driven Development task 6.1.4 (DanieleC88 vs 71104)
come da titolo
la build per ora potrebbe essere precaria, ma cercheremo di lasciarla sempre verde: chi scrive i test non committa, mentre committa solo chi li implementa dunque, fatemi pensare una test list: - verificare che Grid si accorga se una gemma sta alla sinistra di una del suo stesso tipo - verificare bla bla bla destra bla bla bla - verificare bla bla sopra - verificare sotto - verificare che Grid illumini la gemma se si accorge che sopra, sotto, a destra o a sinistra c'è una gemma dello stesso tipo Ultima modifica di 71104 : 04-12-2005 alle 16:24. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
bla bla bla destra bla bla bla? come sei esplicativo...
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Dimenticavo: ovviamente vanno testate anche le condizioni in cui la gemma NON deve essere illuminata.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
giusto, quindi la test list diventerebbe così:
- verificare che Grid si accorga se una gemma sta alla sinistra di un'altra dello stesso tipo - verificare a destra - verificare sopra - verificare sotto - verificare che Grid si accorga quando una gemma non sta a destra, sinistra, sopra o sotto una dello stesso tipo (sempre test separati: infatti mi sa che è meglio metterli in una classe apposta perché sono tanti) - verificare che quando una gemma sta accanto ad almeno una dello stesso tipo si illumini - verificare che questo non accada se una gemma non sta accanto a nessuna dello stesso tipo ecco il primo test: Codice:
public void testSameAsLeft()
{
grid.insertGem(5, 3, gem1);
grid.insertGem(5, 4, gem2);
assertTrue(grid.sameAsLeft(gem2));
}
Ultima modifica di 71104 : 04-12-2005 alle 16:53. |
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
primo commit, perfetto; Daniele ha risolto questo test col seguente codice (un po' modificato da me per far felice Ant e per correggere un erroretto minimo ^^):
Codice:
public boolean gemIsSameAsLeft(Gem gem)
{
int column = gem.getCellColumn();
int row = gem.getCellRow();
if(column < 1)
{
return false;
}
if(getGemAt(row, column).getName().equals(getGemAt(row, column - 1).getName()))
{
return true;
}
return false;
}
|
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ok, allora, ho fatto una nuova classe TestGemBrightnessInGrid e spostato il mio test in quest'ultima:
Codice:
public class TestGemBrightnessInGrid extends TestCase
{
private Grid grid;
private Gem gem1;
private Gem gem2;
public void setUp()
{
grid = Grid.createForTesting();
gem1 = new Gem("diamond");
gem2 = new Gem("diamond");
}
public void testSameAsLeft()
{
grid.insertGem(5, 3, gem1);
grid.insertGem(5, 4, gem2);
assertTrue(grid.gemIsSameAsLeft(gem2));
}
}
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Benissimo, ora non ci resta che testare anche gli altri lati, ci vorrà poco.
Codice:
public void testSameAsRight()
{
grid.insertGem(5, 3, gem1);
grid.insertGem(5, 4, gem2);
assertTrue(grid.gemIsSameAsRight(gem1));
}
public void testSameAsTop()
{
grid.insertGem(5, 4, gem1);
grid.insertGem(6, 4, gem2);
assertTrue(grid.gemIsSameAsTop(gem2));
}
public void testSameAsBottom()
{
grid.insertGem(5, 4, gem1);
grid.insertGem(6, 4, gem2);
assertTrue(grid.gemIsSameAsBottom(gem1));
}
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! Ultima modifica di DanieleC88 : 05-12-2005 alle 13:41. |
|
|
|
|
|
#8 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
et voilà:
Codice:
public boolean gemIsSameAsRight(Gem gem)
{
int column = gem.getCellColumn();
int row = gem.getCellRow();
if(column >= grid[0].length)
{
return false;
}
if(getGemAt(row, column).getName().equals(getGemAt(row, column + 1).getName()))
{
return true;
}
return false;
}
public boolean gemIsSameAsDown(Gem gem)
{
int column = gem.getCellColumn();
int row = gem.getCellRow();
if(row > grid.length)
{
return false;
}
if(getGemAt(row, column).getName().equals(getGemAt(row + 1, column).getName()))
{
return true;
}
return false;
}
public boolean gemIsSameAsUp(Gem gem)
{
int column = gem.getCellColumn();
int row = gem.getCellRow();
if(row < 1)
{
return false;
}
if(getGemAt(row, column).getName().equals(getGemAt(row - 1, column).getName()))
{
return true;
}
return false;
}
carissimo Daniele, prima di continuare seguendo la test list ti sottopongo questo problema: Codice:
public void testAffinityCheckWithEmtpyCell()
{
grid.insertGem(5, 5, gem1);
assertFalse(grid.gemIsSameAsLeft(gem1));
}
|
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
a proposito, sarebbe bene anche riflettere su qualche modo per eliminare quella mostruosa quadruplicazione di codice, ma si tratta di un refactoring e ci penseremo a fine task.
EDIT: anzi, è talmente semplice che ci ho già pensato |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Per la quadruplicazione di codice non credo ci voglia molto... per il problema delle caselle vuote, be', cosa dire? Il problema è grande ma la soluzione è piccola. Un banalissimo 'if'.
Codice:
public boolean gemIsSameAsLeft(Gem gem)
{
int column = gem.getCellColumn();
int row = gem.getCellRow();
if(column < 1)
{
return false;
}
if(getGemAt(row, column - 1) != null)
{
if(getGemAt(row, column).getName().equals(
getGemAt(row, column - 1).getName()))
{
return true;
}
}
return false;
}
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! Ultima modifica di DanieleC88 : 05-12-2005 alle 13:42. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
hmmm puoi ancora eliminare un return
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: May 2002
Città: Milan
Messaggi: 572
|
Raga, mettete i test sotto it.diamonds.tests.ignore, almeno non ci sono problemi con la build....e fek non si arrabbia
__________________
.:. NEONISI .:. a new island for online auctions. It's worldwide, safe, simple and free. Join Us! |
|
|
|
|
|
#13 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
allora, DanieleC88 si è dovuto disconnettere percui il task dovrò essere completato domani; ho eliminato la quadruplicazione sperando (come suggerito da VICIUS) in un miracoloso fix ma Spartacus mi ha detto sorry, oggi niente miracoli
ora provo ad aggiustare la build; nel frattempo ecco il codice dei 4 metodi riassunti in un unico metodo: Codice:
public boolean gemsAreSame(Gem gem, int xStep, int yStep)
{
int column = gem.getCellColumn();
int row = gem.getCellRow();
int otherColumn = column + xStep;
int otherRow = row + yStep;
if((otherColumn < 0) || (otherColumn >= grid[0].length))
{
return false;
}
if((otherRow < 1) || (otherRow >= grid.length))
{
return false;
}
if(getGemAt(otherRow, otherColumn) != null)
{
if(gem.getName().equals(getGemAt(otherRow, otherColumn).getName()))
{
return true;
}
}
return false;
}
Codice:
public class TestGemBrightnessInGrid extends TestCase
{
private Grid grid;
private Gem gem1;
private Gem gem2;
public void setUp()
{
grid = Grid.createForTesting();
gem1 = new Gem("diamond");
gem2 = new Gem("diamond");
}
public void testSameAsLeft()
{
grid.insertGem(5, 3, gem1);
grid.insertGem(5, 4, gem2);
assertTrue(grid.gemsAreSame(gem2, -1, 0));
}
public void testSameAsRight()
{
grid.insertGem(5, 3, gem1);
grid.insertGem(5, 4, gem2);
assertTrue(grid.gemsAreSame(gem1, 1, 0));
}
public void testSameAsUp()
{
grid.insertGem(5, 4, gem1);
grid.insertGem(6, 4, gem2);
assertTrue(grid.gemsAreSame(gem2, 0, -1));
}
public void testSameAsDown()
{
grid.insertGem(5, 4, gem1);
grid.insertGem(6, 4, gem2);
assertTrue(grid.gemsAreSame(gem1, 0, 1));
}
public void testAffinityCheckWithEmtpyCell()
{
grid.insertGem(5, 5, gem1);
assertFalse(grid.gemsAreSame(gem1, 1, 0));
assertFalse(grid.gemsAreSame(gem1, 0, 1));
}
}
|
|
|
|
|
|
#14 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
magia, si è fixata da sola
tanto meglio ci vediamo domani per la seconda puntata; byez |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
In questo metodo:
Codice:
public boolean gemsAroundOfSameType(Gem gem, int column, int row)
{
int otherColumn = gem.getCellColumn() + column;
int otherRow = gem.getCellRow() + row;
if((otherColumn < 0) || (otherColumn >= grid[0].length))
{
return false;
}
if((otherRow < 1) || (otherRow >= grid.length))
{
return false;
}
if(getGemAt(otherRow, otherColumn) != null)
{
if(gem.isSameType(getGemAt(otherRow, otherColumn)))
{
return true;
}
}
return false;
}
(Ho fatto un po' di refactoring)
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
non è meglio unire le condizioni dei 2 if annidati con un &&?
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Codice:
public boolean gemsAroundOfSameType(Gem gem, int column, int row)
{
int otherColumn = gem.getCellColumn() + column;
int otherRow = gem.getCellRow() + row;
if((otherColumn < 0) || (otherColumn >= grid[0].length))
{
return false;
}
if((otherRow < 1) || (otherRow >= grid.length))
{
return false;
}
if(getGemAt(otherRow, otherColumn) == null)
{
return false;
}
if(gem.isSameType(getGemAt(otherRow, otherColumn)))
{
return true;
}
return false;
}
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#18 | ||
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
dobbiamo aggiungere un test che verifichi che venga lanciata eccezione se vengono passati una riga e una colonna fuori dalla griglia; per ora ritorna false, ma è un comportamento "temporaneo". Quote:
|
||
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Colgo l'occasione per scusarmi del casino che ho fato ieri, ma purtroppo andavo di fretta, oggi spero di avere più tempo.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! Ultima modifica di DanieleC88 : 05-12-2005 alle 13:44. |
|
|
|
|
|
|
#20 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() non deve mica lanciare eccezione: se le coordinate vanno fuori significa semplicemente che la gemma che ho dato come parametro sta sui bordi ![]() per testare gli if basta semplicemente creare dei test che testino il metodo con una gemma messa ai bordi Daniele, tocca provvedere |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:12.



















