def test_text_init(self): "Test the Conway object creation from text" # 1. Create Conway object from text myobj = conway.Conway(text=aoc_18.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 6) self.assertEqual(len(myobj.grid), 15) self.assertEqual(myobj.size, 6) # 3. Check methods self.assertEqual(myobj.number_on(), 15) self.assertEqual(str(myobj), EXAMPLE_TEXT.strip()) self.assertEqual(myobj.neighbors((0, 0)), 1) self.assertEqual(myobj.neighbors((1, 1)), 2) self.assertEqual(myobj.neighbors((1, 4)), 6) myobj.grid = myobj.next_gen() self.assertEqual(str(myobj), STEP_ONE.strip()) myobj.grid = myobj.next_gen() self.assertEqual(str(myobj), STEP_TWO.strip()) myobj.grid = myobj.next_gen() myobj.grid = myobj.next_gen() self.assertEqual(myobj.number_on(), 4)
def test_part_two(self): "Test part two example of Homework object" # 1. Create Homework object from text myobj = homework.Homework(part2=True, text=aoc_18.from_text(PART_TWO_TEXT)) # 2. Check the part two result self.assertEqual(myobj.part_two(verbose=False), PART_TWO_RESULT)
def test_part_one(self): "Test part one example of Homework object" # 1. Create Homework object from text myobj = homework.Homework(text=aoc_18.from_text(PART_ONE_TEXT)) # 2. Check the part one result self.assertEqual(myobj.part_one(verbose=False), PART_ONE_RESULT)
def test_part_one(self): "Test part one example of Recover object" # 1. Create Spinlock object from text myobj = recover.Recover(text=aoc_18.from_text(PART_ONE_TEXT)) # 2. Check the part one result self.assertEqual(myobj.part_one(verbose=False), PART_ONE_RESULT)
def test_text_init(self): "Test the Homework object creation from text" # 1. Create Homework object from text myobj = homework.Homework(text=aoc_18.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 4)
def test_part_two(self): "Test part two example of Recover object" # 1. Create Spinlock object from text myobj = recover.Recover(part2=True, text=aoc_18.from_text(PART_TWO_TEXT)) # 2. Check the part two self.assertEqual(myobj.part_two(verbose=False), PART_TWO_RESULT) self.assertEqual(myobj.registers[0]['c'], 1) self.assertEqual(myobj.registers[1]['c'], 0)
def test_text_init(self): "Test the Room object creation from text" # 1. Create Room object from text myobj = room.Room(text=aoc_18.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 1) self.assertNotEqual(myobj.row, None) # 3. Check methods self.assertEqual(myobj.safe(10), 38)
def test_text_init(self): "Test the Acres object creation from text" # 1. Create Acres object from text myobj = acres.Acres(text=aoc_18.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 10) self.assertEqual(len(myobj.grid), 100) self.assertEqual(myobj.max_row, 9) self.assertEqual(myobj.minutes, 10) self.assertEqual(str(myobj), EXAMPLE_TEXT.strip()) # 3. Test adjacency adj = myobj.adjacent(0) self.assertEqual(adj[acres.OPEN], 2) self.assertEqual(adj[acres.WOOD], 0) self.assertEqual(adj[acres.YARD], 1) adj = myobj.adjacent(1001) self.assertEqual(adj[acres.OPEN], 6) self.assertEqual(adj[acres.WOOD], 1) self.assertEqual(adj[acres.YARD], 1) adj = myobj.adjacent(2002) self.assertEqual(adj[acres.OPEN], 5) self.assertEqual(adj[acres.WOOD], 2) self.assertEqual(adj[acres.YARD], 1) # 4. Test the only universal constant myobj.change() self.assertEqual(len(myobj.grid), 100) self.assertEqual(str(myobj), AFTER_ONE.strip()) myobj.change() self.assertEqual(len(myobj.grid), 100) self.assertEqual(str(myobj), AFTER_TWO.strip()) myobj.change() myobj.change() myobj.change() myobj.change() myobj.change() myobj.change() myobj.change() myobj.change() self.assertEqual(len(myobj.grid), 100) self.assertEqual(str(myobj), AFTER_TEN.strip()) # 5. Check the counts counts = myobj.counts() self.assertEqual(counts[acres.WOOD], 37) self.assertEqual(counts[acres.YARD], 31) self.assertEqual(counts[acres.RVAL], 1147)
def test_text_init_one(self): "Test the Homework object creation from text" # 1. Create Homework object from text myobj = homework.Homework(text=aoc_18.from_text(EXAMPLE_ONE)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 10) self.assertEqual(len(myobj.pairs), 10) self.assertEqual(myobj.sumation, []) # 3. Check addition myobj.sum_them_up() self.assertEqual( str(myobj.sumation), "[[[[8,7],[7,7]],[[8,6],[7,7]]],[[[0,7],[6,6]],[8,7]]]") self.assertEqual(myobj.sumation.magnitude(), 3488)
def test_text_init(self): "Test the Recover object creation from text" # 1. Create Recover object from text myobj = recover.Recover(text=aoc_18.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 10) self.assertEqual(len(myobj.instructions), 10) self.assertEqual(myobj.instructions[0], ('set', 'a', 1)) self.assertEqual(myobj.instructions[9], ('jgz', 'a', -2)) self.assertEqual(myobj.position, [0, 0]) self.assertEqual(myobj.proc, 0) self.assertEqual(myobj.sound, None) self.assertEqual(myobj.recovered, None) self.assertEqual(len(myobj.registers[0]), 26) self.assertEqual(myobj.registers[0]['a'], 0) self.assertEqual(myobj.registers[0]['p'], 0) self.assertEqual(myobj.registers[0]['z'], 0) # 3. Do a few steps # 3a. The first four instructions set a to 1, add 2 to it, square it, and # then set it to itself modulo 5, resulting in a value of 4. self.assertEqual(myobj.step(), True) # set a 1 self.assertEqual(myobj.position[0], 1) self.assertEqual(myobj.registers[0]['a'], 1) self.assertEqual(myobj.sound, None) self.assertEqual(myobj.recovered, None) self.assertEqual(myobj.step(), True) # add a 2 self.assertEqual(myobj.position[0], 2) self.assertEqual(myobj.registers[0]['a'], 3) self.assertEqual(myobj.sound, None) self.assertEqual(myobj.recovered, None) self.assertEqual(myobj.step(), True) # mul a a self.assertEqual(myobj.position[0], 3) self.assertEqual(myobj.registers[0]['a'], 9) self.assertEqual(myobj.sound, None) self.assertEqual(myobj.recovered, None) self.assertEqual(myobj.step(), True) # mod a 5 self.assertEqual(myobj.position[0], 4) self.assertEqual(myobj.registers[0]['a'], 4) self.assertEqual(myobj.sound, None) self.assertEqual(myobj.recovered, None) # 3b. Then, a sound with frequency 4 (the value of a) is played. self.assertEqual(myobj.step(), True) # snd a self.assertEqual(myobj.position[0], 5) self.assertEqual(myobj.registers[0]['a'], 4) self.assertEqual(myobj.sound, 4) self.assertEqual(myobj.recovered, None) # 3c. After that, a is set to 0, causing the subsequent rcv and jgz # instructions to both be skipped (rcv because a is 0, and jgz because a # is not greater than 0). self.assertEqual(myobj.step(), True) # set a 0 self.assertEqual(myobj.position[0], 6) self.assertEqual(myobj.registers[0]['a'], 0) self.assertEqual(myobj.sound, 4) self.assertEqual(myobj.recovered, None) self.assertEqual(myobj.step(), True) # rcv a self.assertEqual(myobj.position[0], 7) self.assertEqual(myobj.registers[0]['a'], 0) self.assertEqual(myobj.sound, 4) self.assertEqual(myobj.recovered, None) self.assertEqual(myobj.step(), True) # jgz a -1 self.assertEqual(myobj.position[0], 8) self.assertEqual(myobj.registers[0]['a'], 0) self.assertEqual(myobj.sound, 4) self.assertEqual(myobj.recovered, None) # 3d. Finally, a is set to 1, causing the next jgz instruction to activate, # jumping back two instructions to another jump, which jumps again to # the rcv, which ultimately triggers the recover operation. self.assertEqual(myobj.step(), True) # set a 1 self.assertEqual(myobj.position[0], 9) self.assertEqual(myobj.registers[0]['a'], 1) self.assertEqual(myobj.sound, 4) self.assertEqual(myobj.recovered, None) self.assertEqual(myobj.step(), True) # jgz a -2 self.assertEqual(myobj.position[0], 7) self.assertEqual(myobj.registers[0]['a'], 1) self.assertEqual(myobj.sound, 4) self.assertEqual(myobj.recovered, None) self.assertEqual(myobj.step(), True) # jgz a -1 self.assertEqual(myobj.position[0], 6) self.assertEqual(myobj.registers[0]['a'], 1) self.assertEqual(myobj.sound, 4) self.assertEqual(myobj.recovered, None) self.assertEqual(myobj.step(), True) # rcv a self.assertEqual(myobj.position[0], 7) self.assertEqual(myobj.registers[0]['a'], 1) self.assertEqual(myobj.sound, 4) self.assertEqual(myobj.recovered, 4)