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
21using namespace gtsam;
22
23typedef FixedVector<5> TestVector5;
24typedef FixedVector<3> TestVector3;
25
26static const double tol = 1e-9;
27
28/* ************************************************************************* */
29TEST( 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/* ************************************************************************* */
39TEST( 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/* ************************************************************************* */
47TEST( 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/* ************************************************************************* */
62TEST( 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/* ************************************************************************* */
85int main() { TestResult tr; return TestRegistry::runAllTests(result&: tr); }
86/* ************************************************************************* */
87
88
89