|
1 | 1 | from re import escape |
2 | 2 |
|
| 3 | +import numpy as np |
3 | 4 | from pytest import mark, raises |
4 | 5 |
|
5 | | -from advent_of_code_ocr import convert_6 |
| 6 | +from advent_of_code_ocr import convert_6, convert_array_6 |
6 | 7 | from advent_of_code_ocr.characters import ALPHABET_6 |
7 | 8 |
|
8 | 9 |
|
@@ -82,3 +83,49 @@ def test_strange_width_characters(): |
82 | 83 | ] |
83 | 84 | ) |
84 | 85 | assert convert_6(string) == "EFEYKFRFIJ" |
| 86 | + |
| 87 | + |
| 88 | +def test_array_nested_list(): |
| 89 | + array = [ |
| 90 | + ["X", "O", "O", "X", "X", "X", "O", "O", "X"], |
| 91 | + ["O", "X", "X", "O", "X", "O", "X", "X", "O"], |
| 92 | + ["O", "X", "X", "O", "X", "O", "X", "X", "X"], |
| 93 | + ["O", "O", "O", "O", "X", "O", "X", "X", "X"], |
| 94 | + ["O", "X", "X", "O", "X", "O", "X", "X", "O"], |
| 95 | + ["O", "X", "X", "O", "X", "X", "O", "O", "X"], |
| 96 | + ] |
| 97 | + assert convert_array_6(array, fill_pixel="O", empty_pixel="X") == "AC" |
| 98 | + |
| 99 | + |
| 100 | +def test_array_list_of_strings(): |
| 101 | + array = [ |
| 102 | + ".oo...oo..oooo..ooo.o..o..ooo..oo..o..o", |
| 103 | + "o..o.o..o.o....o....o..o...o..o..o.o..o", |
| 104 | + "o..o.o....ooo..o....oooo...o..o....oooo", |
| 105 | + "oooo.o....o.....oo..o..o...o..o.oo.o..o", |
| 106 | + "o..o.o..o.o.......o.o..o...o..o..o.o..o", |
| 107 | + "o..o..oo..oooo.ooo..o..o..ooo..ooo.o..o", |
| 108 | + ] |
| 109 | + assert convert_array_6(array, fill_pixel="o") == "ACESHIGH" |
| 110 | + |
| 111 | + |
| 112 | +def test_array_numpy(): |
| 113 | + array = np.array( |
| 114 | + [ |
| 115 | + [0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0], |
| 116 | + [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1], |
| 117 | + [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0], |
| 118 | + [1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0], |
| 119 | + [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1], |
| 120 | + [1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0], |
| 121 | + ] |
| 122 | + ) |
| 123 | + assert convert_array_6(array, fill_pixel=1, empty_pixel=0) == "AOC" |
| 124 | + |
| 125 | + |
| 126 | +@mark.parametrize("rows", [1, 5, 7, 10]) |
| 127 | +def test_array_number_of_rows(rows): |
| 128 | + with raises( |
| 129 | + ValueError, match=escape("incorrect number of rows (expected 6)") |
| 130 | + ): |
| 131 | + convert_array_6(["" for _ in range(rows)]) |
0 commit comments