Esempio n. 1
0
 def test_one_in_shape(self):
     strides = [16, 4, 8]
     shape   = [3,  4, 1]
     backstrides = [x * (y - 1) for x,y in zip(strides, shape)]
     assert backstrides == [32, 12, 0]
     i = ArrayIter(MockArray(shape, strides), support.product(shape), shape,
                   strides, backstrides)
     assert not i.contiguous
     s = i.reset()
     for j in range(3):
         s = i.next(s)
     assert s.offset == 12
     assert not i.done(s)
     assert s._indices == [0, 3, 0]
     while not i.done(s):
         old_indices = s._indices[:]
         old_offset = s.offset
         s = i.next(s)
     assert s.offset == 0
     assert s._indices == [0, 0, 0]
     assert old_indices == [2, 3, 0]
     assert old_offset == 44
Esempio n. 2
0
 def test_one_in_shape(self):
     strides = [16, 4, 8]
     shape = [3, 4, 1]
     backstrides = [x * (y - 1) for x, y in zip(strides, shape)]
     assert backstrides == [32, 12, 0]
     i = ArrayIter(MockArray(shape, strides), support.product(shape), shape,
                   strides, backstrides)
     assert not i.contiguous
     s = i.reset()
     for j in range(3):
         s = i.next(s)
     assert s.offset == 12
     assert not i.done(s)
     assert s._indices == [0, 3, 0]
     while not i.done(s):
         old_indices = s._indices[:]
         old_offset = s.offset
         s = i.next(s)
     assert s.offset == 0
     assert s._indices == [0, 0, 0]
     assert old_indices == [2, 3, 0]
     assert old_offset == 44
Esempio n. 3
0
    def test_iterator_basic(self):
        #Let's get started, simple iteration in C order with
        #contiguous layout => strides[-1] is 1
        shape = [3, 5]
        strides = [5, 1]
        backstrides = [x * (y - 1) for x,y in zip(strides, shape)]
        assert backstrides == [10, 4]
        i = ArrayIter(MockArray(shape, strides), support.product(shape), shape,
                      strides, backstrides)
        assert i.contiguous
        s = i.reset()
        s = i.next(s)
        s = i.next(s)
        s = i.next(s)
        assert s.offset == 3
        assert not i.done(s)
        assert s._indices == [0,0]
        assert i.indices(s) == [0,3]
        #cause a dimension overflow
        s = i.next(s)
        s = i.next(s)
        assert s.offset == 5
        assert s._indices == [0,3]
        assert i.indices(s) == [1,0]

        #Now what happens if the array is transposed? strides[-1] != 1
        # therefore layout is non-contiguous
        strides = [1, 3]
        backstrides = [x * (y - 1) for x,y in zip(strides, shape)]
        assert backstrides == [2, 12]
        i = ArrayIter(MockArray(shape, strides), support.product(shape), shape,
                      strides, backstrides)
        assert not i.contiguous
        s = i.reset()
        s = i.next(s)
        s = i.next(s)
        s = i.next(s)
        assert s.offset == 9
        assert not i.done(s)
        assert s._indices == [0,3]
        #cause a dimension overflow
        s = i.next(s)
        s = i.next(s)
        assert s.offset == 1
        assert s._indices == [1,0]
Esempio n. 4
0
    def test_iterator_basic(self):
        #Let's get started, simple iteration in C order with
        #contiguous layout => strides[-1] is 1
        shape = [3, 5]
        strides = [5, 1]
        backstrides = [x * (y - 1) for x,y in zip(strides, shape)]
        assert backstrides == [10, 4]
        i = ArrayIter(MockArray(shape, strides), support.product(shape), shape,
                      strides, backstrides)
        assert i.contiguous
        s = i.reset()
        s = i.next(s)
        s = i.next(s)
        s = i.next(s)
        assert s.offset == 3
        assert not i.done(s)
        assert s._indices == [0,0]
        assert i.indices(s) == [0,3]
        #cause a dimension overflow
        s = i.next(s)
        s = i.next(s)
        assert s.offset == 5
        assert s._indices == [0,3]
        assert i.indices(s) == [1,0]

        #Now what happens if the array is transposed? strides[-1] != 1
        # therefore layout is non-contiguous
        strides = [1, 3]
        backstrides = [x * (y - 1) for x,y in zip(strides, shape)]
        assert backstrides == [2, 12]
        i = ArrayIter(MockArray(shape, strides), support.product(shape), shape,
                      strides, backstrides)
        assert not i.contiguous
        s = i.reset()
        s = i.next(s)
        s = i.next(s)
        s = i.next(s)
        assert s.offset == 9
        assert not i.done(s)
        assert s._indices == [0,3]
        #cause a dimension overflow
        s = i.next(s)
        s = i.next(s)
        assert s.offset == 1
        assert s._indices == [1,0]