def test_init_default(self): """ Test buffer init""" # No data B = Buffer() assert B.nbytes == 0 glir_cmd = B._glir.clear()[-1] assert glir_cmd[0] == 'CREATE' # With data data = np.zeros(100) B = Buffer(data=data) assert B.nbytes == data.nbytes glir_cmd = B._glir.clear()[-1] assert glir_cmd[0] == 'DATA' # With nbytes B = Buffer(nbytes=100) assert B.nbytes == 100 glir_cmd = B._glir.clear()[-1] assert glir_cmd[0] == 'SIZE' # Wrong data self.assertRaises(ValueError, Buffer, data, 4) self.assertRaises(ValueError, Buffer, data, data.nbytes)
def test_setting_subdata(self): data = np.zeros(100, np.float32) buffer = Buffer(target=gl.GL_ARRAY_BUFFER) # Set subdata when no data is set with self.assertRaises(RuntimeError): buffer.set_subdata(0, data) # Set nbytes and try again buffer.set_nbytes(data.nbytes) buffer.set_subdata(0, data) # Subpart buffer.set_subdata(0, data[:50]) buffer.set_subdata(50, data[50:]) # Too big with self.assertRaises(ValueError): buffer.set_subdata(1, data) # Weird with self.assertRaises(ValueError): buffer.set_subdata(-1, data) # Weirder with self.assertRaises(ValueError): buffer.set_subdata(1000000, data)
def test_wrong_data(self): buffer = Buffer(target=gl.GL_ARRAY_BUFFER) # String with self.assertRaises(ValueError): buffer.set_data('foo') # Bytes some_bytes = 'foo'.encode('utf-8') with self.assertRaises(ValueError): buffer.set_data(some_bytes) # Now with subdata data = np.zeros(100, np.float32) buffer.set_data(data) # String with self.assertRaises(ValueError): buffer.set_subdata(0, 'foo') with self.assertRaises(ValueError): buffer.set_subdata('foo', data) # Bytes some_bytes = 'foo'.encode('utf-8') with self.assertRaises(ValueError): buffer.set_subdata(0, some_bytes) with self.assertRaises(ValueError): buffer.set_subdata(some_bytes, data)
def test_offlimit_offset(self): data = np.zeros(10) B = Buffer(data=data) # with self.assertRaises(ValueError): # B.set_data(np.ones(1), offset=10 * data.dtype.itemsize) self.assertRaises(ValueError, B.set_subdata, np.ones(1), offset=10 * data.dtype.itemsize)
def test_init(self): buffer = Buffer(target=gl.GL_ARRAY_BUFFER) assert buffer._handle == 0 assert buffer._need_update == False assert buffer._valid == False assert buffer._nbytes == 0 assert buffer._usage == gl.GL_DYNAMIC_DRAW
def test_set_whole_data(self): data = np.zeros(100) B = Buffer(data=data) B._glir.clear() B.set_data(data=data) glir_cmds = B._glir.clear() assert len(glir_cmds) == 2 assert glir_cmds[0][0] == 'SIZE' assert glir_cmds[1][0] == 'DATA' # And sub data B.set_subdata(data[:50], 20) glir_cmds = B._glir.clear() assert len(glir_cmds) == 1 assert glir_cmds[0][0] == 'DATA' assert glir_cmds[0][2] == 20 # offset # And sub data B.set_subdata(data) glir_cmds = B._glir.clear() assert glir_cmds[-1][0] == 'DATA' # Wrong ways to set subdata self.assertRaises(ValueError, B.set_subdata, data[:50], -1) # neg self.assertRaises(ValueError, B.set_subdata, data, 10) # no fit
def test_init_default(self): B = Buffer() assert B._target == gl.GL_ARRAY_BUFFER assert B._handle == -1 assert B._need_create is True assert B._need_delete is False assert B._nbytes == 0 assert B._usage == gl.GL_DYNAMIC_DRAW
def test_pending_data(self): data = np.zeros(100, np.float32) buffer = Buffer(target=gl.GL_ARRAY_BUFFER) self.assertEqual(len(buffer._pending_data), 0) buffer = Buffer(data=data, target=gl.GL_ARRAY_BUFFER) self.assertEqual(len(buffer._pending_data), 1) buffer.set_data(data) self.assertEqual(len(buffer._pending_data), 1) buffer.set_subdata(0, data[:50]) self.assertEqual(len(buffer._pending_data), 2) buffer.set_data(data) self.assertEqual(len(buffer._pending_data), 1)
def test_setting_size(self): data = np.zeros(100, np.float32) buffer = Buffer(target=gl.GL_ARRAY_BUFFER) buffer.set_data(data) self.assertEqual(buffer.nbytes, data.nbytes) buffer.set_data( np.zeros(200, np.float32)) self.assertEqual(buffer.nbytes, 200*4) buffer.set_nbytes(10) self.assertEqual(buffer.nbytes, 10) buffer.set_nbytes(20) self.assertEqual(buffer.nbytes, 20)
def test_buffer_resize(self): data = np.zeros(10) B = Buffer(data=data) data = np.zeros(20) B.set_data(data) assert B.nbytes == data.nbytes
def test_negative_offset(self): data = np.zeros(10) B = Buffer(data=data) # with self.assertRaises(ValueError): # B.set_data(np.ones(1), offset=-1) self.assertRaises(ValueError, B.set_subdata, np.ones(1), offset=-1)
def test_oversized_data(self): data = np.zeros(10) B = Buffer(data=data) # with self.assertRaises(ValueError): # B.set_data(np.ones(20)) self.assertRaises(ValueError, B.set_subdata, np.ones(20), offset=0)
def test_data_copy(self): data = np.zeros(100) B = Buffer(data=data) B.set_data(data=data[:50], copy=True) assert B._pending_data[-1][0].base is not data
def test_data_storage(self): data = np.zeros(100) B = Buffer(data=data) B.set_data(data=data[:50], copy=False) assert B._pending_data[-1][0].base is data
def test_set_whole_data(self): data = np.zeros(100) B = Buffer(data=data) B.set_data(data=data) assert len(B._pending_data) == 1
def test_init_with_data(self): data = np.zeros(100) B = Buffer(data=data) assert len(B._pending_data) == 1
def test_init_no_data(self): B = Buffer() assert len(B._pending_data) == 0
def test_buffer_size(self): data = np.zeros(10) B = Buffer(data=data) assert B.nbytes == data.nbytes
def test_data_storage(self): data = np.zeros(100) B = Buffer(data=data) B.set_data(data=data[:50], copy=False) glir_cmd = B._glir.clear()[-1] assert glir_cmd[-1].base is data