|
1 | 1 | import sys |
2 | 2 | import unittest |
| 3 | +from collections import OrderedDict as odict |
3 | 4 | from dynd import nd, ndt |
4 | 5 |
|
5 | 6 | @unittest.skip('Test disabled since callables were reworked') |
@@ -27,20 +28,24 @@ def test_strided_dim(self): |
27 | 28 | # a[4] = 101.0 + 0j |
28 | 29 | # self.assertEqual(nd.as_py(a[4]), 101) |
29 | 30 |
|
30 | | - """ |
31 | | - Todo: Fix this test when structs can assign to named tuples. |
32 | | -
|
| 31 | + # Todo: Add to this test when structs can assign to named tuples. |
33 | 32 | def test_assign_to_struct(self): |
34 | 33 | value = [(8, u'world', 4.5), (16, u'!', 8.75)] |
35 | 34 | # Assign list of tuples |
36 | 35 | a = nd.empty('2 * { i : int32, msg : string, price : float64 }') |
37 | 36 | a[:] = value |
38 | | - self.assertEqual(nd.as_py(a), value) |
| 37 | + keys = ['i', 'msg', 'price'] |
| 38 | + out_val = [{key:val for key, val in zip(keys, val_row)} |
| 39 | + for val_row in value] |
| 40 | + self.assertEqual(nd.as_py(a), out_val) |
39 | 41 | # Assign iterator of tuples |
40 | 42 | a = nd.empty('2 * { i : int32, msg : string, price : float64 }') |
41 | 43 | a[:] = iter(value) |
42 | | - self.assertEqual(nd.as_py(a, tuple=True), value) |
43 | | - """ |
| 44 | + self.assertEqual(nd.as_py(a), out_val) |
| 45 | + # Assign a list of OrderedDicts |
| 46 | + a = nd.empty('2 * { i : int32, msg : string, price : float64 }') |
| 47 | + a[:] = odict([zip(keys, vals) for vals in value]) |
| 48 | + self.assertEqual(nd.as_py(a), out_val) |
44 | 49 |
|
45 | 50 | if __name__ == '__main__': |
46 | 51 | unittest.main(verbosity=2) |
0 commit comments