-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_day6.py
100 lines (79 loc) · 3.39 KB
/
test_day6.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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import unittest
import numpy as np
from algorithms import lightSwitcher,NordicLightSwitcher
class test_day6(unittest.TestCase):
def setUp(self):
self.lights = lightSwitcher()
self.lights2 = NordicLightSwitcher()
def test_noLightsOn(self):
self.assertEqual(0,self.lights.sum())
def test_nineLightsOn(self):
self.lights.turnOn((0,0),(2,2))
self.assertEqual(9,self.lights.sum())
def test_nineLightsOff(self):
self.lights.turnOn((0,0),(2,2))
self.lights.turnOff((0,0),(2,2))
self.assertEqual(0,self.lights.sum())
def test_toggleLight(self):
self.lights.lights = np.array(((0,1,0),
(0,0,0),
(1,1,1)))
self.lights.toggle((0,0),(1,1))
self.assertEqual(True,np.all(np.array(((1,0,0),
(1,1,0),
(1,1,1)))==self.lights.lights))
def test_allOn(self):
self.lights.turnOn((0,0),(999,999))
self.assertEqual(1000000,self.lights.sum())
def test_middleFourOff(self):
self.lights.turnOn((0,0),(999,999))
self.lights.turnOff((499,499),(500,500))
self.assertEqual(0,self.lights.lights[499:501,499:501].sum())
self.assertEqual(999996,self.lights.sum())
def test_toggleFirstRow(self):
self.lights.turnOn((0,0),(999,999))
self.lights.toggle((0,0),(999,0))
self.assertEqual(1000000-1000,self.lights.sum())
self.assertEqual(0,self.lights.lights[:,0].sum())
def getparseLineFun(self,line):
self.lights.parseLine(line)
def test_turnOnLightsCommand(self):
line="turn on 0,0 through 999,999"
self.getparseLineFun(line)
self.assertEqual(1000000,self.lights.sum())
def test_toggleCommand(self):
line="toggle 0,0 through 999,0"
self.getparseLineFun(line)
self.assertEqual(1000,self.lights.sum())
self.assertEqual(1000,self.lights.lights[:,0].sum())
def test_turnOffCommand(self):
line="turn off 499,499 through 500,500"
self.getparseLineFun(line)
self.assertEqual(0,self.lights.lights[499:501,499:501].sum())
self.assertEqual(0,self.lights.sum())
def test_lightCOmmands(self):
for line in open("testData/lightCommands"):
self.lights.parseLine(line)
self.assertEqual(400410,self.lights.sum())
def test_nordic_with0(self):
self.assertEqual(0,self.lights2.sum())
def test_nordicWithToggle(self):
self.lights2.toggle((0,0),(999,999))
self.assertEqual(2000000,self.lights2.sum())
def test_nordicWithToggleAndoff(self):
self.lights2.toggle((0,0),(999,999))
self.lights2.turnOff((0,0),(999,999))
self.assertEqual(1000000,self.lights2.sum())
def test_nordicWithToggleAndoffAndOn(self):
self.lights2.toggle((0,0),(999,999))
self.lights2.turnOff((0,0),(999,999))
self.lights2.turnOn((0,0),(999,999))
self.assertEqual(2000000,self.lights2.sum())
def test_datacannotgonegative(self):
self.lights2.turnOn((500,500),(999,999))
self.lights2.turnOff((0,0),(999,999))
self.assertEqual(0,self.lights2.sum())
def test_nordicWithtestData(self):
for line in open("testData/lightCommands"):
self.lights2.parseLine(line)
self.assertEqual(15343601,self.lights2.sum())