def test_rect(self): screen = Screen(3, 7) screen.rect(3, 2) self.assertEqual( screen.data, [[True, True, True, False, False, False, False], [True, True, True, False, False, False, False], [False] * 7])
def test_example_input(self): scr = Screen(7, 3) scr.decode('test_input.txt') pixels = np.array([[0, 1, 0, 0, 1, 0, 1], [1, 0, 1, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0]]) assert (scr.pixels == pixels).all() assert scr.count_pixels() == 6
def test_example_input(self): screen = Screen(3, 7) screen.rect(3, 2) screen.rotate_column(1, 1) screen.rotate_row(0, 4) screen.rotate_column(1, 1) self.assertEqual(screen.data, [[False, True, False, False, True, False, True], [True, False, True, False, False, False, False], [False, True, False, False, False, False, False]])
class TestScreenMethods: scr = Screen(7, 3) def test_init(self): iscr = Screen(7, 3) result = np.zeros((3, 7)) assert (iscr.pixels == result).all() def test_rect(self): self.scr.rect(3, 2) result = np.array([[1, 1, 1, 0, 0, 0, 0], [1, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]) assert (self.scr.pixels == result).all() def test_rotate_column(self): self.scr.rotate_column(1, 1) result = np.array([[1, 0, 1, 0, 0, 0, 0], [1, 1, 1, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0]]) assert (self.scr.pixels == result).all() def test_rotate_row(self): self.scr.rotate_row(0, 4) result = np.array([[0, 0, 0, 0, 1, 0, 1], [1, 1, 1, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0]]) assert (self.scr.pixels == result).all() def test_rotate_column_again(self): self.scr.rotate_column(1, 1) result = np.array([[0, 1, 0, 0, 1, 0, 1], [1, 0, 1, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0]]) assert (self.scr.pixels == result).all() def test_count_pixels(self): assert self.scr.count_pixels() == 6
def test_rotate_column(self): screen = Screen(3, 7) screen.rect(3, 2) screen.rotate_column(1, 2) self.assertEqual(screen.data, [[True, True, True, False, False, False, False], [True, False, True, False, False, False, False], [False, True, False, False, False, False, False]])
class TestScreenInterpreter: scr = Screen(7, 3) def test_interpret_rect(self): self.scr.interpret('rect 3x2') result = np.array([[1, 1, 1, 0, 0, 0, 0], [1, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]) assert (self.scr.pixels == result).all() def test_interpret_rotate_column(self): self.scr.interpret('rotate column x=1 by 1') result = np.array([[1, 0, 1, 0, 0, 0, 0], [1, 1, 1, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0]]) assert (self.scr.pixels == result).all() def test_interpret_rotate_row(self): self.scr.interpret('rotate row y=0 by 4') result = np.array([[0, 0, 0, 0, 1, 0, 1], [1, 1, 1, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0]]) assert (self.scr.pixels == result).all()
def test_actual_input(self): scr = Screen(50, 6) scr.decode('input.txt') assert scr.count_pixels() == 123
def test_init(self): iscr = Screen(7, 3) result = np.zeros((3, 7)) assert (iscr.pixels == result).all()
def test_counts_lit_pixels(self): for data, expected in self.cases: screen = Screen(3, 2) screen.data = data self.assertEqual(screen.count_lit_pixels(), expected)
def test_inits_screen(self): screen = Screen(3, 5) self.assertEqual(len(screen.data), 3) self.assertEqual(len(screen.data[0]), 5)
def test_parses_commands(self): screen = Screen(3, 5) for command, expected in self.cases: parsed = screen.parse_command(command) self.assertEqual(parsed[0].__name__, expected[0]) self.assertEqual(parsed[1], expected[1])