def test_simple_slices(self): self.assertEqual(1, array_utils.slice_structure(STRUCT, ['k1', 0, 'a'])) self.assertEqual(8, array_utils.slice_structure(STRUCT, ['k2', 1, 'a'])) self.assertEqual(4, array_utils.slice_structure(STRUCT, ['k1', -1, 'c']))
def test_all_slice_set(self): struct = set(range(10)) with self.assertRaises(NotImplementedError): array_utils.slice_structure(struct, [array_utils.SLICE.ALL])
def test_all_slice_list(self): actual = array_utils.slice_structure(STRUCT, ['k1', array_utils.SLICE.ALL]) self.assertEqual(actual, STRUCT['k1'])
def test_all_slice_dict(self): actual = array_utils.slice_structure(STRUCT, [array_utils.SLICE.ALL, 0, 'a']) expected = {'k1': 1, 'k2': 5, 'k3': 5} self.assertEqual(expected, actual)
def test_base_case(self): self.assertEqual(STRUCT, array_utils.slice_structure(STRUCT, []))
def test_invalid_key(self): with self.assertRaises(KeyError): array_utils.slice_structure(STRUCT, ['k3', [0], 'c']) with self.assertRaises(IndexError): array_utils.slice_structure(STRUCT, ['k3', [3], 'c'])
def test_list_slice_from_dict(self): actual = array_utils.slice_structure(STRUCT, [['k1', 'k2', 'k1'], 0, 'b']) self.assertEqual(actual, [2, 6, 2])
def test_list_slice_from_list(self): actual = array_utils.slice_structure(STRUCT, ['k1', [0, 1, 1], 'a']) self.assertEqual(actual, [1, 2, 2])