def test_containing(self): g = Grid.containing([(1, 1)]) self.assertEqual(1, g.size()) self.assertEqual(1, len(g.points)) self.assertIsInstance(g.points[0], Point) g = Grid.containing([(0, 0), (1, 1)]) self.assertEqual(4, g.size()) g = sample_grid()
def sample_grid(): text = """1, 1 1, 6 8, 3 3, 4 5, 5 8, 9""" points = parse_coords(io.StringIO(text)) grid = Grid.containing(points, (0, 0), (9, 9)) return grid
def test_rendering2(self): g = Grid.containing([(1, 1), (3, 4)], (0, 0), (4, 4)) self.assertEqual(5, g.width, "width") self.assertEqual(5, g.height, "height") expected = """aaaaa aAaaa aaadd aaddd dddDd """ self.assertEqual(expected, g.rendering(labels="AD"))
def test_rendering(self): g = Grid.containing([(0, 0), (1, 0), (1, 4)]) self.assertEqual(2, g.width, "width") self.assertEqual(5, g.height, "height") expected = """AB ab a. cc cC """ self.assertEqual(expected, g.rendering())
def test_find_turf_trivial(self): cases = [ ([(0, 0)], (0, 0), [(0, 0)]), ([(0, 0), (1, 1)], (0, 0), [(0, 0)]), ([(0, 0), (1, 1)], (1, 1), [(1, 1)]), ([(0, 0), (1, 1)], (1, 1), [(1, 1)]), ] for points, query, expected in cases: with self.subTest(): g = Grid.containing(points) turf = g.find_turf(query) self.assertEqual(expected, list(turf))
def test_rendering3(self): g = Grid.containing([(1, 1), (3, 4), (1, 6)], (0, 0), (4, 6)) self.assertEqual(5, g.width, "width") self.assertEqual(7, g.height, "height") expected = """aaaaa aAaaa aaadd aaddd ..dDd bb.dd bBb.. """ self.assertEqual(expected, g.rendering(labels="ADB"))
def test_find_owner(self): test_cases = [ # (Grid.containing([(0, 0)]), (0, 0), (0, 0)), # (Grid.containing([(0, 0), (0, 1)]), (0, 0), (0, 0)), # (Grid.containing([(0, 0), (0, 1)]), (0, 1), (0, 1)), # (Grid.containing([(0, 0), (1, 1)]), (0, 0), (0, 0)), # (Grid.containing([(0, 0), (1, 1)]), (1, 1), (1, 1)), # (Grid.containing([(0, 0), (1, 1)]), (0, 1), None), # (Grid.containing([(0, 0), (1, 1)]), (1, 0), None), # (Grid.containing([(0, 0), (1, 0), (1, 3)]), (1, 0), (1, 0)), # (Grid.containing([(0, 0), (1, 0), (1, 3)]), (1, 1), (1, 0)), (Grid.containing([(0, 0), (1, 0), (1, 3)]), (0, 3), (1, 3)), ] for grid, query, expected in test_cases: with self.subTest(): actual = grid.find_owner(query) self.assertEqual( expected, actual, "in grid\n\n{}\n\nexpected {}, not {}, as owner of {} in {}" .format(grid.rendering(), expected, actual, query, grid))
def test_rendering4(self): g = Grid.containing([ (1, 1), (1, 6), (8, 3), (3, 4), ], (0, 0), (9, 6)) self.assertEqual(10, g.width, "width") self.assertEqual(7, g.height, "height") expected = """ aaaaaacccc aAaaaacccc aaadd.cccc aaddd.ccCc ..dDdd.ccc bb.ddd.ccc bBb....ccc """ actual = g.rendering() self.assertEqual(expected.strip(), actual.strip())
def test_border(self): grid = Grid.containing([(3, 3), (-1, -1), (-1, 3), (3, 1)]) expected = set([ (3, 2), (1, 3), (-1, 0), (3, 0), (-1, 2), (2, -1), (2, 3), (0, 3), (1, -1), (-1, 1), (3, 3), (-1, 3), (3, 1), (3, -1), (-1, -1), (0, -1), ]) b = grid.border() self.assertSetEqual(expected, set(b))
def test_region_size(self): g = Grid.containing([(0, 0)]) self.assertEqual(1, g.region_size(1))
def test_distance_sum(self): g = Grid.containing([(0, 0)]) self.assertEqual(0, g.distance_sum((0, 0))) g = sample_grid() self.assertEqual(30, g.distance_sum((4, 3)))