Ejemplo n.º 1
0
 def __init__(self, send_seq, receive_seq, send_window, receive_window):
     self.snd_wnd = send_window
     self.snd_nxt = send_seq.clone()
     self.snd_una = send_seq.clone()
     self.rcv_nxt = receive_seq.clone()
     self.rcv_wnd = receive_window
     self.snd_wl1 = receive_seq.clone()
     self.snd_wl2 = send_seq.clone()
     self.in_buffer = DataBuffer(start_index=receive_seq.clone())
     self.out_buffer = DataBuffer(start_index=send_seq.clone())
     self.lock = threading.RLock()
Ejemplo n.º 2
0
 def test_resize(self):
     data = np.zeros(10)
     B = DataBuffer(data=data)
     data = np.zeros(20)
     B.set_data(data)
     assert B.nbytes == data.nbytes
     assert B._need_resize == True
Ejemplo n.º 3
0
    def test_getitem_field(self):
        dtype = np.dtype( [ ('position', np.float32, 3),
                            ('texcoord', np.float32, 2),
                            ('color',    np.float32, 4) ] )
        data = np.zeros(10,dtype=dtype)
        B = DataBuffer(data)

        Z = B["position"]
        assert Z.nbytes == 10 * 3 * np.dtype(np.float32).itemsize
        assert Z.offset == 0
        assert Z.size == 10
        assert Z.itemsize == 3 * np.dtype(np.float32).itemsize
        assert Z.stride == (3+2+4) * np.dtype(np.float32).itemsize
        assert Z.dtype == (np.float32, 3)

        Z = B["texcoord"]
        assert Z.nbytes == 10 * 2 * np.dtype(np.float32).itemsize
        assert Z.offset ==  3 * np.dtype(np.float32).itemsize
        assert Z.size == 10
        assert Z.itemsize == 2 * np.dtype(np.float32).itemsize
        assert Z.stride == (3+2+4) * np.dtype(np.float32).itemsize
        assert Z.dtype == (np.float32, 2)

        Z = B["color"]
        assert Z.nbytes == 10 * 4 * np.dtype(np.float32).itemsize
        assert Z.offset ==  (2+3) * np.dtype(np.float32).itemsize
        assert Z.size == 10
        assert Z.itemsize == 4 * np.dtype(np.float32).itemsize
        assert Z.stride == (3+2+4) * np.dtype(np.float32).itemsize
        assert Z.dtype == (np.float32, 4)
Ejemplo n.º 4
0
 def test_set_data_base(self):
     dtype = np.dtype( [ ('position', np.float32, 3),
                         ('texcoord', np.float32, 2),
                         ('color',    np.float32, 4) ] )
     data = np.zeros(10,dtype=dtype)
     B = DataBuffer(data, store=True, copy=False)
     B.set_data(data)
     assert len(B._pending_data) == 1
Ejemplo n.º 5
0
 def test_setitem_field_no_storage(self):
     dtype = np.dtype( [ ('position', np.float32, 3),
                         ('texcoord', np.float32, 2),
                         ('color',    np.float32, 4) ] )
     data = np.zeros(10,dtype=dtype)
     B = DataBuffer(data, store=False, copy=False)
     with self.assertRaises(ValueError):
         B['position'] = 1,2,3
Ejemplo n.º 6
0
 def test_every_two_item_no_storage(self):
     dtype = np.dtype( [ ('position', np.float32, 3),
                         ('texcoord', np.float32, 2),
                         ('color',    np.float32, 4) ] )
     data = np.zeros(10,dtype=dtype)
     B = DataBuffer(data, store=False)
     with self.assertRaises(ValueError):
         B[::2] = data[::2]
Ejemplo n.º 7
0
 def test_setitem_broadcast(self):
     dtype = np.dtype( [ ('position', np.float32, 3),
                         ('texcoord', np.float32, 2),
                         ('color',    np.float32, 4) ] )
     data = np.zeros(10,dtype=dtype)
     B = DataBuffer(data, store=True, copy=False)
     B['position'] = 1,2,3
     assert np.allclose( data['position'].ravel(), np.resize([1,2,3],30))
Ejemplo n.º 8
0
 def test_invalid_view_after_set_data(self):
     dtype = np.dtype( [ ('position', np.float32, 3),
                         ('texcoord', np.float32, 2),
                         ('color',    np.float32, 4) ] )
     data = np.zeros(10,dtype=dtype)
     B = DataBuffer(data)
     Z = B[5:]
     B.set_data(np.zeros(15,dtype=dtype))
     assert Z._valid == False
