From bc95ea8377708372e074eef51ce3b6599eca6a50 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Vallv=C3=A9=20Navarro?= <jvallve@iri.upc.edu>
Date: Mon, 27 May 2019 11:31:27 +0200
Subject: [PATCH] adapted tests to new api

---
 test/gtest_capture_base.cpp |  22 -----
 test/gtest_frame_base.cpp   |   4 +-
 test/gtest_track_matrix.cpp | 182 ++++++++++++++++++++++++++----------
 test/gtest_trajectory.cpp   |  46 ++++-----
 4 files changed, 149 insertions(+), 105 deletions(-)

diff --git a/test/gtest_capture_base.cpp b/test/gtest_capture_base.cpp
index 8bb84231d..be8680356 100644
--- a/test/gtest_capture_base.cpp
+++ b/test/gtest_capture_base.cpp
@@ -82,28 +82,6 @@ TEST(CaptureBase, addFeature)
     ASSERT_EQ(C->getFeatureList().front(), f);
 }
 
-TEST(CaptureBase, addFeatureList)
-{
-    CaptureBasePtr C(std::make_shared<CaptureBase>("DUMMY", 1.2)); // timestamp = 1.2
-    // FeatureBasePtr f_first = C->addFeature(std::make_shared<FeatureBase>("DUMMY", Vector2s::Zero(), Matrix2s::Identity()));
-    auto f_first = FeatureBase::emplace<FeatureBase>(C, "DUMMY", Vector2s::Zero(), Matrix2s::Identity());
-    ASSERT_EQ(C->getFeatureList().size(), (unsigned int) 1);
-
-    // make a list to add
-    std::list<FeatureBasePtr> fl;
-    for (int i = 0; i<3; i++)
-    {
-        fl.push_back(std::make_shared<FeatureBase>("DUMMY", Vector2s::Zero(), Matrix2s::Identity()));
-    }
-    FeatureBasePtr f_last = fl.back();
-
-    C->addFeatureList((fl));
-    ASSERT_EQ(C->getFeatureList().size(), (unsigned int) 4);
-    ASSERT_EQ(fl.size(), (unsigned int) 0); // features have been moved, not copied // EDIT 02-2019: features have been copied
-    ASSERT_EQ(C->getFeatureList().front(), f_first);
-    ASSERT_EQ(C->getFeatureList().back(), f_last);
-}
-
 TEST(CaptureBase, process)
 {
     SensorBasePtr S(std::make_shared<SensorBase>("DUMMY", nullptr, nullptr, nullptr, 2));
diff --git a/test/gtest_frame_base.cpp b/test/gtest_frame_base.cpp
index 4cbc927bf..77051e6e8 100644
--- a/test/gtest_frame_base.cpp
+++ b/test/gtest_frame_base.cpp
@@ -134,8 +134,8 @@ TEST(FrameBase, LinksToTree)
     ASSERT_TRUE(F1->isKey());
     ASSERT_TRUE(F1->isKeyOrAux());
 
-    // Unlink
-    F1->unlinkCapture(C);
+    // Unlink capture
+    C->unlink();
     ASSERT_TRUE(F1->getCaptureList().empty());
 }
 
