package game.deck;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import org.junit.Test;
public class SerializedDeckTest {
@Test
public void testSerializeAndDeserialize() throws Exception {
MockDeck mockDeck = new MockDeck(new String[] { "2c 3c 4c 5c 6c", "2s 3s 4s 5s 6s" }, new String[] {
"2h 2h|3h 3h|4h 4h|5h 5h|6h 6h|7h 7h|8h 8h|9h 9h|Th Th|Jh Jh", "2d 2d|3d 3d|4d 4d|5d 5d|6d 6d|7d 7d|8d 8d|9d 9d|Td Td|Jd Jd" });
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
SerializedDeck.serializeDeck(byteArrayOutputStream, 2, mockDeck);
SerializedDeck testDeck = new SerializedDeck(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()));
testDeck.nextGame();
assertEquals("3c", testDeck.getCommunityCard(1).toString());
assertEquals("3h 3h", testDeck.getPlayerCards(1).toString());
testDeck.nextGame();
assertEquals("4s", testDeck.getCommunityCard(2).toString());
assertEquals("4d 4d", testDeck.getPlayerCards(2).toString());
try {
testDeck.nextGame();
fail("expected Exception not thrown");
} catch (IllegalStateException e) {
assertEquals("Error reading from deck-file after 3 games: marker is not '0'", e.getMessage());
}
}
}