1+ import pytest
2+ from daily import *
3+
4+ @pytest .fixture
5+ def sample_data ():
6+ return """
7+ #####
8+ .####
9+ .####
10+ .####
11+ .#.#.
12+ .#...
13+ .....
14+
15+ #####
16+ ##.##
17+ .#.##
18+ ...##
19+ ...#.
20+ ...#.
21+ .....
22+
23+ .....
24+ #....
25+ #....
26+ #...#
27+ #.#.#
28+ #.###
29+ #####
30+
31+ .....
32+ .....
33+ #.#..
34+ ###..
35+ ###.#
36+ ###.#
37+ #####
38+
39+ .....
40+ .....
41+ .....
42+ #....
43+ #.#..
44+ #.#.#
45+ #####
46+ """
47+
48+ @pytest .fixture
49+ def parsed_data (sample_data ):
50+ return parse (sample_data )
51+
52+ def test_parse (sample_data ):
53+ locks , keys = parse (sample_data )
54+
55+ assert len (locks ) == 2
56+ assert len (keys ) == 3
57+
58+ def test_pin_heights (parsed_data ):
59+ locks , keys = parsed_data
60+
61+ assert pin_heights (locks [0 ]) == [0 ,5 ,3 ,4 ,3 ]
62+ assert pin_heights (locks [1 ]) == [1 ,2 ,0 ,5 ,3 ]
63+ assert pin_heights (keys [0 ]) == [5 ,0 ,2 ,1 ,3 ]
64+ assert pin_heights (keys [1 ]) == [4 ,3 ,4 ,0 ,2 ]
65+ assert pin_heights (keys [2 ]) == [3 ,0 ,2 ,0 ,1 ]
66+
67+ def test_overlap (parsed_data ):
68+ locks , keys = parsed_data
69+
70+ assert overlap (pin_heights (locks [0 ]), pin_heights (keys [0 ]))
71+ assert overlap (pin_heights (locks [0 ]), pin_heights (keys [1 ]))
72+ assert overlap (pin_heights (locks [1 ]), pin_heights (keys [0 ]))
73+
74+ assert not overlap (pin_heights (locks [0 ]), pin_heights (keys [2 ]))
75+ assert not overlap (pin_heights (locks [1 ]), pin_heights (keys [1 ]))
76+ assert not overlap (pin_heights (locks [1 ]), pin_heights (keys [2 ]))
77+
78+ def test_part1 (sample_data ):
79+ assert part1 (sample_data ) == 3
80+
81+ # def test_part2(sample_data):
82+ # assert part2(sample_data) == 81
0 commit comments