| 1 | /* ---------------------------------------------------------------------------- |
| 2 | |
| 3 | * GTSAM Copyright 2010, Georgia Tech Research Corporation, |
| 4 | * Atlanta, Georgia 30332-0415 |
| 5 | * All Rights Reserved |
| 6 | * Authors: Frank Dellaert, et al. (see THANKS for the full author list) |
| 7 | |
| 8 | * See LICENSE for the license information |
| 9 | |
| 10 | * -------------------------------------------------------------------------- */ |
| 11 | |
| 12 | /** |
| 13 | * @file testFixedVector.cpp |
| 14 | * @author Alex Cunningham |
| 15 | */ |
| 16 | |
| 17 | #include <CppUnitLite/TestHarness.h> |
| 18 | |
| 19 | #include <gtsam_unstable/base/FixedVector.h> |
| 20 | |
| 21 | using namespace gtsam; |
| 22 | |
| 23 | typedef FixedVector<5> TestVector5; |
| 24 | typedef FixedVector<3> TestVector3; |
| 25 | |
| 26 | static const double tol = 1e-9; |
| 27 | |
| 28 | /* ************************************************************************* */ |
| 29 | TEST( testFixedVector, conversions ) { |
| 30 | double data1[] = {1.0, 2.0, 3.0}; |
| 31 | Vector v1 = (Vector(3) << data1[0], data1[1], data1[2]).finished(); |
| 32 | TestVector3 fv1(v1), fv2(data1); |
| 33 | |
| 34 | Vector actFv2(fv2); |
| 35 | EXPECT(assert_equal(v1, actFv2)); |
| 36 | } |
| 37 | |
| 38 | /* ************************************************************************* */ |
| 39 | TEST( testFixedVector, variable_constructor ) { |
| 40 | TestVector3 act(Vector3(1.0, 2.0, 3.0)); |
| 41 | EXPECT_DOUBLES_EQUAL(1.0, act(0), tol); |
| 42 | EXPECT_DOUBLES_EQUAL(2.0, act(1), tol); |
| 43 | EXPECT_DOUBLES_EQUAL(3.0, act(2), tol); |
| 44 | } |
| 45 | |
| 46 | /* ************************************************************************* */ |
| 47 | TEST( testFixedVector, equals ) { |
| 48 | TestVector3 vec1(Vector3(1.0, 2.0, 3.0)), vec2(Vector3(1.0, 2.0, 3.0)), |
| 49 | vec3(Vector3(2.0, 3.0, 4.0)); |
| 50 | TestVector5 vec4((Vector(5) << 1.0, 2.0, 3.0, 4.0, 5.0).finished()); |
| 51 | |
| 52 | EXPECT(assert_equal(vec1, vec1, tol)); |
| 53 | EXPECT(assert_equal(vec1, vec2, tol)); |
| 54 | EXPECT(assert_equal(vec2, vec1, tol)); |
| 55 | EXPECT(!vec1.equals(vec3, tol)); |
| 56 | EXPECT(!vec3.equals(vec1, tol)); |
| 57 | EXPECT(!vec1.equals(vec4, tol)); |
| 58 | EXPECT(!vec4.equals(vec1, tol)); |
| 59 | } |
| 60 | |
| 61 | /* ************************************************************************* */ |
| 62 | TEST( testFixedVector, static_constructors ) { |
| 63 | TestVector3 actZero = TestVector3::zero(); |
| 64 | TestVector3 expZero(Vector3(0.0, 0.0, 0.0)); |
| 65 | EXPECT(assert_equal(expZero, actZero, tol)); |
| 66 | |
| 67 | TestVector3 actOnes = TestVector3::ones(); |
| 68 | TestVector3 expOnes(Vector3(1.0, 1.0, 1.0)); |
| 69 | EXPECT(assert_equal(expOnes, actOnes, tol)); |
| 70 | |
| 71 | TestVector3 actRepeat = TestVector3::repeat(value: 2.3); |
| 72 | TestVector3 expRepeat(Vector3(2.3, 2.3, 2.3)); |
| 73 | EXPECT(assert_equal(expRepeat, actRepeat, tol)); |
| 74 | |
| 75 | TestVector3 actBasis = TestVector3::basis(i: 1); |
| 76 | TestVector3 expBasis(Vector3(0.0, 1.0, 0.0)); |
| 77 | EXPECT(assert_equal(expBasis, actBasis, tol)); |
| 78 | |
| 79 | TestVector3 actDelta = TestVector3::delta(i: 1, value: 2.3); |
| 80 | TestVector3 expDelta(Vector3(0.0, 2.3, 0.0)); |
| 81 | EXPECT(assert_equal(expDelta, actDelta, tol)); |
| 82 | } |
| 83 | |
| 84 | /* ************************************************************************* */ |
| 85 | int main() { TestResult tr; return TestRegistry::runAllTests(result&: tr); } |
| 86 | /* ************************************************************************* */ |
| 87 | |
| 88 | |
| 89 | |