Passed
Push — master ( a892fa...d1ecba )
by Ken M.
01:03
created

test_oil_pie   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 138
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 104
dl 0
loc 138
rs 10
c 0
b 0
f 0
wmc 6
1
import unittest
2
3
from oil_pie import divide_pie
4
5
6
class Tests(unittest.TestCase):
7
    TESTS = {
8
        "Basics": [
9
            {
10
                "input": (2, -1, 3),
11
                "answer": [1, 18],
12
                "show": "(2, -1, 3)",
13
                "explanation": [[1, 1], [2, 3], [5, 9], [1, 18]],
14
            },
15
            {
16
                "input": (1, 2, 3),
17
                "answer": [0, 1],
18
                "show": "(1, 2, 3)",
19
                "explanation": [[1, 1], [5, 6], [1, 2], [0, 1]],
20
            },
21
            {
22
                "input": (-1, -1, -1),
23
                "answer": [8, 27],
24
                "show": "(-1, -1, -1)",
25
                "explanation": [[1, 1], [2, 3], [4, 9], [8, 27]],
26
            },
27
            {
28
                "input": (10,),
29
                "answer": [0, 1],
30
                "show": "(10,)",
31
                "explanation": [[1, 1], [0, 1]],
32
            },
33
        ],
34
        "Edge": [
35
            {
36
                "input": (99, -99),
37
                "answer": [1, 4],
38
                "show": "(99, -99)",
39
                "explanation": [[1, 1], [1, 2], [1, 4]],
40
            },
41
            {
42
                "input": [
43
                    1,
44
                    1,
45
                    1,
46
                    1,
47
                    1,
48
                    1,
49
                    1,
50
                    1,
51
                    1,
52
                    1,
53
                    1,
54
                    1,
55
                    1,
56
                    1,
57
                    1,
58
                    1,
59
                    1,
60
                    1,
61
                    1,
62
                    1,
63
                    1,
64
                    1,
65
                    1,
66
                    1,
67
                    1,
68
                    1,
69
                    1,
70
                    1,
71
                    1,
72
                    1,
73
                    1,
74
                    1,
75
                    1,
76
                    1,
77
                    1,
78
                    1,
79
                    1,
80
                    1,
81
                    1,
82
                    1,
83
                    1,
84
                    1,
85
                    1,
86
                    1,
87
                    1,
88
                    1,
89
                    1,
90
                    1,
91
                    1,
92
                    1,
93
                    1,
94
                    1,
95
                    1,
96
                    1,
97
                    1,
98
                    1,
99
                    1,
100
                    1,
101
                    1,
102
                    1,
103
                    1,
104
                    1,
105
                    1,
106
                    1,
107
                    1,
108
                    1,
109
                    1,
110
                    1,
111
                    1,
112
                    1,
113
                    1,
114
                    1,
115
                    1,
116
                    1,
117
                    1,
118
                    1,
119
                    1,
120
                    1,
121
                    1,
122
                    1,
123
                    1,
124
                    1,
125
                    1,
126
                    1,
127
                    1,
128
                    1,
129
                    1,
130
                    1,
131
                    1,
132
                    1,
133
                    1,
134
                    1,
135
                    1,
136
                    1,
137
                    1,
138
                    1,
139
                    1,
140
                    1,
141
                    1,
142
                    -1,
143
                ],
144
                "answer": [99, 10000],
145
                "show": "[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1]",
146
                "explanation": [
147
                    [1, 1],
148
                    [99, 100],
149
                    [49, 50],
150
                    [97, 100],
151
                    [24, 25],
152
                    [19, 20],
153
                    [47, 50],
154
                    [93, 100],
155
                    [23, 25],
156
                    [91, 100],
157
                    [9, 10],
158
                    [89, 100],
159
                    [22, 25],
160
                    [87, 100],
161
                    [43, 50],
162
                    [17, 20],
163
                    [21, 25],
164
                    [83, 100],
165
                    [41, 50],
166
                    [81, 100],
167
                    [4, 5],
168
                    [79, 100],
169
                    [39, 50],
170
                    [77, 100],
171
                    [19, 25],
172
                    [3, 4],
173
                    [37, 50],
174
                    [73, 100],
175
                    [18, 25],
176
                    [71, 100],
177
                    [7, 10],
178
                    [69, 100],
179
                    [17, 25],
180
                    [67, 100],
181
                    [33, 50],
182
                    [13, 20],
183
                    [16, 25],
184
                    [63, 100],
185
                    [31, 50],
186
                    [61, 100],
187
                    [3, 5],
188
                    [59, 100],
189
                    [29, 50],
190
                    [57, 100],
191
                    [14, 25],
192
                    [11, 20],
193
                    [27, 50],
194
                    [53, 100],
195
                    [13, 25],
196
                    [51, 100],
197
                    [1, 2],
198
                    [49, 100],
199
                    [12, 25],
200
                    [47, 100],
201
                    [23, 50],
202
                    [9, 20],
203
                    [11, 25],
204
                    [43, 100],
205
                    [21, 50],
206
                    [41, 100],
207
                    [2, 5],
208
                    [39, 100],
209
                    [19, 50],
210
                    [37, 100],
211
                    [9, 25],
212
                    [7, 20],
213
                    [17, 50],
214
                    [33, 100],
215
                    [8, 25],
216
                    [31, 100],
217
                    [3, 10],
218
                    [29, 100],
219
                    [7, 25],
220
                    [27, 100],
221
                    [13, 50],
222
                    [1, 4],
223
                    [6, 25],
224
                    [23, 100],
225
                    [11, 50],
226
                    [21, 100],
227
                    [1, 5],
228
                    [19, 100],
229
                    [9, 50],
230
                    [17, 100],
231
                    [4, 25],
232
                    [3, 20],
233
                    [7, 50],
234
                    [13, 100],
235
                    [3, 25],
236
                    [11, 100],
237
                    [1, 10],
238
                    [9, 100],
239
                    [2, 25],
240
                    [7, 100],
241
                    [3, 50],
242
                    [1, 20],
243
                    [1, 25],
244
                    [3, 100],
245
                    [1, 50],
246
                    [1, 100],
247
                    [99, 10000],
248
                ],
249
            },
250
        ],
251
        "Extra": [
252
            {
253
                "input": [6, -4, 6, 24, 23, 65],
254
                "answer": [3, 2048],
255
                "show": "[6, -4, 6, 24, 23, 65]",
256
                "explanation": [
257
                    [1, 1],
258
                    [61, 64],
259
                    [1891, 2048],
260
                    [1795, 2048],
261
                    [1411, 2048],
262
                    [1043, 2048],
263
                    [3, 2048],
264
                ],
265
            },
266
            {
267
                "input": [83, 81],
268
                "answer": [0, 1],
269
                "show": "[83, 81]",
270
                "explanation": [[1, 1], [81, 164], [0, 1]],
271
            },
272
            {
273
                "input": [15, 33, 37, 16, -1, 22, -73, 66, -59, 10, -39, 57],
274
                "answer": [2_682_139_399_739, 14_362_129_722_368],
275
                "show": "[15, 33, 37, 16, -1, 22, -73, 66, -59, 10, -39, 57]",
276
                "explanation": [
277
                    [1, 1],
278
                    [413, 428],
279
                    [95, 107],
280
                    [343, 428],
281
                    [327, 428],
282
                    [139_629, 183_184],
283
                    [130_213, 183_184],
284
                    [46_225_615, 78_402_752],
285
                    [34_135_471, 78_402_752],
286
                    [12_595_988_799, 33_556_377_856],
287
                    [11_811_961_279, 33_556_377_856],
288
                    [4_594_852_937_531, 14_362_129_722_368],
289
                    [2_682_139_399_739, 14_362_129_722_368],
290
                ],
291
            },
292
            {
293
                "input": [
294
                    -86,
295
                    94,
296
                    3,
297
                    22,
298
                    30,
299
                    -63,
300
                    72,
301
                    64,
302
                    -52,
303
                    -98,
304
                    93,
305
                    -42,
306
                    52,
307
                    -35,
308
                    -52,
309
                    58,
310
                    -5,
311
                    90,
312
                    70,
313
                    76,
314
                ],
315
                "answer": [
316
                    2_418_384_304_303_700_202_212,
317
                    19_001_162_276_662_055_889_529,
318
                ],
319
                "show_answer": "[2418384304303700202212, 19001162276662055889529]",
320
                "show": "[-86, 94, 3, 22, 30, -63, 72, 64, -52, -98, 93, -42, 52, -35, -52, 58, -5, 90, 70, 76]",
321
                "explanation": [
322
                    [1, 1],
323
                    [1071, 1157],
324
                    [977, 1157],
325
                    [974, 1157],
326
                    [952, 1157],
327
                    [922, 1157],
328
                    [1_008_668, 1_338_649],
329
                    [925_364, 1_338_649],
330
                    [851_316, 1_338_649],
331
                    [72_361_860, 119_139_761],
332
                    [76_631_209_740, 137_844_703_477],
333
                    [65_551_211_967, 137_844_703_477],
334
                    [73_089_601_343_205, 159_486_321_922_889],
335
                    [65_921_676_762_401, 159_486_321_922_889],
336
                    [73_964_121_327_413_922, 184_525_674_464_782_573],
337
                    [6_286_950_312_830_183_370, 16_422_785_027_365_648_997],
338
                    [5_463_681_919_064_230_352, 16_422_785_027_365_648_997],
339
                    [6_294_161_570_761_993_365_504, 19_001_162_276_662_055_889_529],
340
                    [4_816_110_918_299_084_955_774, 19_001_162_276_662_055_889_529],
341
                    [3_666_515_966_383_489_525_984, 19_001_162_276_662_055_889_529],
342
                    [2_418_384_304_303_700_202_212, 19_001_162_276_662_055_889_529],
343
                ],
344
            },
345
            {
346
                "input": [
347
                    -2,
348
                    -19,
349
                    -85,
350
                    -73,
351
                    -80,
352
                    -88,
353
                    70,
354
                    -66,
355
                    71,
356
                    17,
357
                    -53,
358
                    9,
359
                    -87,
360
                    -94,
361
                    33,
362
                    64,
363
                    91,
364
                    95,
365
                    94,
366
                    -52,
367
                ],
368
                "answer": [
369
                    14_944_169_998_518_287_933_224_442_117_487,
370
                    90_447_599_430_824_330_991_026_825_693_467,
371
                ],
372
                "show_answer": "[14944169998518287933224442117487, 90447599430824330991026825693467]",
373
                "show": "[-2, -19, -85, -73, -80, -88, 70, -66, 71, 17, -53, 9, -87, -94, 33, 64, 91, 95, 94, -52]",
374
                "explanation": [
375
                    [1, 1],
376
                    [1241, 1243],
377
                    [1_518_984, 1_545_049],
378
                    [1_758_983_472, 1_920_495_907],
379
                    [2_058_010_662_240, 2_387_176_412_401],
380
                    [2_393_466_400_185_120, 2_967_260_280_614_443],
381
                    [251_313_972_019_437_600, 335_300_411_709_432_059],
382
                    [232_431_406_597_345_690, 335_300_411_709_432_059],
383
                    [24_870_160_505_915_988_830, 37_888_946_523_165_822_667],
384
                    [22_705_948_757_609_654_631, 37_888_946_523_165_822_667],
385
                    [22_187_757_212_240_532_358, 37_888_946_523_165_822_667],
386
                    [26_403_431_082_566_233_506_020, 47_095_960_528_295_117_575_081],
387
                    [26_062_430_563_857_741_102_017, 47_095_960_528_295_117_575_081],
388
                    [
389
                        30_128_169_731_819_548_713_931_652,
390
                        58_540_278_936_670_831_145_825_683,
391
                    ],
392
                    [
393
                        34_617_267_021_860_661_472_307_468_148,
394
                        72_765_566_718_281_843_114_261_323_969,
395
                    ],
396
                    [
397
                        32_685_437_816_950_524_044_495_220_609,
398
                        72_765_566_718_281_843_114_261_323_969,
399
                    ],
400
                    [
401
                        28_938_859_965_003_590_851_162_376_897,
402
                        72_765_566_718_281_843_114_261_323_969,
403
                    ],
404
                    [
405
                        23_611_694_581_766_545_216_892_239_744,
406
                        72_765_566_718_281_843_114_261_323_969,
407
                    ],
408
                    [
409
                        18_050_368_082_782_816_258_038_799_859,
410
                        72_765_566_718_281_843_114_261_323_969,
411
                    ],
412
                    [
413
                        12_547_581_862_735_758_130_331_185_657,
414
                        72_765_566_718_281_843_114_261_323_969,
415
                    ],
416
                    [
417
                        14_944_169_998_518_287_933_224_442_117_487,
418
                        90_447_599_430_824_330_991_026_825_693_467,
419
                    ],
420
                ],
421
            },
422
        ],
423
    }
424
425
    def test_Basics(self):
426
        for i in self.TESTS['Basics']:
427
            assert divide_pie(i['input']) == tuple(i['answer'])
428
429
    def test_Edge(self):
430
        for i in self.TESTS['Edge']:
431
            assert divide_pie(i['input']) == tuple(i['answer'])
432
433
    def test_Extra(self):
434
        for i in self.TESTS['Extra']:
435
            assert divide_pie(i['input']) == tuple(i['answer'])
436
437
438
if __name__ == "__main__":  # pragma: no cover
439
    unittest.main()
440