50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
from advent.common import input
|
|
from advent.common.position import Position
|
|
|
|
from .solution import BlizTuple, Valley, day_num, part1, part2
|
|
|
|
|
|
def test_part1():
|
|
lines = input.read_lines(day_num, 'example01.txt')
|
|
expected = 18
|
|
result = part1(lines)
|
|
assert result == expected
|
|
|
|
|
|
def test_part2():
|
|
lines = input.read_lines(day_num, 'example01.txt')
|
|
expected = 54
|
|
result = part2(lines)
|
|
assert result == expected
|
|
|
|
|
|
def test_parse_line():
|
|
input = "#>>.<^<#"
|
|
expected: BlizTuple = (
|
|
[Position(0, 0), Position(1, 0)],
|
|
[Position(4, 0)],
|
|
[Position(3, 0), Position(5, 0)],
|
|
[])
|
|
result = Valley.parse_line(([], [], [], []), input, 0)
|
|
assert result == expected
|
|
|
|
|
|
def test_walk():
|
|
lines = input.read_lines(day_num, 'example01.txt')
|
|
valley = Valley.parse(lines)
|
|
result = valley.find_way(1)
|
|
assert result == 18
|
|
|
|
|
|
def test_walk2():
|
|
lines = input.read_lines(day_num, 'example01.txt')
|
|
valley = Valley.parse(lines)
|
|
result = valley.find_way(2)
|
|
assert result == (18 + 23)
|
|
|
|
|
|
def test_back_and_forth():
|
|
lines = input.read_lines(day_num, 'example01.txt')
|
|
valley = Valley.parse(lines)
|
|
result = valley.find_way(3)
|
|
assert result == 54
|