78 lines
1.9 KiB
Python
78 lines
1.9 KiB
Python
from advent.common import utils
|
|
|
|
from .solution import Move, day_num, part1, part2, Crane
|
|
|
|
|
|
def test_part1():
|
|
data = utils.read_data(day_num, 'test01.txt')
|
|
expected = "CMZ"
|
|
result = part1(data)
|
|
assert result == expected
|
|
|
|
|
|
def test_part2():
|
|
data = utils.read_data(day_num, 'test01.txt')
|
|
expected = "MCD"
|
|
result = part2(data)
|
|
assert result == expected
|
|
|
|
|
|
def test_parse_line():
|
|
input = " [D] "
|
|
expected = [None, 'D', None]
|
|
result = Crane.parse_crate_row(input)
|
|
assert result == expected
|
|
|
|
|
|
def test_parse_line2():
|
|
input = "[Z] [M] [P]"
|
|
expected = ["Z", 'M', "P"]
|
|
result = Crane.parse_crate_row(input)
|
|
assert result == expected
|
|
|
|
|
|
def test_drawing():
|
|
data = utils.read_data(day_num, 'test01.txt')
|
|
expected = ["ZN", "MCD", "P"]
|
|
result = Crane.parse_drawing(data)
|
|
assert result == expected
|
|
|
|
|
|
def test_parse_move():
|
|
input = "move 1 from 2 to 1"
|
|
expected = Move(1, 1, 0)
|
|
result = Move.parse(input)
|
|
assert result == expected
|
|
|
|
|
|
def test_parse_all():
|
|
data = utils.read_data(day_num, 'test01.txt')
|
|
expected = Crane(
|
|
["ZN", "MCD", "P"],
|
|
[Move(1, 1, 0), Move(3, 0, 2), Move(2, 1, 0), Move(1, 0, 1)], True)
|
|
result = Crane.parse(data, True)
|
|
assert result == expected
|
|
|
|
|
|
def test_step():
|
|
data = utils.read_data(day_num, 'test01.txt')
|
|
state = Crane.parse(data, True)
|
|
expected = ["ZND", "MC", "P"]
|
|
result = state.moves[0].do_move(state.stacks, False)
|
|
assert result == expected
|
|
|
|
|
|
def test_all_moves():
|
|
data = utils.read_data(day_num, 'test01.txt')
|
|
state = Crane.parse(data, False)
|
|
expected = ["C", "M", "PDNZ"]
|
|
result = state.perform_all_moves()
|
|
assert result == expected
|
|
|
|
|
|
def test_all_moves9001():
|
|
data = utils.read_data(day_num, 'test01.txt')
|
|
state = Crane.parse(data, True)
|
|
expected = ["M", "C", "PZND"]
|
|
result = state.perform_all_moves()
|
|
assert result == expected
|