-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_day10.py
73 lines (61 loc) · 3.14 KB
/
test_day10.py
1
2
3
4
5
6
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import unittest
from day10 import (
extractCorruptInput,
corruptLineScore,
day10a,
closingCharacters,
autoCompleteScore,
day10b,
)
# fmt:off
exampleInput = ['[({(<(())[]>[[{[]{<()<>>','[(()[<>])]({[<{<<[]>>(','{([(<{}[<>[]}>{[]{[(<()>','(((({<>}<{<{<>}{[]{[]{}','[[<[([]))<([[{}[[()]]]','[{[{({}]{}}([{[{{{}}([]','{<[[]]>}<{[{[{[]{()[[[]','[<(<(<(<{}))><([]([]()','<{([([[(<>()){}]>(<<{{','<{([{{}}[<[[[<>{}]]]>[]]']
exampleCorruptLines = ['{([(<{}[<>[]}>{[]{[(<()>','[[<[([]))<([[{}[[()]]]','[{[{({}]{}}([{[{{{}}([]','[<(<(<(<{}))><([]([]()','<{([([[(<>()){}]>(<<{{']
exampleIncompleteLines = ['[({(<(())[]>[[{[]{<()<>>','[(()[<>])]({[<{<<[]>>(','(((({<>}<{<{<>}{[]{[]{}','{<[[]]>}<{[{[{[]{()[[[]','<{([{{}}[<[[[<>{}]]]>[]]']
# fmt:on
class TestDay10(unittest.TestCase):
def test_extractCorruptInput(self):
incomplete, corrupt = extractCorruptInput(exampleInput)
self.assertEqual(incomplete, exampleIncompleteLines)
self.assertEqual(corrupt, exampleCorruptLines)
# @unittest.skip("unimplemented")
def test_corruptLineScore(self):
score, expectedChar, badChar = corruptLineScore("{([(<{}[<>[]}>{[]{[(<()>")
self.assertEqual(score, 1197)
self.assertEqual(expectedChar, "]")
self.assertEqual(badChar, "}")
score, expectedChar, badChar = corruptLineScore("[[<[([]))<([[{}[[()]]]")
self.assertEqual(score, 3)
self.assertEqual(expectedChar, "]")
self.assertEqual(badChar, ")")
score, expectedChar, badChar = corruptLineScore("[{[{({}]{}}([{[{{{}}([]")
self.assertEqual(score, 57)
self.assertEqual(expectedChar, ")")
self.assertEqual(badChar, "]")
score, expectedChar, badChar = corruptLineScore("[<(<(<(<{}))><([]([]()")
self.assertEqual(score, 3)
self.assertEqual(expectedChar, ">")
self.assertEqual(badChar, ")")
score, expectedChar, badChar = corruptLineScore("<{([([[(<>()){}]>(<<{{")
self.assertEqual(score, 25137)
self.assertEqual(expectedChar, "]")
self.assertEqual(badChar, ">")
def test_day10a(self):
self.assertEqual(day10a(exampleInput), 26397)
def test_closingCharacters(self):
self.assertEqual(closingCharacters("[({(<(())[]>[[{[]{<()<>>"), "}}]])})]")
self.assertEqual(closingCharacters("[(()[<>])]({[<{<<[]>>("), ")}>]})")
self.assertEqual(closingCharacters("(((({<>}<{<{<>}{[]{[]{}"), "}}>}>))))")
self.assertEqual(closingCharacters("{<[[]]>}<{[{[{[]{()[[[]"), "]]}}]}]}>")
self.assertEqual(closingCharacters("<{([{{}}[<[[[<>{}]]]>[]]"), "])}>")
def test_autoCompleteScore(self):
self.assertEqual(autoCompleteScore("])}>"), 294)
self.assertEqual(autoCompleteScore("}}]])})]"), 288957)
self.assertEqual(autoCompleteScore(")}>]})"), 5566)
self.assertEqual(autoCompleteScore("}}>}>))))"), 1480781)
self.assertEqual(autoCompleteScore("]]}}]}]}>"), 995444)
self.assertEqual(autoCompleteScore("])}>"), 294)
# @unittest.skip("unimplemented")
def test_day10b(self):
self.assertEqual(day10b(exampleInput), 288957)
if __name__ == "__main__":
unittest.main()