import junit.framework.TestCase; import java.util.*; /* Unit test for Piece class -- starter shell. */ public class PieceTest extends TestCase { // You can create data to be used in the your // test cases like this. For each run of a test method, // a new PieceTest object is created and setUp() is called // automatically by JUnit. // For example, the code below sets up some // pyramid and s pieces in instance variables // that can be used in tests. private Piece[] pieces; private Piece pyr1, pyr2, pyr3, pyr4; private Piece l1_1, l1_2, l1_3, l1_4; private Piece l2_1, l2_2, l2_3, l2_4; private Piece s1_1, s1_2; private Piece s2_1, s2_2; private Piece square; private Piece stick1, stick2; protected void setUp() throws Exception { super.setUp(); pieces = Piece.getPieces(); pyr1 = pieces[Piece.PYRAMID]; pyr2 = pyr1.fastRotation(); pyr3 = pyr2.fastRotation(); pyr4 = pyr3.fastRotation(); l1_1 = pieces[Piece.L1]; l1_2 = l1_1.fastRotation(); l1_3 = l1_2.fastRotation(); l1_4 = l1_3.fastRotation(); l2_1 = pieces[Piece.L2]; l2_2 = l2_1.fastRotation(); l2_3 = l2_2.fastRotation(); l2_4 = l2_3.fastRotation(); s1_1 = pieces[Piece.S1]; s1_2 = s1_1.fastRotation(); s2_1 = pieces[Piece.S2]; s2_2 = s2_1.fastRotation(); square = pieces[Piece.SQUARE]; stick1 = pieces[Piece.STICK]; stick2 = stick1.fastRotation(); } // ----------- Pyramid Tests ------------- // public void testPyramidWidth() { assertEquals(3, pyr1.getWidth()); assertEquals(2, pyr2.getWidth()); assertEquals(3, pyr3.getWidth()); assertEquals(2, pyr4.getWidth()); } public void testPyramidHeight() { assertEquals(2, pyr1.getHeight()); assertEquals(3, pyr2.getHeight()); assertEquals(2, pyr3.getHeight()); assertEquals(3, pyr4.getHeight()); } public void testPyramidSkirt() { assertTrue(Arrays.equals(new int[] {0, 0, 0}, pyr1.getSkirt())); assertTrue(Arrays.equals(new int[] {1, 0}, pyr2.getSkirt())); assertTrue(Arrays.equals(new int[] {1, 0, 1}, pyr3.getSkirt())); assertTrue(Arrays.equals(new int[] {0, 1}, pyr4.getSkirt())); } public void testPyramidNextPointer() { assertTrue(pyr1 == pyr4.fastRotation()); } // ----------- L1 Tests ------------- // public void testL1Width() { assertEquals(2, l1_1.getWidth()); assertEquals(3, l1_2.getWidth()); assertEquals(2, l1_3.getWidth()); assertEquals(3, l1_4.getWidth()); } public void testL1Height() { assertEquals(3, l1_1.getHeight()); assertEquals(2, l1_2.getHeight()); assertEquals(3, l1_3.getHeight()); assertEquals(2, l1_4.getHeight()); } public void testL1Skirt() { assertTrue(Arrays.equals(new int[] {0, 0}, l1_1.getSkirt())); assertTrue(Arrays.equals(new int[] {0, 0, 0}, l1_2.getSkirt())); assertTrue(Arrays.equals(new int[] {2, 0}, l1_3.getSkirt())); assertTrue(Arrays.equals(new int[] {0, 1, 1}, l1_4.getSkirt())); } public void testL1NextPointer() { assertTrue(l1_1 == l1_4.fastRotation()); } // ----------- L2 Tests ------------- // public void testL2Width() { assertEquals(2, l2_1.getWidth()); assertEquals(3, l2_2.getWidth()); assertEquals(2, l2_3.getWidth()); assertEquals(3, l2_4.getWidth()); } public void testL2Height() { assertEquals(3, l2_1.getHeight()); assertEquals(2, l2_2.getHeight()); assertEquals(3, l2_3.getHeight()); assertEquals(2, l2_4.getHeight()); } public void testL2Skirt() { assertTrue(Arrays.equals(new int[] {0, 0}, l2_1.getSkirt())); assertTrue(Arrays.equals(new int[] {1, 1, 0}, l2_2.getSkirt())); assertTrue(Arrays.equals(new int[] {0, 2}, l2_3.getSkirt())); assertTrue(Arrays.equals(new int[] {0, 0, 0}, l2_4.getSkirt())); } public void testL2NextPointer() { assertTrue(l2_1 == l2_4.fastRotation()); } // ----------- S1 Tests ------------- // public void testS1Width() { assertEquals(3, s1_1.getWidth()); assertEquals(2, s1_2.getWidth()); } public void testS1Height() { assertEquals(2, s1_1.getHeight()); assertEquals(3, s1_2.getHeight()); } public void testS1Skirt() { assertTrue(Arrays.equals(new int[] {0, 0, 1}, s1_1.getSkirt())); assertTrue(Arrays.equals(new int[] {1, 0}, s1_2.getSkirt())); } public void testS1NextPointer() { assertTrue(s1_1 == s1_2.fastRotation()); } // ----------- S2 Tests ------------- // public void testS2Width() { assertEquals(3, s2_1.getWidth()); assertEquals(2, s2_2.getWidth()); } public void testS2Height() { assertEquals(2, s2_1.getHeight()); assertEquals(3, s2_2.getHeight()); } public void testS2Skirt() { assertTrue(Arrays.equals(new int[] {1, 0, 0}, s2_1.getSkirt())); assertTrue(Arrays.equals(new int[] {0, 1}, s2_2.getSkirt())); } public void testS2NextPointer() { assertTrue(s2_1 == s2_2.fastRotation()); } // ----------- Stick Tests ------------- // public void testStickWidth() { assertEquals(1, stick1.getWidth()); assertEquals(4, stick2.getWidth()); } public void testStickHeight() { assertEquals(4, stick1.getHeight()); assertEquals(1, stick2.getHeight()); } public void testStickSkirt() { assertTrue(Arrays.equals(new int[] {0}, stick1.getSkirt())); assertTrue(Arrays.equals(new int[] {0, 0, 0, 0}, stick2.getSkirt())); } public void testStickNextPointer() { assertTrue(stick1 == stick2.fastRotation()); } // ----------- Square Tests ------------- // public void testSquareWidth() { assertEquals(2, square.getWidth()); } public void testSquareHeight() { assertEquals(2, square.getHeight()); } public void testSquareSkirt() { assertTrue(Arrays.equals(new int[] {0, 0}, square.getSkirt())); } public void testSquareNextPointer() { assertTrue(square == square.fastRotation()); } public void testUniquePieces() { // // similar piece test assertFalse(s1_1.equals(s2_1)); assertFalse(l1_1.equals(l1_2)); } }