From 7a0a5a093a8e2cfa03bd6f3142da491d0eea9260 Mon Sep 17 00:00:00 2001 From: joanvallve <jvallve@iri.upc.edu> Date: Tue, 5 Oct 2021 18:16:37 +0200 Subject: [PATCH] working on processor gtest --- src/processor/processor_fix_wing_model.cpp | 3 + test/CMakeLists.txt | 4 + test/gtest_processor_fix_wing_model.cpp | 157 ++++----------------- 3 files changed, 36 insertions(+), 128 deletions(-) diff --git a/src/processor/processor_fix_wing_model.cpp b/src/processor/processor_fix_wing_model.cpp index 869bbc087..7c12e90f8 100644 --- a/src/processor/processor_fix_wing_model.cpp +++ b/src/processor/processor_fix_wing_model.cpp @@ -34,6 +34,9 @@ void ProcessorFixWingModel::processKeyFrame(FrameBasePtr _keyframe_ptr, const do if (_keyframe_ptr->getV()->isFixed()) return; + if (_keyframe_ptr->getFactorOf(shared_from_this()) != nullptr) + return; + // emplace capture auto cap = CaptureBase::emplace<CaptureBase>(_keyframe_ptr, "CaptureBase", _keyframe_ptr->getTimeStamp(), getSensor()); diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a6305564d..46964ac57 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -234,6 +234,10 @@ wolf_add_gtest(gtest_param_prior gtest_param_prior.cpp) target_link_libraries(gtest_param_prior ${PLUGIN_NAME}) # ProcessorDiffDriveSelfcalib class test +wolf_add_gtest(gtest_processor_fix_wing_model gtest_processor_fix_wing_model.cpp) +target_link_libraries(gtest_processor_fix_wing_model ${PLUGIN_NAME}) + +# ProcessorFixWingModel class test wolf_add_gtest(gtest_processor_diff_drive gtest_processor_diff_drive.cpp) target_link_libraries(gtest_processor_diff_drive ${PLUGIN_NAME}) diff --git a/test/gtest_processor_fix_wing_model.cpp b/test/gtest_processor_fix_wing_model.cpp index 1dd0fba63..61dc64445 100644 --- a/test/gtest_processor_fix_wing_model.cpp +++ b/test/gtest_processor_fix_wing_model.cpp @@ -55,155 +55,56 @@ TEST_F(ProcessorFixWingModelTest, setup) EXPECT_TRUE(problem->check()); } -TEST_F(ProcessorFixWingModelTest, frame_stored) +TEST_F(ProcessorFixWingModelTest, keyFrameCallback) { // new frame - auto frm1 = emplaceFrame(1, Vector3d::Zero()); - - // keyframecallback - problem->keyFrameCallback(frm1, nullptr, 0.5); - - EXPECT_EQ(processor->getNStoredFrames(), 1); - EXPECT_EQ(processor->getNStoredCaptures(), 0); -} - -TEST_F(ProcessorFixWingModelTest, capture_stored) -{ - // new capture - auto cap1 = createCapture(1); - - // captureCallback - processor->captureCallback(cap1); - - EXPECT_EQ(processor->getNStoredFrames(), 0); - EXPECT_EQ(processor->getNStoredCaptures(), 1); -} - -TEST_F(ProcessorFixWingModelTest, captureCallbackCase1) -{ - // emplace frame and capture - auto frm1 = emplaceFrame(1, Vector3d::Zero()); - auto cap1 = emplaceCapture(frm1); - - // captureCallback - processor->captureCallback(cap1); - - EXPECT_EQ(cap1->getFeatureList().size(), 1); // capture processed by the processor - EXPECT_EQ(processor->getNStoredFrames(), 0); - EXPECT_EQ(processor->getNStoredCaptures(), 0); -} - -TEST_F(ProcessorFixWingModelTest, captureCallbackCase2) -{ - // new frame - auto frm1 = emplaceFrame(1, Vector3d::Zero()); - - // new capture - auto cap1 = createCapture(1); - - // keyframecallback - problem->keyFrameCallback(frm1, nullptr, 0.5); - - // captureCallback - processor->captureCallback(cap1); - - EXPECT_EQ(cap1->getFrame(), frm1); // capture processed by the processor - EXPECT_EQ(cap1->getFeatureList().size(), 1); // capture processed by the processor - EXPECT_EQ(processor->getNStoredFrames(), 0); - EXPECT_EQ(processor->getNStoredCaptures(), 0); -} - -TEST_F(ProcessorFixWingModelTest, captureCallbackCase3) -{ - // new frame - auto frm1 = emplaceFrame(1, Vector3d::Zero()); - // new capture - auto cap1 = createCapture(2); + auto frm1 = emplaceFrame(1, (Vector10d() << 0,0,0,0,0,0,1,1,0,0).finished()); // keyframecallback problem->keyFrameCallback(frm1, nullptr, 0.5); - // captureCallback - processor->captureCallback(cap1); - - EXPECT_TRUE(cap1->getFrame() == nullptr); - EXPECT_EQ(cap1->getFeatureList().size(), 0); - EXPECT_EQ(processor->getNStoredFrames(), 1); - EXPECT_EQ(processor->getNStoredCaptures(), 1); -} + // check one capture + ASSERT_EQ(frm1->getCapturesOf(sensor).size(), 1); + auto cap = frm1->getCaptureOf(sensor); + ASSERT_TRUE(cap != nullptr); -TEST_F(ProcessorFixWingModelTest, keyFrameCallbackCase1) -{ - // emplace frame and capture - auto frm1 = emplaceFrame(1, Vector3d::Zero()); - auto cap1 = emplaceCapture(frm1); - - // keyframecallback - problem->keyFrameCallback(frm1, nullptr, 0.5); + // check one feature + ASSERT_EQ(cap->getFeatureList().size(), 1); - EXPECT_EQ(cap1->getFeatureList().size(), 1); // capture processed by the processor - EXPECT_EQ(processor->getNStoredFrames(), 0); - EXPECT_EQ(processor->getNStoredCaptures(), 0); + // check one factor + auto fac = frm1->getFactorOf(processor, "FactorVelocityLocalDirection3d"); + ASSERT_TRUE(fac != nullptr); + ASSERT_TRUE(fac->getFeature() != nullptr); + ASSERT_TRUE(fac->getCapture() == frm1->getCaptureOf(sensor)); } -TEST_F(ProcessorFixWingModelTest, keyFrameCallbackCase2) +TEST_F(ProcessorFixWingModelTest, keyFrameCallbackRepeated) { // new frame - auto frm1 = emplaceFrame(1, Vector3d::Zero()); - // new capture - auto cap1 = createCapture(1); - - // captureCallback - processor->captureCallback(cap1); + auto frm1 = emplaceFrame(1, (Vector10d() << 0,0,0,0,0,0,1,1,0,0).finished()); // keyframecallback problem->keyFrameCallback(frm1, nullptr, 0.5); - EXPECT_EQ(cap1->getFrame(), frm1); // capture processed by the processor - EXPECT_EQ(cap1->getFeatureList().size(), 1); // capture processed by the processor - EXPECT_EQ(processor->getNStoredFrames(), 0); - EXPECT_EQ(processor->getNStoredCaptures(), 0); -} - -TEST_F(ProcessorFixWingModelTest, keyFrameCallbackCase3) -{ - // new frame - auto frm1 = emplaceFrame(2, Vector3d::Zero()); - // new capture - auto cap1 = createCapture(1); - - // captureCallback - processor->captureCallback(cap1); - - // keyframecallback + // repeated keyframecallback problem->keyFrameCallback(frm1, nullptr, 0.5); - EXPECT_TRUE(cap1->getFrame() == nullptr); - EXPECT_EQ(cap1->getFeatureList().size(), 0); - EXPECT_EQ(processor->getNStoredFrames(), 1); - EXPECT_EQ(processor->getNStoredCaptures(), 1); -} + // check one capture + ASSERT_EQ(frm1->getCapturesOf(sensor).size(), 1); + auto cap = frm1->getCaptureOf(sensor); + ASSERT_TRUE(cap != nullptr); -TEST_F(ProcessorFixWingModelTest, keyFrameCallbackCase4) -{ - // new frame - auto frm1 = emplaceFrame(1, Vector3d::Zero()); - // new capture - auto cap1 = createCapture(2); - - // captureCallback - processor->captureCallback(cap1); + // check one feature + ASSERT_EQ(cap->getFeatureList().size(), 1); - // keyframecallback - problem->keyFrameCallback(frm1, nullptr, 0.5); - - EXPECT_TRUE(cap1->getFrame() == nullptr); - EXPECT_EQ(cap1->getFeatureList().size(), 0); - EXPECT_EQ(processor->getNStoredFrames(), 0); - EXPECT_EQ(processor->getNStoredCaptures(), 1); + // check one factor + auto fac = frm1->getFactorOf(processor, "FactorVelocityLocalDirection3d"); + ASSERT_TRUE(fac != nullptr); + ASSERT_TRUE(fac->getFeature() != nullptr); + ASSERT_TRUE(fac->getCapture() == frm1->getCaptureOf(sensor)); } -TEST_F(ProcessorFixWingModelTest, captureCallbackMatch) +/*TEST_F(ProcessorFixWingModelTest, captureCallbackMatch) { // new frame auto frm1 = emplaceFrame(1, Vector3d::Zero()); @@ -305,7 +206,7 @@ TEST_F(ProcessorFixWingModelTest, emplaceFactors) EXPECT_EQ(cap4->getFeatureList().front()->getFactorList().size(), 1); EXPECT_EQ(cap1->getFrame()->getConstrainedByList().front(), cap4->getFeatureList().front()->getFactorList().front()); -} +}*/ int main(int argc, char **argv) { -- GitLab