|
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