From 4d2a0aefc103070e3cc76af3fe27129dad680241 Mon Sep 17 00:00:00 2001 From: dellaert Date: Sat, 6 Dec 2014 12:59:35 +0100 Subject: [PATCH] Group checks out ! --- gtsam/geometry/tests/testCyclic.cpp | 52 ++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/gtsam/geometry/tests/testCyclic.cpp b/gtsam/geometry/tests/testCyclic.cpp index f46b85511..61c700c8a 100644 --- a/gtsam/geometry/tests/testCyclic.cpp +++ b/gtsam/geometry/tests/testCyclic.cpp @@ -36,6 +36,14 @@ public: Cyclic operator+(const Cyclic& h) const { return (i_+h.i_) % N; } + /// Subtraction modulo N + Cyclic operator-(const Cyclic& h) const { + return (N+i_-h.i_) % N; + } + /// Inverse + Cyclic operator-() const { + return (N-i_) % N; + } }; namespace traits { @@ -124,18 +132,46 @@ TEST(Cyclic, Constructor) { //****************************************************************************** TEST(Cyclic, Compose) { - G e(0), g(2), h(3); - EXPECT_LONGS_EQUAL(5, group::compose(g,h)); - EXPECT_LONGS_EQUAL(0, group::compose(h,h)); - EXPECT_LONGS_EQUAL(3, group::compose(h,e)); + EXPECT_LONGS_EQUAL(0, group::compose(G(0),G(0))); + EXPECT_LONGS_EQUAL(1, group::compose(G(0),G(1))); + EXPECT_LONGS_EQUAL(2, group::compose(G(0),G(2))); + EXPECT_LONGS_EQUAL(3, group::compose(G(0),G(3))); + EXPECT_LONGS_EQUAL(4, group::compose(G(0),G(4))); + EXPECT_LONGS_EQUAL(5, group::compose(G(0),G(5))); + + EXPECT_LONGS_EQUAL(2, group::compose(G(2),G(0))); + EXPECT_LONGS_EQUAL(3, group::compose(G(2),G(1))); + EXPECT_LONGS_EQUAL(4, group::compose(G(2),G(2))); + EXPECT_LONGS_EQUAL(5, group::compose(G(2),G(3))); + EXPECT_LONGS_EQUAL(0, group::compose(G(2),G(4))); + EXPECT_LONGS_EQUAL(1, group::compose(G(2),G(5))); } //****************************************************************************** TEST(Cyclic, Between) { - G g(2), h(3); - EXPECT_LONGS_EQUAL(1, group::between(g,h)); - EXPECT_LONGS_EQUAL(0, group::between(g,g)); - EXPECT_LONGS_EQUAL(0, group::between(h,h)); + EXPECT_LONGS_EQUAL(0, group::between(G(0),G(0))); + EXPECT_LONGS_EQUAL(1, group::between(G(0),G(1))); + EXPECT_LONGS_EQUAL(2, group::between(G(0),G(2))); + EXPECT_LONGS_EQUAL(3, group::between(G(0),G(3))); + EXPECT_LONGS_EQUAL(4, group::between(G(0),G(4))); + EXPECT_LONGS_EQUAL(5, group::between(G(0),G(5))); + + EXPECT_LONGS_EQUAL(4, group::between(G(2),G(0))); + EXPECT_LONGS_EQUAL(5, group::between(G(2),G(1))); + EXPECT_LONGS_EQUAL(0, group::between(G(2),G(2))); + EXPECT_LONGS_EQUAL(1, group::between(G(2),G(3))); + EXPECT_LONGS_EQUAL(2, group::between(G(2),G(4))); + EXPECT_LONGS_EQUAL(3, group::between(G(2),G(5))); +} + +//****************************************************************************** +TEST(Cyclic, Ivnverse) { + EXPECT_LONGS_EQUAL(0, group::inverse(G(0))); + EXPECT_LONGS_EQUAL(5, group::inverse(G(1))); + EXPECT_LONGS_EQUAL(4, group::inverse(G(2))); + EXPECT_LONGS_EQUAL(3, group::inverse(G(3))); + EXPECT_LONGS_EQUAL(2, group::inverse(G(4))); + EXPECT_LONGS_EQUAL(1, group::inverse(G(5))); } //******************************************************************************