Advent-of-Code/2021/18/test_code.py

42 lines
2.1 KiB
Python
Raw Normal View History

2021-12-18 21:15:08 +01:00
# SPDX-License-Identifier: MIT
# Copyright (c) 2021 Akumatic
from code import *
def test_explode(a, b):
tmp = parse_node(a)
tmp.explode()
return str(tmp) == str(parse_node(b))
def test():
vals = read_file("test_input_2.txt")
assert str(parse_node([1,2])) == "[1,2]"
assert str(add(parse_node([1,2]), parse_node([[3,4],5]))) == "[[1,2],[[3,4],5]]"
assert test_explode([[[[[9,8],1],2],3],4], [[[[0,9],2],3],4])
assert test_explode([7,[6,[5,[4,[3,2]]]]], [7,[6,[5,[7,0]]]])
assert test_explode([[6,[5,[4,[3,2]]]],1], [[6,[5,[7,0]]],3])
assert test_explode([[3,[2,[1,[7,3]]]],[6,[5,[4,[3,2]]]]], [[3,[2,[8,0]]],[9,[5,[4,[3,2]]]]])
assert test_explode([[3,[2,[8,0]]],[9,[5,[4,[3,2]]]]], [[3,[2,[8,0]]],[9,[5,[7,0]]]])
print("Passed explosion test")
assert str(add(parse_node([[[[4,3],4],4],[7,[[8,4],9]]]), parse_node([1,1]))) == str(parse_node([[[[0,7],4],[[7,8],[6,0]]],[8,1]]))
print("Passed reduction test")
assert str(sum_nodes([[1,1], [2,2], [3,3], [4,4]])) == "[[[[1,1],[2,2]],[3,3]],[4,4]]"
assert str(sum_nodes([[1,1], [2,2], [3,3], [4,4], [5,5]])) == "[[[[3,0],[5,3]],[4,4]],[5,5]]"
assert str(sum_nodes([[1,1], [2,2], [3,3], [4,4], [5,5], [6,6]])) == "[[[[5,0],[7,4]],[5,5]],[6,6]]"
assert str(sum_nodes(read_file("test_input_1.txt"))) == "[[[[8,7],[7,7]],[[8,6],[7,7]]],[[[0,7],[6,6]],[8,7]]]"
assert str(sum_nodes(vals)) == "[[[[6,6],[7,6]],[[7,7],[7,0]]],[[[7,7],[7,7]],[[7,8],[9,9]]]]"
print("Passed summing nodes test")
assert get_magnitude(parse_node([[1,2],[[3,4],5]])) == 143.
assert get_magnitude(parse_node([[[[0,7],4],[[7,8],[6,0]]],[8,1]])) == 1384.
assert get_magnitude(parse_node([[[[1,1],[2,2]],[3,3]],[4,4]])) == 445.
assert get_magnitude(parse_node([[[[3,0],[5,3]],[4,4]],[5,5]])) == 791.
assert get_magnitude(parse_node([[[[5,0],[7,4]],[5,5]],[6,6]])) == 1137.
assert get_magnitude(parse_node([[[[8,7],[7,7]],[[8,6],[7,7]]],[[[0,7],[6,6]],[8,7]]])) == 3488.
assert part1(vals) == 4140
print("Passed magnitude test")
assert part2(vals) == 3993
print("Passed Part 2")
if __name__ == "__main__":
test()