|
9 | 9 | from series import slices |
10 | 10 |
|
11 | 11 |
|
| 12 | +# Tests adapted from `problem-specifications//canonical-data.json` @ v1.0.0 |
| 13 | + |
12 | 14 | class SeriesTest(unittest.TestCase): |
13 | | - def test_slices_of_one(self): |
14 | | - self.assertEqual( |
15 | | - slices("01234", 1), |
16 | | - [[0], [1], [2], [3], [4]], ) |
| 15 | + def test_slices_of_one_from_one(self): |
| 16 | + self.assertEqual(slices("1", 1), ["1"]) |
| 17 | + |
| 18 | + def test_slices_of_one_from_two(self): |
| 19 | + self.assertEqual(slices("12", 1), ["1", "2"]) |
17 | 20 |
|
18 | 21 | def test_slices_of_two(self): |
19 | | - self.assertEqual( |
20 | | - slices("97867564", 2), |
21 | | - [[9, 7], [7, 8], [8, 6], [6, 7], [7, 5], [5, 6], [6, 4]], ) |
22 | | - |
23 | | - def test_slices_of_three(self): |
24 | | - self.assertEqual( |
25 | | - slices("97867564", 3), |
26 | | - [[9, 7, 8], [7, 8, 6], [8, 6, 7], [6, 7, 5], [7, 5, 6], [5, 6, 4]], |
27 | | - ) |
28 | | - |
29 | | - def test_slices_of_four(self): |
30 | | - self.assertEqual( |
31 | | - slices("01234", 4), |
32 | | - [[0, 1, 2, 3], [1, 2, 3, 4]], ) |
33 | | - |
34 | | - def test_slices_of_five(self): |
35 | | - self.assertEqual( |
36 | | - slices("01234", 5), |
37 | | - [[0, 1, 2, 3, 4]], ) |
38 | | - |
39 | | - def test_overly_long_slice(self): |
| 22 | + self.assertEqual(slices("35", 2), ["35"]) |
| 23 | + |
| 24 | + def test_slices_of_two_overlap(self): |
| 25 | + self.assertEqual(slices("9142", 2), ["91", "14", "42"]) |
| 26 | + |
| 27 | + def test_slices_can_include_duplicates(self): |
| 28 | + self.assertEqual(slices("777777", 3), ["777", "777", "777", "777"]) |
| 29 | + |
| 30 | + def test_slice_length_is_too_large(self): |
| 31 | + with self.assertRaisesWithMessage(ValueError): |
| 32 | + slices("12345", 6) |
| 33 | + |
| 34 | + def test_slice_length_cannot_be_zero(self): |
| 35 | + with self.assertRaisesWithMessage(ValueError): |
| 36 | + slices("12345", 0) |
| 37 | + |
| 38 | + def test_slice_length_cannot_be_negative(self): |
40 | 39 | with self.assertRaisesWithMessage(ValueError): |
41 | | - slices("012", 4) |
| 40 | + slices("123", -1) |
42 | 41 |
|
43 | | - def test_overly_short_slice(self): |
| 42 | + def test_empty_series_is_invalid(self): |
44 | 43 | with self.assertRaisesWithMessage(ValueError): |
45 | | - slices("01234", 0) |
| 44 | + slices("", 1) |
46 | 45 |
|
47 | 46 | # Utility functions |
48 | 47 | def setUp(self): |
|
0 commit comments