예제 #1
0
 def test_compareRotates_180degrees_flips(self):
     t1 = tiles.Tile(self.tile1)
     t2 = tiles.Tile(self.tile1)
     t1.flipHorizontal()
     t1.flipVertical()
     t2.rotate180()
     self.assertEqual(str(t1), str(t2))
예제 #2
0
 def test_compareRotates_270degrees_3steps(self):
     t1 = tiles.Tile(self.tile1)
     t2 = tiles.Tile(self.tile1)
     for i in range(3):
         t1.rotate90()
     t2.rotate270()
     self.assertEqual(str(t1), str(t2))
예제 #3
0
 def test_compareRotates_180degrees(self):
     t1 = tiles.Tile(self.tile1)
     t2 = tiles.Tile(self.tile1)
     for i in range(2):
         t1.rotate90()
         # print(t1)
     t2.rotate180()
     self.assertEqual(str(t1), str(t2))
예제 #4
0
 def test_flipHorizontal_edgeIDs_3x3(self):
     t = tiles.Tile(self.tile1)
     t.flipHorizontal()
     expected = [
         self.t1Sides[0], self.t1Sides[3], self.t1Sides[2], self.t1Sides[1]
     ]
     self.assertEqual(expected, t.sideIDs)
예제 #5
0
 def test_flipVertical_edgeIDs_4x4(self):
     t = tiles.Tile(self.tile2)
     t.flipVertical()
     expected = [
         self.t2Sides[2], self.t2Sides[1], self.t2Sides[0], self.t2Sides[3]
     ]
     self.assertEqual(expected, t.sideIDs)
예제 #6
0
 def test_rotate270_edgeIDs_4x4(self):
     t = tiles.Tile(self.tile2)
     t.rotate270()
     expected = [
         self.t2Sides[1], self.t2Sides[2], self.t2Sides[3], self.t2Sides[0]
     ]
     self.assertEqual(expected, t.sideIDs)
예제 #7
0
 def test_rotate180_edgeIDs_3x3(self):
     t = tiles.Tile(self.tile1)
     t.rotate180()
     expected = [
         self.t1Sides[2], self.t1Sides[3], self.t1Sides[0], self.t1Sides[1]
     ]
     self.assertEqual(expected, t.sideIDs)
예제 #8
0
 def test_rotate90_corners_3x3(self):
     t = tiles.Tile(self.tile1)
     orig = str(t).split('\n')
     t.rotate90()
     newT = str(t).split('\n')
     self.assertEqual(orig[0][0], newT[0][-1], "Top left -> top right")
     self.assertEqual(orig[0][1], newT[1][-1], "Top middle -> middle right")
     self.assertEqual(orig[0][-1], newT[-1][-1],
                      "Top right -> bottom right")
     self.assertEqual(orig[1][0], newT[0][1], "Middle left -> top middle")
     self.assertEqual(orig[1][1], newT[1][1], "Centre -> centre")
     self.assertEqual(orig[1][-1], newT[-1][1],
                      "Middle right -> bottom middle")
     self.assertEqual(orig[-1][0], newT[0][0], "Bottom left -> top left")
     self.assertEqual(orig[-1][1], newT[1][0],
                      "Bottom middle -> middle left")
     self.assertEqual(orig[-1][-1], newT[-1][0],
                      "Bottom right -> bottom left")
예제 #9
0
 def test_rotate90_corners_4x4(self):
     t = tiles.Tile(self.tile2)
     orig = str(t).split('\n')
     t.rotate90()
     newT = str(t).split('\n')
     self.assertEqual(orig[0][0], newT[0][-1], "Top left -> top right")
     self.assertEqual(orig[0][1], newT[1][-1],
                      "Top left-middle -> above-middle right")
     self.assertEqual(orig[0][-1], newT[-1][-1],
                      "Top right -> bottom right")
     self.assertEqual(orig[1][0], newT[0][-2],
                      "Above-middle left -> top right-middle")
     self.assertEqual(orig[1][-1], newT[-1][-2],
                      "Below-middle right -> bottom left-middle")
     self.assertEqual(orig[-1][0], newT[0][0], "Bottom left -> top left")
     self.assertEqual(orig[-1][1], newT[1][0],
                      "Bottom middle -> middle left")
     self.assertEqual(orig[-1][-1], newT[-1][0],
                      "Bottom right -> bottom left")
예제 #10
0
 def test_rotate270_full_rotation_1080degrees(self):
     t = tiles.Tile(self.tile1)
     orig = str(t)
     for i in range(4):
         t.rotate270()
     self.assertEqual(orig, str(t))
예제 #11
0
 def test_init_sideID_calculation_4x4(self):
     t = tiles.Tile(self.tile2)
     self.assertEqual(self.t2Sides, t.sideIDs)
예제 #12
0
 def test_patternMatch_knownGoodAssembly_pos2(self):
     buffer = ["0"]
     buffer.extend(self.knownPuzzleSolutionOriented)
     tile = tiles.Tile(buffer)
     self.assertTrue(tile._patternMatch((1, 16), self.serpentPattern))
예제 #13
0
 def test_findPatternMatches_knownGoodAssembly_match(self):
     buffer = ["0"]
     buffer.extend(self.knownPuzzleSolutionOriented)
     tile = tiles.Tile(buffer)
     matches = [m for m in tile._findPatternMatches(self.serpentPattern)]
     self.assertEqual(set([(2, 2), (1, 16)]), set(matches))
예제 #14
0
 def test_findPatternMatches_knownGoodAssembly_count(self):
     buffer = ["0"]
     buffer.extend(self.knownPuzzleSolutionOriented)
     tile = tiles.Tile(buffer)
     matches = [m for m in tile._findPatternMatches(self.serpentPattern)]
     self.assertTrue(2, len(matches))
예제 #15
0
 def test_count(self):
     buffer = ["0"]
     buffer.extend(self.knownPuzzleSolutionOriented)
     tile = tiles.Tile(buffer)
     self.assertEqual(303, tile.countSymbol('#'))
예제 #16
0
 def test_rotate180_full_rotation_360degrees(self):
     t = tiles.Tile(self.tile1)
     orig = str(t)
     for i in range(2):
         t.rotate180()
     self.assertEqual(orig, str(t))
예제 #17
0
 def test_flipVertical_reversible(self):
     t = tiles.Tile(self.tile1)
     orig = str(t)
     for i in range(2):
         t.flipVertical()
     self.assertEqual(orig, str(t))
예제 #18
0
 def test_init_sideID_calculation_3x3(self):
     t = tiles.Tile(self.tile1)
     self.assertEqual(self.t1Sides, t.sideIDs)