diff --git a/test/gtest_track_matrix.cpp b/test/gtest_track_matrix.cpp
index 2f956b084..898fab241 100644
--- a/test/gtest_track_matrix.cpp
+++ b/test/gtest_track_matrix.cpp
@@ -24,34 +24,68 @@ class TrackMatrixTest : public testing::Test
 
         virtual void SetUp()
         {
-            C0 = std::make_shared<CaptureBase>("BASE", 0.0);
-            C1 = std::make_shared<CaptureBase>("BASE", 1.0);
-            C2 = std::make_shared<CaptureBase>("BASE", 2.0);
-            C3 = std::make_shared<CaptureBase>("BASE", 3.0);
-            C4 = std::make_shared<CaptureBase>("BASE", 4.0);
-
-            f0 = std::make_shared<FeatureBase>("BASE", m, m_cov);
-            f1 = std::make_shared<FeatureBase>("BASE", m, m_cov);
-            f2 = std::make_shared<FeatureBase>("BASE", m, m_cov);
-            f3 = std::make_shared<FeatureBase>("BASE", m, m_cov);
-            f4 = std::make_shared<FeatureBase>("BASE", m, m_cov);
+            // unlinked captures
+            C0 = CaptureBase::emplace<CaptureBase>(nullptr, "BASE", 0.0);
+            C1 = CaptureBase::emplace<CaptureBase>(nullptr, "BASE", 0.0);
+            C2 = CaptureBase::emplace<CaptureBase>(nullptr, "BASE", 0.0);
+            C3 = CaptureBase::emplace<CaptureBase>(nullptr, "BASE", 0.0);
+            C4 = CaptureBase::emplace<CaptureBase>(nullptr, "BASE", 0.0);
+
+            // unlinked features
+            f0 = FeatureBase::emplace<FeatureBase>(nullptr, "BASE", m, m_cov);
+            f1 = FeatureBase::emplace<FeatureBase>(nullptr, "BASE", m, m_cov);
+            f2 = FeatureBase::emplace<FeatureBase>(nullptr, "BASE", m, m_cov);
+            f3 = FeatureBase::emplace<FeatureBase>(nullptr, "BASE", m, m_cov);
+            f4 = FeatureBase::emplace<FeatureBase>(nullptr, "BASE", m, m_cov);
         }
 };
 
 TEST_F(TrackMatrixTest, newTrack)
 {
-    track_matrix.newTrack(C0, f0);
+    f0->link(C0);
+    f1->link(C1);
+
+    track_matrix.newTrack(f0);
     ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 1);
 
-    track_matrix.newTrack(C0, f1);
+    track_matrix.newTrack(f1);
     ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 2);
 }
 
 TEST_F(TrackMatrixTest, add)
 {
-    track_matrix.newTrack(C0, f0);
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C2);
+
+    track_matrix.newTrack(f0);
+
+    track_matrix.add(f0->trackId(), f1);
+    /*  C0   C1   C2   snapshots
+     *
+     *  f0---f1        trk 0
+     */
+    ASSERT_EQ(track_matrix.trackSize(f1->trackId()), (unsigned int) 2);
+    ASSERT_EQ(f1->trackId(), f0->trackId());
+
+    track_matrix.add(f0->trackId(), f2);
+    /*  C0   C1   C2   snapshots
+     *
+     *  f0---f1---f2   trk 0
+     */
+    ASSERT_EQ(track_matrix.trackSize(f2->trackId()), (unsigned int) 3);
+    ASSERT_EQ(f2->trackId(), f0->trackId());
+}
+
+TEST_F(TrackMatrixTest, add2)
+{
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C2);
 
-    track_matrix.add(f0->trackId(), C1, f1);
+    track_matrix.newTrack(f0);
+
+    track_matrix.add(f0, f1);
     /*  C0   C1   C2   snapshots
      *
      *  f0---f1        trk 0
@@ -59,7 +93,7 @@ TEST_F(TrackMatrixTest, add)
     ASSERT_EQ(track_matrix.trackSize(f1->trackId()), (unsigned int) 2);
     ASSERT_EQ(f1->trackId(), f0->trackId());
 
-    track_matrix.add(f0->trackId(), C2, f2);
+    track_matrix.add(f1, f2);
     /*  C0   C1   C2   snapshots
      *
      *  f0---f1---f2   trk 0
@@ -70,8 +104,12 @@ TEST_F(TrackMatrixTest, add)
 
 TEST_F(TrackMatrixTest, numTracks)
 {
-    track_matrix.newTrack(C0, f0);
-    track_matrix.add(f0->trackId(), C1, f1);
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C0);
+
+    track_matrix.newTrack(f0);
+    track_matrix.add(f0->trackId(), f1);
 
     /*  C0   C1   C2   snapshots
      *
@@ -80,16 +118,20 @@ TEST_F(TrackMatrixTest, numTracks)
 
     ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 1);
 
-    track_matrix.add(f0->trackId(), C0, f2);
+    track_matrix.add(f0->trackId(), f2);
 
     ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 1);
 }
 
 TEST_F(TrackMatrixTest, trackSize)
 {
-    track_matrix.newTrack(C0, f0);
-    track_matrix.add(f0->trackId(), C1, f1);
-    track_matrix.newTrack(C0, f2);
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C0);
+
+    track_matrix.newTrack(f0);
+    track_matrix.add(f0->trackId(), f1);
+    track_matrix.newTrack(f2);
 
     /*  C0   C1   C2   snapshots
      *
@@ -111,9 +153,13 @@ TEST_F(TrackMatrixTest, first_last_Feature)
      *      f2      trk 1
      */
 
