def test_part_one_initial(self): """Test initial Spinlock step step by step from example""" # 1. Create Spinlock object from text mylock = spinlock.Spinlock(text=EXAMPLE_TEXT) # 2. Split example buffer text into a list part_one_buffers = aoc_17.from_text(PART_ONE_STR) # 3. Loop for the configurations in the example for configuration in part_one_buffers: # 4. Check this configuration self.assertEqual(str(mylock), configuration) # 5. Advance the spinlock one step mylock.advance() # 6. Spin until the end mylock.spin(spinlock.P1_LAST_NUMBER, verbose=False) # 7. Check the number in the next position self.assertEqual(mylock.buffer[0], 0) self.assertEqual(mylock.buffer[mylock.position], spinlock.P1_LAST_NUMBER) self.assertEqual(mylock.buffer[mylock.position + 1], PART_ONE_RESULT)
def test_text_init(self): "Test the Pocket object creation from text" # 1. Create Pocket object from text myobj = pocket.Pocket(text=aoc_17.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 3) self.assertEqual(myobj.cycle, 0) self.assertEqual(len(myobj.active), 5) # 3. Check methods self.assertEqual(myobj.count(), EXAMPLE_COUNT[0]) self.assertEqual(len([_ for _ in myobj.nearby((0, 0, 0))]), 26) self.assertEqual(myobj.count_nearby((0, 0, 0)), 1) self.assertEqual(myobj.count_nearby((0, 0, 1)), 1) self.assertEqual(myobj.count_nearby((1, 1, 0)), 5) self.assertEqual(myobj.count_nearby((1, 1, 1)), 5) myobj.one_cycle() self.assertEqual(myobj.count(), EXAMPLE_COUNT[1]) myobj.one_cycle() self.assertEqual(myobj.count(), EXAMPLE_COUNT[2]) myobj.one_cycle() self.assertEqual(myobj.count(), EXAMPLE_COUNT[3])
def test_text_init(self): "Test the Probe object creation from text" # 1. Create Probe object from text myobj = probe.Probe(text=aoc_17.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 1) self.assertEqual(myobj.start, (0, 0)) self.assertEqual(myobj.target, [20, 30, -10, -5]) self.assertEqual(myobj.position, (0, 0)) self.assertEqual(myobj.velocity, None) self.assertEqual(myobj.height, 0) # 3. Check methods myobj.reload((7, 2)) self.assertEqual(myobj.position, (0, 0)) self.assertEqual(myobj.velocity, (7, 2)) self.assertEqual(myobj.is_in_target(), False) self.assertEqual(myobj.is_possible(), True) myobj.step() self.assertEqual(myobj.position, (7, 2)) self.assertEqual(myobj.velocity, (6, 1)) self.assertEqual(myobj.is_in_target(), False) self.assertEqual(myobj.is_possible(), True) myobj.step() self.assertEqual(myobj.position, (13, 3)) self.assertEqual(myobj.velocity, (5, 0)) self.assertEqual(myobj.is_in_target(), False) self.assertEqual(myobj.is_possible(), True) myobj.step() myobj.step() myobj.step() myobj.step() self.assertEqual(myobj.position, (27, -3)) self.assertEqual(myobj.velocity, (1, -4)) self.assertEqual(myobj.is_in_target(), False) self.assertEqual(myobj.is_possible(), True) myobj.step() self.assertEqual(myobj.position, (28, -7)) self.assertEqual(myobj.velocity, (0, -5)) self.assertEqual(myobj.is_in_target(), True) self.assertEqual(myobj.is_possible(), True) myobj.step() self.assertEqual(myobj.position, (28, -12)) self.assertEqual(myobj.velocity, (0, -6)) self.assertEqual(myobj.is_in_target(), False) self.assertEqual(myobj.is_possible(), False) self.assertEqual(myobj.height, 3) self.assertEqual(myobj.fire((7, 2)), 3) self.assertEqual(myobj.fire((6, 3)), 6) self.assertEqual(myobj.fire((9, 0)), 0) self.assertEqual(myobj.fire((17, -4)), -1) self.assertEqual(myobj.fire((6, 9)), 45) self.assertEqual(myobj.highest(), 45) self.assertEqual(myobj.count(), 112)
def test_part_two(self): "Test part two example of Doors object" # 1. Create Doors object from text myobj = doors.Doors(part2=True, text=aoc_17.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 Doors object" # 1. Create Doors object from text myobj = doors.Doors(text=aoc_17.from_text(PART_ONE_TEXT)) # 2. Check the part one result self.assertEqual(myobj.part_one(verbose=False), PART_ONE_RESULT)
def test_part_two(self): "Test part two example of Eggnog object" # 1. Create Eggnog object from text myobj = eggnog.Eggnog(part2=True, text=aoc_17.from_text(PART_TWO_TEXT)) # 2. Check the part two result self.assertEqual(myobj.part_two(verbose=False, amount=EXAMPLE_EGGNOG), PART_TWO_RESULT)
def test_part_one(self): "Test part one example of Eggnog object" # 1. Create Eggnog object from text myobj = eggnog.Eggnog(text=aoc_17.from_text(PART_ONE_TEXT)) # 2. Check the part one result self.assertEqual(myobj.part_one(verbose=False, amount=EXAMPLE_EGGNOG), PART_ONE_RESULT)
def test_part_two(self): "Test part two example of Scans object" # 1. Create Scans object from text myobj = scans.Scans(part2=True, text=aoc_17.from_text(PART_TWO_TEXT)) # 2. Check the part two result self.assertEqual(myobj.part_two(verbose=False), PART_TWO_RESULT) self.assertEqual(str(myobj), EXAMPLE_TEXT_WATER)
def test_part_one(self): "Test part one example of Scans object" # 1. Create Scans object from text myobj = scans.Scans(text=aoc_17.from_text(PART_ONE_TEXT)) # 2. Check the part one result self.assertEqual(myobj.part_one(verbose=False, limit=99), PART_ONE_RESULT) self.assertEqual(str(myobj), EXAMPLE_TEXT_WATER)
def test_text_init(self): "Test the Eggnog object creation from text" # 1. Create Eggnog object from text myobj = eggnog.Eggnog(text=aoc_17.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 5) self.assertEqual(len(myobj.containers), 5) # 3. Check methods self.assertEqual(myobj.num_combos(amount=EXAMPLE_EGGNOG), 4)
def test_text_init(self): "Test the Doors object creation from text" # 1. Create Doors object from text myobj = doors.Doors(text=aoc_17.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 1) self.assertEqual(myobj.seed, "ihgpwlah") # 3. Check methods self.assertEqual(myobj.shortest(), "DDRRRD") self.assertEqual(myobj.longest(), 370)
def test_text_init(self): "Test the Scans object creation from text" # 1. Create Scans object from text myobj = scans.Scans(text=aoc_17.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 8) self.assertEqual(len(myobj.clay), 34) self.assertEqual(1506 in myobj.clay, True) self.assertEqual(1507 in myobj.clay, False) self.assertEqual(4499 in myobj.clay, False) self.assertEqual(4500 in myobj.clay, False) self.assertEqual(7497 in myobj.clay, True) self.assertEqual(7501 in myobj.clay, True) self.assertEqual(7502 in myobj.clay, False) self.assertEqual(len(myobj.water), 1) self.assertEqual(500 in myobj.water, True) self.assertEqual(len(myobj.filled), 0) dimensions = myobj.clay_range() self.assertEqual(dimensions, [495, 506, 1, 13]) self.assertEqual(str(myobj), EXAMPLE_TEXT_STR) # 3. Drip, drip, drip, little April shower myobj.drip(14000) self.assertEqual(len(myobj.water), 7) self.assertEqual(len(myobj.filled), 0) myobj.drip(14000) self.assertEqual(len(myobj.water), 6) self.assertEqual(len(myobj.filled), 5) myobj.drip(14000) self.assertEqual(len(myobj.water), 5) self.assertEqual(len(myobj.filled), 10) myobj.drip(14000) self.assertEqual(len(myobj.water), 4) self.assertEqual(len(myobj.filled), 12) myobj.drip(14000) self.assertEqual(len(myobj.water), 3) self.assertEqual(len(myobj.filled), 14) myobj.drip(14000) self.assertEqual(len(myobj.water), 6) self.assertEqual(len(myobj.filled), 14) myobj.drip(14000) self.assertEqual(len(myobj.water), 16) self.assertEqual(len(myobj.filled), 14) myobj.drip(14000) self.assertEqual(len(myobj.water), 15) self.assertEqual(len(myobj.filled), 19) myobj.drip(14000) self.assertEqual(len(myobj.water), 14) self.assertEqual(len(myobj.filled), 24) myobj.drip(14000) self.assertEqual(len(myobj.water), 13) self.assertEqual(len(myobj.filled), 29) myobj.drip(14000) self.assertEqual(len(myobj.water), 21) self.assertEqual(len(myobj.filled), 29) myobj.drip(14000) self.assertEqual(len(myobj.water), 29) self.assertEqual(len(myobj.filled), 29) myobj.drip(14000) self.assertEqual(len(myobj.water), 29) self.assertEqual(len(myobj.filled), 29) self.assertEqual(str(myobj), EXAMPLE_TEXT_WATER)