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' )
6+ # @unittest.skip('Test disabled since callables were reworked')
77class TestArraySetItem (unittest .TestCase ):
88
99 def test_strided_dim (self ):
1010 a = nd .empty (100 , ndt .int32 )
1111 a [...] = nd .range (100 )
1212 a [0 ] = 1000
1313 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 )
14+ # Next line causes a crash.
15+ #a[1:8:3] = 120
16+ #self.assertEqual(nd.as_py(a[:11]),
17+ # [1000, 120, 2, 3, 120, 5, 6, 120, 8, 9, 10])
18+ #a[5:2:-1] = [-10, -20, -30]
19+ #self.assertEqual(nd.as_py(a[:11]),
20+ # [1000, 120, 2, -30, -20, -10, 6, 120, 8, 9, 10])
21+ #a[1] = False
22+ #self.assertEqual(nd.as_py(a[1]), 0)
23+ #a[2] = True
24+ #self.assertEqual(nd.as_py(a[2]), 1)
25+ #a[3] = -10.0
26+ #self.assertEqual(nd.as_py(a[3]), -10)
2627
2728# Should the following even be supported?
2829# a[4] = 101.0 + 0j
2930# self.assertEqual(nd.as_py(a[4]), 101)
3031
31- # Todo: Add to this test when structs can assign to named tuples.
3232 def test_assign_to_struct (self ):
3333 value = [(8 , u'world' , 4.5 ), (16 , u'!' , 8.75 )]
3434 # Assign list of tuples
@@ -44,7 +44,13 @@ def test_assign_to_struct(self):
4444 self .assertEqual (nd .as_py (a ), out_val )
4545 # Assign a list of OrderedDicts
4646 a = nd .empty ('2 * { i : int32, msg : string, price : float64 }' )
47- a [:] = odict ([zip (keys , vals ) for vals in value ])
47+ a [:] = [odict (zip (keys , vals )) for vals in value ]
48+ self .assertEqual (nd .as_py (a ), out_val )
49+ # Assign a list of namedtuples
50+ named_class = ntuple ('named_class' , ['i' , 'msg' , 'price' ])
51+ nt_vals = [named_class (* item ) for item in value ]
52+ a = nd .empty ('2 * { i : int32, msg : string, price : float64 }' )
53+ a [:] = nt_vals
4854 self .assertEqual (nd .as_py (a ), out_val )
4955
5056if __name__ == '__main__' :
0 commit comments