Ejemplo n.º 9
0
 def test_set_data_base(self):
     dtype = np.dtype( [ ('position', np.float32, 3),
                         ('texcoord', np.float32, 2),
                         ('color',    np.float32, 4) ] )
     data = np.zeros(10,dtype=dtype)
     B = DataBuffer(data, store=True, copy=False)
     # set_data on field is not allowed because set_data
     # can result in a buffer resize
     with self.assertRaises(ValueError):
         B['position'].set_data(data)
Ejemplo n.º 10
0
 def test_setitem_ellipsis(self):
     dtype = np.dtype( [ ('position', np.float32, 3),
                         ('texcoord', np.float32, 2),
                         ('color',    np.float32, 4) ] )
     data1 = np.zeros(10,dtype=dtype)
     data2 = np.empty(10,dtype=dtype)
     B = DataBuffer(data1, store=True, copy=False)
     B[::2] = data2[::2]
     assert np.allclose(data1['position'][::2],data2['position'][::2])
     assert np.allclose(data1['texcoord'][::2],data2['texcoord'][::2])
     assert np.allclose(data1['color'][::2],data2['color'][::2])
Ejemplo n.º 11
0
 def test_setitem_half(self):
     dtype = np.dtype( [ ('position', np.float32, 3),
                         ('texcoord', np.float32, 2),
                         ('color',    np.float32, 4) ] )
     data1 = np.zeros(10,dtype=dtype)
     data2 = np.empty(10,dtype=dtype)
     B = DataBuffer(data1, store=True, copy=False)
     B[:5] = data2[:5]
     assert np.allclose(data1['position'][:5],data2['position'][:5])
     assert np.allclose(data1['texcoord'][:5],data2['texcoord'][:5])
     assert np.allclose(data1['color'][:5],data2['color'][:5])
     assert len(B._pending_data) == 2
Ejemplo n.º 12
0
 def test_structured_init(self):
     # Check structured type
     dtype = np.dtype( [('position', np.float32, 3),
                        ('texcoord', np.float32, 2),
                        ('color',    np.float32, 4)] )
     data = np.zeros(10,dtype=dtype)
     B = DataBuffer(data)
     assert B.nbytes == data.nbytes
     assert B.offset == 0
     assert B.size == 10
     assert B.itemsize == data.itemsize
     assert B.stride == data.itemsize
     assert B.dtype == data.dtype
Ejemplo n.º 13
0
 def test_getitem_index(self):
     dtype = np.dtype( [ ('position', np.float32, 3),
                         ('texcoord', np.float32, 2),
                         ('color',    np.float32, 4) ] )
     data = np.zeros(10,dtype=dtype)
     B = DataBuffer(data)
     Z = B[0]
     assert Z.nbytes == 1 * (3+2+4) * np.dtype(np.float32).itemsize
     assert Z.offset == 0
     assert Z.size == 1
     assert Z.itemsize == (3+2+4) * np.dtype(np.float32).itemsize
     assert Z.stride == (3+2+4) * np.dtype(np.float32).itemsize
     assert Z.dtype == B.dtype
Ejemplo n.º 14
0
 def test_default_init(self):
     # Check default storage and copy flags
     data = np.ones(100)
     B = DataBuffer(data)
     assert B._store == True
     assert B._copy == False
     assert B.nbytes == data.nbytes
     assert B.offset == 0
     assert B.size == 100
     assert B.itemsize == data.itemsize
     assert B.stride == data.itemsize
     assert B.dtype == data.dtype
     assert B._resizeable == True
Ejemplo n.º 15
0
 def test_resize_no_resizeable(self):
     data = np.zeros(10)
     B = DataBuffer(data=data, resizeable=False)
     data = np.zeros(20)
     with self.assertRaises(ValueError):
         B.set_data(data)
Ejemplo n.º 16
0
 def test_storage_copy(self):
     data = np.ones(100)
     B = DataBuffer(data, store=False)
     assert B.data is None
Ejemplo n.º 17
0
 def test_no_resize_ellipsis(self):
     data = np.zeros(10)
     B = DataBuffer(data=data)
     data = np.zeros(30)
     with self.assertRaises(ValueError):
         B[...] = data
Ejemplo n.º 18
0
 def test_storage(self):
     data = np.ones(100)
     B = DataBuffer(data, store=True, copy=False)
     assert B.data.base is data
Ejemplo n.º 19
0
 def test_non_contiguous_storage(self):
     # Ask to have CPU storage and to use data as storage
     # Not possible since data[::2] is not contiguous
     data = np.ones(100)
     B = DataBuffer(data[::2], store=True, copy=False)
     assert B._copy == True
Ejemplo n.º 20
0
 def test_storage_copy(self):
     data = np.ones(100)
     B = DataBuffer(data, store=True, copy=True)
     assert B.data is not None
     assert B.data is not data
Ejemplo n.º 21
0
 def test_empty_init(self):
     with self.assertRaises(ValueError):
         B = DataBuffer()