|
18 | 18 | '1234567[1]', |
19 | 19 | '[0]', |
20 | 20 | '[5]', |
| 21 | + '[-1]', |
21 | 22 | '', |
22 | 23 | ) |
23 | 24 |
|
| 25 | +valid_iterable_paths = ( |
| 26 | + 'test[]', |
| 27 | + '[]', |
| 28 | + 'test.*', |
| 29 | + 'test.*wild*card*', |
| 30 | + '*', |
| 31 | + '[::2]', |
| 32 | + '[2::3]', |
| 33 | + '[-1:-10:-1]', |
| 34 | + '[].*[5:].test', |
| 35 | +) |
| 36 | + |
| 37 | +invalid_paths = ( |
| 38 | + '[1' |
| 39 | + 'test[1', |
| 40 | + '[1[2]', |
| 41 | + '[,%$^%^!@#$%[1]', |
| 42 | +) |
| 43 | + |
| 44 | + |
24 | 45 | class TestDatapath(unittest.TestCase): |
25 | | - def test_validate_path_valid_cases(self): |
| 46 | + def test_validate_path_valid_cases_iterable_false(self): |
26 | 47 | for valid_path in valid_paths: |
27 | 48 | with self.subTest(msg=f'valid path `{valid_path}`'): |
28 | 49 | try: |
29 | | - datapath.validate_path(valid_path) |
| 50 | + datapath.validate_path(valid_path, iterable=False) |
30 | 51 | except datapath.ValidationError: |
31 | 52 | self.fail(f'valid path `{valid_path}` was found invalid') |
32 | 53 |
|
| 54 | + def test_validate_path_valid_cases_iterable_true(self): |
| 55 | + for valid_path in valid_paths + valid_iterable_paths: |
| 56 | + with self.subTest(msg=f'valid path `{valid_path}`'): |
| 57 | + try: |
| 58 | + datapath.validate_path(valid_path, iterable=True) |
| 59 | + except datapath.ValidationError: |
| 60 | + self.fail(f'valid path `{valid_path}` was found invalid') |
33 | 61 |
|
34 | | - def test_validate_path_invalid_cases(self): |
35 | | - invalid_paths = ( |
36 | | - '[1' |
37 | | - 'test[1', |
38 | | - '[1[2]', |
39 | | - '[,%$^%^!@#$%[1]', |
40 | | - ) |
| 62 | + def test_validate_path_invalid_cases_iterable_false(self): |
| 63 | + for invalid_path in invalid_paths + valid_iterable_paths: |
| 64 | + with self.subTest(msg=f'invalid path `{invalid_path}`'), self.assertRaises(datapath.ValidationError): |
| 65 | + datapath.validate_path(invalid_path, iterable=False) |
| 66 | + |
| 67 | + def test_validate_path_invalid_cases_iterable_true(self): |
41 | 68 | for invalid_path in invalid_paths: |
42 | 69 | with self.subTest(msg=f'invalid path `{invalid_path}`'), self.assertRaises(datapath.ValidationError): |
43 | | - datapath.validate_path(invalid_path) |
| 70 | + datapath.validate_path(invalid_path, iterable=True) |
| 71 | + |
| 72 | + def test_is_path_valid_cases_iterable_false(self): |
| 73 | + for valid_path in valid_paths: |
| 74 | + with self.subTest(msg=f'valid path `{valid_path}`'): |
| 75 | + self.assertTrue(datapath.is_path(valid_path, iterable=False)) |
| 76 | + |
| 77 | + def test_is_path_valid_cases_iterable_true(self): |
| 78 | + for valid_path in valid_paths + valid_iterable_paths: |
| 79 | + with self.subTest(msg=f'valid path `{valid_path}`'): |
| 80 | + self.assertTrue(datapath.is_path(valid_path, iterable=True)) |
| 81 | + |
| 82 | + def test_is_path_invalid_cases_iterable_false(self): |
| 83 | + for invalid_path in invalid_paths + valid_iterable_paths: |
| 84 | + with self.subTest(msg=f'invalid path `{invalid_path}`'): |
| 85 | + self.assertFalse(datapath.is_path(invalid_path, iterable=False)) |
| 86 | + |
| 87 | + def test_is_path_invalid_cases_iterable_true(self): |
| 88 | + for invalid_path in invalid_paths: |
| 89 | + with self.subTest(msg=f'invalid path `{invalid_path}`'): |
| 90 | + self.assertFalse(datapath.is_path(invalid_path, iterable=True)) |
44 | 91 |
|
45 | 92 | def test_split_path(self): |
46 | 93 | tests = ( |
|
0 commit comments