def test_basic_vector_double(self): # Ensure that we can get vectors templated on double by reference. init = [1., 2, 3] value_data = BasicVector(init) value = value_data.get_mutable_value() # TODO(eric.cousineau): Determine if there is a way to extract the # pointer referred to by the buffer (e.g. `value.data`). value[:] += 1 expected = [2., 3, 4] self.assertTrue(np.allclose(value, expected)) self.assertTrue(np.allclose(value_data.get_value(), expected)) self.assertTrue(np.allclose(value_data.get_mutable_value(), expected)) expected = [5., 6, 7] value_data.SetFromVector(expected) self.assertTrue(np.allclose(value, expected)) self.assertTrue(np.allclose(value_data.get_value(), expected)) self.assertTrue(np.allclose(value_data.get_mutable_value(), expected))
def test_basic_vector_double(self): # Test constructing vectors of sizes [0, 1, 2], and ensure that we can # construct from both lists and `np.array` objects with no ambiguity. for n in [0, 1, 2]: for wrap in [pass_through, np.array]: # Ensure that we can get vectors templated on double by # reference. expected_init = wrap(map(float, range(n))) expected_add = wrap([x + 1 for x in expected_init]) expected_set = wrap([x + 10 for x in expected_init]) value_data = BasicVector(expected_init) value = value_data.get_mutable_value() self.assertTrue(np.allclose(value, expected_init)) # Add value directly. # TODO(eric.cousineau): Determine if there is a way to extract # the pointer referred to by the buffer (e.g. `value.data`). value[:] += 1 self.assertTrue(np.allclose(value, expected_add)) self.assertTrue( np.allclose(value_data.get_value(), expected_add)) self.assertTrue( np.allclose(value_data.get_mutable_value(), expected_add)) # Set value from `BasicVector`. value_data.SetFromVector(expected_set) self.assertTrue(np.allclose(value, expected_set)) self.assertTrue( np.allclose(value_data.get_value(), expected_set)) self.assertTrue( np.allclose(value_data.get_mutable_value(), expected_set)) # Ensure we can construct from size. value_data = BasicVector(n) self.assertEquals(value_data.size(), n) # Ensure we can clone. value_copies = [ value_data.Clone(), copy.copy(value_data), copy.deepcopy(value_data), ] for value_copy in value_copies: self.assertTrue(value_copy is not value_data) self.assertEquals(value_data.size(), n)