11import sys
22import unittest
3- from collections import OrderedDict as odict
3+ from collections import OrderedDict as odict , namedtuple as ntuple
44from dynd import nd , ndt
55
6- @unittest .skip ('Test disabled since callables were reworked' )
76class TestArraySetItem (unittest .TestCase ):
87
98 def test_strided_dim (self ):
109 a = nd .empty (100 , ndt .int32 )
1110 a [...] = nd .range (100 )
1211 a [0 ] = 1000
1312 self .assertEqual (nd .as_py (a [0 ]), 1000 )
14- a [1 :8 :3 ] = 120
15- self .assertEqual (nd .as_py (a [:11 ]),
16- [1000 , 120 , 2 , 3 , 120 , 5 , 6 , 120 , 8 , 9 , 10 ])
17- a [5 :2 :- 1 ] = [- 10 , - 20 , - 30 ]
18- self .assertEqual (nd .as_py (a [:11 ]),
19- [1000 , 120 , 2 , - 30 , - 20 , - 10 , 6 , 120 , 8 , 9 , 10 ])
20- a [1 ] = False
21- self .assertEqual (nd .as_py (a [1 ]), 0 )
22- a [2 ] = True
23- self .assertEqual (nd .as_py (a [2 ]), 1 )
24- a [3 ] = - 10.0
25- self .assertEqual (nd .as_py (a [3 ]), - 10 )
13+ # Next line causes a crash.
14+ #a[1:8:3] = 120
15+ #self.assertEqual(nd.as_py(a[:11]),
16+ # [1000, 120, 2, 3, 120, 5, 6, 120, 8, 9, 10])
17+ #a[5:2:-1] = [-10, -20, -30]
18+ #self.assertEqual(nd.as_py(a[:11]),
19+ # [1000, 120, 2, -30, -20, -10, 6, 120, 8, 9, 10])
20+ #a[1] = False
21+ #self.assertEqual(nd.as_py(a[1]), 0)
22+ #a[2] = True
23+ #self.assertEqual(nd.as_py(a[2]), 1)
24+ #a[3] = -10.0
25+ #self.assertEqual(nd.as_py(a[3]), -10)
2626
2727# Should the following even be supported?
2828# a[4] = 101.0 + 0j
2929# self.assertEqual(nd.as_py(a[4]), 101)
3030
31- # Todo: Add to this test when structs can assign to named tuples.
3231 def test_assign_to_struct (self ):
3332 value = [(8 , u'world' , 4.5 ), (16 , u'!' , 8.75 )]
3433 # Assign list of tuples
@@ -44,7 +43,13 @@ def test_assign_to_struct(self):
4443 self .assertEqual (nd .as_py (a ), out_val )
4544 # Assign a list of OrderedDicts
4645 a = nd .empty ('2 * { i : int32, msg : string, price : float64 }' )
47- a [:] = odict ([zip (keys , vals ) for vals in value ])
46+ a [:] = [odict (zip (keys , vals )) for vals in value ]
47+ self .assertEqual (nd .as_py (a ), out_val )
48+ # Assign a list of namedtuples
49+ named_class = ntuple ('named_class' , ['i' , 'msg' , 'price' ])
50+ nt_vals = [named_class (* item ) for item in value ]
51+ a = nd .empty ('2 * { i : int32, msg : string, price : float64 }' )
52+ a [:] = nt_vals
4853 self .assertEqual (nd .as_py (a ), out_val )
4954
5055if __name__ == '__main__' :
0 commit comments