La mia classe Sprite
ha un metodo:
private void updateWithBitmap(Bitmap b, int x, int y)
Questo 'posiziona sopra' la bitmap che è stata passata, l'angolo in alto a sinistra della bitmap passata essendo in posizione x, y della bitmap padre.
Ora voglio test delle unità di scrittura per verificare che questo metodo funzioni correttamente.
Ad esempio, dovremo controllare che venga generata un'eccezione quando la bitmap passata è più grande, oppure è fuori dai limiti della bitmap padre.
[TestMethod]
[ExpectedException(typeof(System.ArgumentOutOfRangeException))]
public void TestUpdateWithBitMap_SmallerParent_ThrowsOutOfRangeException()
{
Sprite parent = new Sprite(new Bitmap(10,10));
Bitmap child = new Bitmap(20, 20);
parent.updateWithBitmap(child,0,0)
}
[TestMethod]
[ExpectedException(typeof(System.ArgumentOutOfRangeException))]
public void TestUpdateWithBitMap_PassedBitMapOutOfBounds_ThrowsOutOfRangeException()
{
Sprite parent = new Sprite(new Bitmap(10,10));
Bitmap child = new Bitmap(3, 3);
parent.updateWithBitmap(child, 9,9)
}
Bene finora.
Ma vogliamo anche verificare che il metodo sia aggiornato correttamente.
Ad esempio, se l'immagine più a sinistra è la nostra bitmap padre e la metà è la bitmap figlio e chiamiamo il nostro metodo con:
parent.updateWithBitmap(child, 3,3);
otteniamo la bitmap più a destra di conseguenza.
La domanda è:
È appropriato archiviare questi bitmap come risorse e quindi controllare che i risultati siano uguali?
ad es.
[TestMethod]
public void TestUpdateWithBitMap_UpdatesCorrectly()
{
Sprite parent = new Sprite(Properties.Resources.TestBitmapParent1);
Bitmap child = Properties.Resources.TestBitmapChild1;
parent.updateWithBitmap(child, 3,3)
#something like Assert.Equal(parent.getBitmap(), Properties.Resources.TestBitmapResult1);
}