package lab.games; import static org.junit.Assert.*; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.junit.Test; public class CountTest { @Test public void test() { try { Model model = new Model(0); Class clazz = model.getClass(); Field field = clazz.getDeclaredField("board"); field.setAccessible(true); int[][] board = (int[][]) field.get(model); Method method = clazz.getDeclaredMethod("count", int.class, board.getClass()); method.setAccessible(true); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 69, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 69, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(0, Model.PLAYER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 66, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 69, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(0, Model.COMPUTER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 66, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 65, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(0, Model.PLAYER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 62, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 65, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(0, Model.COMPUTER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 62, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 62, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(1, Model.PLAYER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 59, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 62, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(1, Model.COMPUTER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 59, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 57, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(1, Model.PLAYER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 53, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 57, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(1, Model.COMPUTER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 53, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 52, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(2, Model.PLAYER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 50, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 52, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(2, Model.COMPUTER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 50, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 47, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(2, Model.PLAYER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 43, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 47, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(2, Model.COMPUTER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 43, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 41, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(3, Model.PLAYER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 40, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 41, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(3, Model.COMPUTER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 40, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 36, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(3, Model.PLAYER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 32, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 36, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); model.drop(3, Model.COMPUTER); assertEquals("count(Model.PLAYER) failed for board" + Model.toString(board) + "\n", 32, ((Integer) method.invoke(null, Model.PLAYER, board)).intValue()); assertEquals("count(Model.COMPUTER) failed for board" + Model.toString(board) + "\n", 30, ((Integer) method.invoke(null, Model.COMPUTER, board)).intValue()); } catch (Exception e) { e.printStackTrace(); fail("Unexpected exception"); } } }