-    track_matrix.newTrack(C0, f0);
-    track_matrix.add(f0->trackId(), C1, f1);
-    track_matrix.newTrack(C1, f2);
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C1);
+
+    track_matrix.newTrack(f0);
+    track_matrix.add(f0->trackId(), f1);
+    track_matrix.newTrack(f2);
 
     ASSERT_EQ(track_matrix.firstFeature(f0->trackId()), f0);
     ASSERT_EQ(track_matrix.lastFeature (f0->trackId()), f1);
@@ -124,9 +170,13 @@ TEST_F(TrackMatrixTest, first_last_Feature)
 
 TEST_F(TrackMatrixTest, remove_ftr)
 {
-    track_matrix.newTrack(C0, f0);
-    track_matrix.add(f0->trackId(), C1, f1);
-    track_matrix.newTrack(C0, f2);
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C0);
+
+    track_matrix.newTrack(f0);
+    track_matrix.add(f0->trackId(), f1);
+    track_matrix.newTrack(f2);
 
     /*  C0   C1   C2   snapshots
      *
@@ -159,9 +209,13 @@ TEST_F(TrackMatrixTest, remove_ftr)
 
 TEST_F(TrackMatrixTest, remove_trk)
 {
-    track_matrix.newTrack(C0, f0);
-    track_matrix.add(f0->trackId(), C1, f1);
-    track_matrix.newTrack(C0, f2);
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C0);
+
+    track_matrix.newTrack(f0);
+    track_matrix.add(f0->trackId(), f1);
+    track_matrix.newTrack(f2);
 
     /*  C0   C1   C2   snapshots
      *
@@ -182,9 +236,13 @@ TEST_F(TrackMatrixTest, remove_trk)
 
 TEST_F(TrackMatrixTest, remove_snapshot)
 {
-    track_matrix.newTrack(C0, f0);
-    track_matrix.add(f0->trackId(), C1, f1);
-    track_matrix.newTrack(C0, f2);
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C0);
+
+    track_matrix.newTrack(f0);
+    track_matrix.add(f0->trackId(), f1);
+    track_matrix.newTrack(f2);
 
     /*  C0   C1   C2   snapshots
      *
@@ -209,9 +267,13 @@ TEST_F(TrackMatrixTest, remove_snapshot)
 
 TEST_F(TrackMatrixTest, track)
 {
-    track_matrix.newTrack(C0, f0);
-    track_matrix.add(f0->trackId(), C1, f1);
-    track_matrix.newTrack(C0, f2);
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C0);
+
+    track_matrix.newTrack(f0);
+    track_matrix.add(f0->trackId(), f1);
+    track_matrix.newTrack(f2);
 
     /*  C0   C1   C2   snapshots
      *
@@ -233,9 +295,13 @@ TEST_F(TrackMatrixTest, track)
 
 TEST_F(TrackMatrixTest, snapshot)
 {
-    track_matrix.newTrack(C0, f0);
-    track_matrix.add(f0->trackId(), C1, f1);
-    track_matrix.newTrack(C0, f2);
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C0);
+
+    track_matrix.newTrack(f0);
+    track_matrix.add(f0->trackId(), f1);
+    track_matrix.newTrack(f2);
 
     /*  C0   C1   C2   snapshots
      *
@@ -257,9 +323,13 @@ TEST_F(TrackMatrixTest, snapshot)
 
 TEST_F(TrackMatrixTest, trackAsVector)
 {
-    track_matrix.newTrack(C0, f0);
-    track_matrix.add(f0->trackId(), C1, f1);
-    track_matrix.newTrack(C0, f2);
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C0);
+
+    track_matrix.newTrack(f0);
+    track_matrix.add(f0->trackId(), f1);
+    track_matrix.newTrack(f2);
 
     /*  C0   C1   C2   snapshots
      *
@@ -277,9 +347,13 @@ TEST_F(TrackMatrixTest, trackAsVector)
 
 TEST_F(TrackMatrixTest, snapshotAsList)
 {
-    track_matrix.newTrack(C0, f0);
-    track_matrix.add(f0->trackId(), C1, f1);
-    track_matrix.newTrack(C0, f2);
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C0);
+
+    track_matrix.newTrack(f0);
+    track_matrix.add(f0->trackId(), f1);
+    track_matrix.newTrack(f2);
 
     /*  C0   C1   C2   snapshots
      *
@@ -297,11 +371,17 @@ TEST_F(TrackMatrixTest, snapshotAsList)
 
 TEST_F(TrackMatrixTest, matches)
 {
-    track_matrix.newTrack(C0, f0);
-    track_matrix.add(f0->trackId(), C1, f1);
-    track_matrix.add(f0->trackId(), C2, f2);
-    track_matrix.newTrack(C0, f3);
-    track_matrix.add(f3->trackId(), C1, f4);
+    f0->link(C0);
+    f1->link(C1);
+    f2->link(C2);
+    f3->link(C0);
+    f4->link(C1);
+
+    track_matrix.newTrack(f0);
+    track_matrix.add(f0->trackId(), f1);
+    track_matrix.add(f0->trackId(), f2);
+    track_matrix.newTrack(f3);
+    track_matrix.add(f3->trackId(), f4);
 
     /*  C0   C1   C2   C3   snapshots
      *
diff --git a/test/gtest_trajectory.cpp b/test/gtest_trajectory.cpp
index 50a78bc0f..a88b35113 100644
--- a/test/gtest_trajectory.cpp
+++ b/test/gtest_trajectory.cpp
@@ -57,14 +57,10 @@ TEST(TrajectoryBase, ClosestKeyFrame)
     //   1     2     3     4       time stamps
     // --+-----+-----+-----+--->   time
 
-    FrameBasePtr F1 = std::make_shared<FrameBase>(KEY,     1, nullptr, nullptr);
-    FrameBasePtr F2 = std::make_shared<FrameBase>(KEY,     2, nullptr, nullptr);
-    FrameBasePtr F3 = std::make_shared<FrameBase>(AUXILIARY,     3, nullptr, nullptr);
-    FrameBasePtr F4 = std::make_shared<FrameBase>(NON_ESTIMATED, 4, nullptr, nullptr);
-    T->addFrame(F1);
-    T->addFrame(F2);
-    T->addFrame(F3);
-    T->addFrame(F4);
+    FrameBasePtr F1 = P->emplaceFrame(KEY,           Eigen::Vector3s::Zero(),  1);
+    FrameBasePtr F2 = P->emplaceFrame(KEY,           Eigen::Vector3s::Zero(),  2);
+    FrameBasePtr F3 = P->emplaceFrame(AUXILIARY,     Eigen::Vector3s::Zero(),  3);
+    FrameBasePtr F4 = P->emplaceFrame(NON_ESTIMATED, Eigen::Vector3s::Zero(),  4);
 
     FrameBasePtr KF; // closest key-frame queried
 
@@ -98,9 +94,9 @@ TEST(TrajectoryBase, ClosestKeyOrAuxFrame)
     //   1     2     3       time stamps
     // --+-----+-----+--->   time
 
-    FrameBasePtr F1 = FrameBase::emplace<FrameBase>(T, KEY,     1, nullptr, nullptr);
-    FrameBasePtr F2 = FrameBase::emplace<FrameBase>(T, AUXILIARY,     2, nullptr, nullptr);
-    FrameBasePtr F3 = FrameBase::emplace<FrameBase>(T, NON_ESTIMATED, 3, nullptr, nullptr);
+    FrameBasePtr F1 = P->emplaceFrame(KEY,           Eigen::Vector3s::Zero(), 1);
+    FrameBasePtr F2 = P->emplaceFrame(AUXILIARY,     Eigen::Vector3s::Zero(), 2);
+    FrameBasePtr F3 = P->emplaceFrame(NON_ESTIMATED, Eigen::Vector3s::Zero(), 3);
 
     FrameBasePtr KF; // closest key-frame queried
 
@@ -134,30 +130,24 @@ TEST(TrajectoryBase, Add_Remove_Frame)
     //   1     2     3       time stamps
     // --+-----+-----+--->   time
 
-    FrameBasePtr F1 = std::make_shared<FrameBase>(KEY,     1, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); // 2 non-fixed
-    FrameBasePtr F2 = std::make_shared<FrameBase>(KEY,     2, make_shared<StateBlock>(2), make_shared<StateBlock>(1, true)); // 1 fixed, 1 not
-    FrameBasePtr F3 = std::make_shared<FrameBase>(NON_ESTIMATED, 3, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); // non-key-frame
-
-    // FrameBasePtr f1 = FrameBase::emplace<FrameBase>(T, KEY_FRAME,     1, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); // 2 non-fixed
-    // FrameBasePtr f2 = FrameBase::emplace<FrameBase>(T, KEY_FRAME,     2, make_shared<StateBlock>(2), make_shared<StateBlock>(1, true)); // 1 fixed, 1 not
-    // FrameBasePtr f3 = FrameBase::emplace<FrameBase>(T, NON_KEY_FRAME, 3, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); // non-key-frame
-
     std::cout << __LINE__ << std::endl;
 
-    // add frames and keyframes
-    F1->link(T);
+    // add F1
+    FrameBasePtr F1 = P->emplaceFrame(KEY, Eigen::Vector3s::Zero(), 1); // 2 non-fixed
     if (debug) P->print(2,0,0,0);
     ASSERT_EQ(T->getFrameList().             size(), (SizeStd) 1);
     ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) 2);
     std::cout << __LINE__ << std::endl;
 
-    F2->link(T);
+    // add F2
+    FrameBasePtr F2 = P->emplaceFrame(KEY, Eigen::Vector3s::Zero(), 2); // 1 fixed, 1 not
     if (debug) P->print(2,0,0,0);
     ASSERT_EQ(T->getFrameList().             size(), (SizeStd) 2);
     ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) 4);
     std::cout << __LINE__ << std::endl;
 
-    F3->link(T);
+    // add F3
+    FrameBasePtr F3 = P->emplaceFrame(NON_ESTIMATED, Eigen::Vector3s::Zero(), 3);
     if (debug) P->print(2,0,0,0);
     ASSERT_EQ(T->getFrameList().             size(), (SizeStd) 3);
     ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) 4);
@@ -212,24 +202,20 @@ TEST(TrajectoryBase, KeyFramesAreSorted)
     //   1     2     3       time stamps
     // --+-----+-----+--->   time
 
-    FrameBasePtr F1 = std::make_shared<FrameBase>(KEY,     1, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); // 2 non-fixed
-    FrameBasePtr F2 = std::make_shared<FrameBase>(KEY,     2, make_shared<StateBlock>(2), make_shared<StateBlock>(1, true)); // 1 fixed, 1 not
-    FrameBasePtr F3 = std::make_shared<FrameBase>(NON_ESTIMATED, 3, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); // non-key-frame
-
     // add frames and keyframes in random order --> keyframes must be sorted after that
-    F2->link(T);
+    FrameBasePtr F2 = P->emplaceFrame(KEY, Eigen::Vector3s::Zero(), 2);
     if (debug) P->print(2,0,0,0);
     ASSERT_EQ(T->getLastFrame()         ->id(), F2->id());
     ASSERT_EQ(T->getLastKeyOrAuxFrame()->id(), F2->id());
     ASSERT_EQ(T->getLastKeyFrame()      ->id(), F2->id());
 
-    F3->link(T);
+    FrameBasePtr F3 = P->emplaceFrame(NON_ESTIMATED, Eigen::Vector3s::Zero(), 3); // non-key-frame
     if (debug) P->print(2,0,0,0);
     ASSERT_EQ(T->getLastFrame()         ->id(), F3->id());
     ASSERT_EQ(T->getLastKeyOrAuxFrame()->id(), F2->id());
     ASSERT_EQ(T->getLastKeyFrame()      ->id(), F2->id());
 
-    F1->link(T);
+    FrameBasePtr F1 = P->emplaceFrame(KEY, Eigen::Vector3s::Zero(), 1);
     if (debug) P->print(2,0,0,0);
     ASSERT_EQ(T->getLastFrame()         ->id(), F3->id());
     ASSERT_EQ(T->getLastKeyOrAuxFrame()->id(), F2->id());
-- 
GitLab