Skip to content
Snippets Groups Projects
Commit 87a026c2 authored by Joan Vallvé Navarro's avatar Joan Vallvé Navarro
Browse files

extended API for moving between frames

parent 085bdfde
No related branches found
No related tags found
1 merge request!443Resolve "Work on const / non-const in wolf base classes"
Pipeline #9672 failed
...@@ -122,10 +122,10 @@ class FrameBase : public NodeBase, public HasStateBlocks, public std::enable_sha ...@@ -122,10 +122,10 @@ class FrameBase : public NodeBase, public HasStateBlocks, public std::enable_sha
TrajectoryBaseConstPtr getTrajectory() const; TrajectoryBaseConstPtr getTrajectory() const;
TrajectoryBasePtr getTrajectory(); TrajectoryBasePtr getTrajectory();
FrameBaseConstPtr getPreviousFrame() const; FrameBaseConstPtr getPreviousFrame(const unsigned int& i = 1) const;
FrameBaseConstPtr getNextFrame() const; FrameBaseConstPtr getNextFrame(const unsigned int& i = 1) const;
FrameBasePtr getPreviousFrame(); FrameBasePtr getPreviousFrame(const unsigned int& i = 1);
FrameBasePtr getNextFrame(); FrameBasePtr getNextFrame(const unsigned int& i = 1);
CaptureBaseConstPtrList getCaptureList() const; CaptureBaseConstPtrList getCaptureList() const;
CaptureBasePtrList getCaptureList(); CaptureBasePtrList getCaptureList();
......
...@@ -59,10 +59,10 @@ class TrajectoryBase : public NodeBase, public std::enable_shared_from_this<Traj ...@@ -59,10 +59,10 @@ class TrajectoryBase : public NodeBase, public std::enable_shared_from_this<Traj
FrameBasePtr getLastFrame(); FrameBasePtr getLastFrame();
FrameBaseConstPtr getFirstFrame() const; FrameBaseConstPtr getFirstFrame() const;
FrameBasePtr getFirstFrame(); FrameBasePtr getFirstFrame();
FrameBaseConstPtr getNextFrame(FrameBaseConstPtr) const; FrameBaseConstPtr getNextFrame(FrameBaseConstPtr, const unsigned int& i = 1) const;
FrameBasePtr getNextFrame(FrameBasePtr); FrameBasePtr getNextFrame(FrameBasePtr, const unsigned int& i = 1);
FrameBaseConstPtr getPreviousFrame(FrameBaseConstPtr) const; FrameBaseConstPtr getPreviousFrame(FrameBaseConstPtr, const unsigned int& i = 1) const;
FrameBasePtr getPreviousFrame(FrameBasePtr); FrameBasePtr getPreviousFrame(FrameBasePtr, const unsigned int& i = 1);
TimeStamp closestTimeStampToTimeStamp(const TimeStamp& _ts) const; TimeStamp closestTimeStampToTimeStamp(const TimeStamp& _ts) const;
FrameBaseConstPtr closestFrameToTimeStamp(const TimeStamp& _ts) const; FrameBaseConstPtr closestFrameToTimeStamp(const TimeStamp& _ts) const;
FrameBasePtr closestFrameToTimeStamp(const TimeStamp& _ts); FrameBasePtr closestFrameToTimeStamp(const TimeStamp& _ts);
......
...@@ -156,32 +156,32 @@ bool FrameBase::getCovariance(Eigen::MatrixXd& _cov) const ...@@ -156,32 +156,32 @@ bool FrameBase::getCovariance(Eigen::MatrixXd& _cov) const
return getProblem()->getFrameCovariance(shared_from_this(), _cov); return getProblem()->getFrameCovariance(shared_from_this(), _cov);
} }
FrameBaseConstPtr FrameBase::getPreviousFrame() const FrameBaseConstPtr FrameBase::getPreviousFrame(const unsigned int& i) const
{ {
assert(getTrajectory() != nullptr && "This Frame is not linked to any trajectory"); assert(getTrajectory() != nullptr && "This Frame is not linked to any trajectory");
return getTrajectory()->getPreviousFrame(shared_from_this()); return getTrajectory()->getPreviousFrame(shared_from_this(), i);
} }
FrameBasePtr FrameBase::getPreviousFrame() FrameBasePtr FrameBase::getPreviousFrame(const unsigned int& i)
{ {
assert(getTrajectory() != nullptr && "This Frame is not linked to any trajectory"); assert(getTrajectory() != nullptr && "This Frame is not linked to any trajectory");
return getTrajectory()->getPreviousFrame(shared_from_this()); return getTrajectory()->getPreviousFrame(shared_from_this(), i);
} }
FrameBaseConstPtr FrameBase::getNextFrame() const FrameBaseConstPtr FrameBase::getNextFrame(const unsigned int& i) const
{ {
assert(getTrajectory() != nullptr && "This Frame is not linked to any trajectory"); assert(getTrajectory() != nullptr && "This Frame is not linked to any trajectory");
return getTrajectory()->getNextFrame(shared_from_this()); return getTrajectory()->getNextFrame(shared_from_this(), i);
} }
FrameBasePtr FrameBase::getNextFrame() FrameBasePtr FrameBase::getNextFrame(const unsigned int& i)
{ {
assert(getTrajectory() != nullptr && "This Frame is not linked to any trajectory"); assert(getTrajectory() != nullptr && "This Frame is not linked to any trajectory");
return getTrajectory()->getNextFrame(shared_from_this()); return getTrajectory()->getNextFrame(shared_from_this(), i);
} }
CaptureBasePtr FrameBase::addCapture(CaptureBasePtr _capt_ptr) CaptureBasePtr FrameBase::addCapture(CaptureBasePtr _capt_ptr)
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
//--------LICENSE_END-------- //--------LICENSE_END--------
#include "core/trajectory/trajectory_base.h" #include "core/trajectory/trajectory_base.h"
#include "core/frame/frame_base.h" #include "core/frame/frame_base.h"
#include <iterator>
namespace wolf { namespace wolf {
...@@ -121,48 +122,52 @@ FrameBasePtr TrajectoryBase::closestFrameToTimeStamp(const TimeStamp& _ts) ...@@ -121,48 +122,52 @@ FrameBasePtr TrajectoryBase::closestFrameToTimeStamp(const TimeStamp& _ts)
return nullptr; return nullptr;
} }
FrameBaseConstPtr TrajectoryBase::getNextFrame(FrameBaseConstPtr _frame) const FrameBaseConstPtr TrajectoryBase::getNextFrame(FrameBaseConstPtr _frame, const unsigned int& i) const
{ {
auto frame_it = frame_const_map_.find(_frame->getTimeStamp()); auto frame_it = frame_const_map_.find(_frame->getTimeStamp());
WOLF_WARN_COND(frame_it == frame_const_map_.end(), "Frame not found in the frame map!"); WOLF_WARN_COND(frame_it == frame_const_map_.end(), "Frame not found in the frame map!");
if (frame_it == frame_const_map_.end() or std::next(frame_it) == frame_const_map_.end()) if (frame_it == frame_const_map_.end() or
std::distance(frame_it, frame_const_map_.end()) <= i)
return nullptr; return nullptr;
return std::next(frame_it)->second; return std::next(frame_it,i)->second;
} }
FrameBasePtr TrajectoryBase::getNextFrame(FrameBasePtr _frame) FrameBasePtr TrajectoryBase::getNextFrame(FrameBasePtr _frame, const unsigned int& i)
{ {
auto frame_it = frame_map_.find(_frame->getTimeStamp()); auto frame_it = frame_map_.find(_frame->getTimeStamp());
WOLF_WARN_COND(frame_it == frame_map_.end(), "Frame not found in the frame map!"); WOLF_WARN_COND(frame_it == frame_map_.end(), "Frame not found in the frame map!");
if (frame_it == frame_map_.end() or std::next(frame_it) == frame_map_.end()) if (frame_it == frame_map_.end() or
std::distance(frame_it, frame_map_.end()) <= i)
return nullptr; return nullptr;
return std::next(frame_it)->second; return std::next(frame_it,i)->second;
} }
FrameBaseConstPtr TrajectoryBase::getPreviousFrame(FrameBaseConstPtr _frame) const FrameBaseConstPtr TrajectoryBase::getPreviousFrame(FrameBaseConstPtr _frame, const unsigned int& i) const
{ {
auto frame_it = frame_const_map_.find(_frame->getTimeStamp()); auto frame_it = frame_const_map_.find(_frame->getTimeStamp());
WOLF_WARN_COND(frame_it == frame_const_map_.end(), "Frame not found in the frame map!"); WOLF_WARN_COND(frame_it == frame_const_map_.end(), "Frame not found in the frame map!");
if (frame_it == frame_const_map_.end() or frame_it == frame_const_map_.begin()) if (frame_it == frame_const_map_.end() or
std::distance(frame_const_map_.begin(), frame_it) < i)
return nullptr; return nullptr;
return std::prev(frame_it)->second; return std::prev(frame_it,i)->second;
} }
FrameBasePtr TrajectoryBase::getPreviousFrame(FrameBasePtr _frame) FrameBasePtr TrajectoryBase::getPreviousFrame(FrameBasePtr _frame, const unsigned int& i)
{ {
auto frame_it = frame_map_.find(_frame->getTimeStamp()); auto frame_it = frame_map_.find(_frame->getTimeStamp());
WOLF_WARN_COND(frame_it == frame_map_.end(), "Frame not found in the frame map!"); WOLF_WARN_COND(frame_it == frame_map_.end(), "Frame not found in the frame map!");
if (frame_it == frame_map_.end() or frame_it == frame_map_.begin()) if (frame_it == frame_map_.end() or
std::distance(frame_map_.begin(), frame_it) < i)
return nullptr; return nullptr;
return std::prev(frame_it)->second; return std::prev(frame_it,i)->second;
} }
......
...@@ -46,10 +46,8 @@ void TreeManagerSlidingWindowDualRate::keyFrameCallback(FrameBasePtr _frame) ...@@ -46,10 +46,8 @@ void TreeManagerSlidingWindowDualRate::keyFrameCallback(FrameBasePtr _frame)
if (count_frames_ != 0) if (count_frames_ != 0)
{ {
WOLF_DEBUG("TreeManagerSlidingWindow removing the oldest of recent frames"); WOLF_DEBUG("TreeManagerSlidingWindow removing the oldest of recent frames");
FrameBasePtr remove_recent_frame = std::next(getProblem()->getTrajectory()->getFrameMap().rbegin(), FrameBasePtr remove_recent_frame = getProblem()->getTrajectory()->getLastFrame()->getPreviousFrame(params_swdr_->n_frames_recent);
params_swdr_->n_frames_recent)->second; FrameBasePtr keep_recent_frame = remove_recent_frame->getNextFrame();
FrameBasePtr keep_recent_frame = std::next(getProblem()->getTrajectory()->getFrameMap().rbegin(),
params_swdr_->n_frames_recent - 1)->second;
// compose motion captures for all processors motion // compose motion captures for all processors motion
for (auto motion_provider_pair : getProblem()->getMotionProviderMap()) for (auto motion_provider_pair : getProblem()->getMotionProviderMap())
......
...@@ -140,25 +140,15 @@ TEST(FrameBase, Frames) ...@@ -140,25 +140,15 @@ TEST(FrameBase, Frames)
intrinsics_odo.k_rot_to_rot = 1; intrinsics_odo.k_rot_to_rot = 1;
auto S = SensorBase::emplace<SensorOdom2d>(P->getHardware(), Vector3d::Zero(), intrinsics_odo); auto S = SensorBase::emplace<SensorOdom2d>(P->getHardware(), Vector3d::Zero(), intrinsics_odo);
auto F0 = FrameBase::emplace<FrameBase>(T, 0, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); auto F0 = FrameBase::emplace<FrameBase>(T, 0, make_shared<StateBlock>(2), make_shared<StateBlock>(1));
P->print(2,0,0,0);
auto F1 = FrameBase::emplace<FrameBase>(T, 1, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); auto F1 = FrameBase::emplace<FrameBase>(T, 1, make_shared<StateBlock>(2), make_shared<StateBlock>(1));
P->print(2,0,0,0);
auto F2 = FrameBase::emplace<FrameBase>(T, 2, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); auto F2 = FrameBase::emplace<FrameBase>(T, 2, make_shared<StateBlock>(2), make_shared<StateBlock>(1));
P->print(2,0,0,0);
auto F3 = FrameBase::emplace<FrameBase>(T, 3, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); auto F3 = FrameBase::emplace<FrameBase>(T, 3, make_shared<StateBlock>(2), make_shared<StateBlock>(1));
P->print(2,0,0,0);
auto F4 = FrameBase::emplace<FrameBase>(T, 4, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); auto F4 = FrameBase::emplace<FrameBase>(T, 4, make_shared<StateBlock>(2), make_shared<StateBlock>(1));
P->print(2,0,0,0);
auto F5 = FrameBase::emplace<FrameBase>(T, 5, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); auto F5 = FrameBase::emplace<FrameBase>(T, 5, make_shared<StateBlock>(2), make_shared<StateBlock>(1));
P->print(2,0,0,0);
auto F6 = FrameBase::emplace<FrameBase>(T, 6, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); auto F6 = FrameBase::emplace<FrameBase>(T, 6, make_shared<StateBlock>(2), make_shared<StateBlock>(1));
P->print(2,0,0,0);
auto F7 = FrameBase::emplace<FrameBase>(T, 7, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); auto F7 = FrameBase::emplace<FrameBase>(T, 7, make_shared<StateBlock>(2), make_shared<StateBlock>(1));
P->print(2,0,0,0);
auto F8 = FrameBase::emplace<FrameBase>(T, 8, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); auto F8 = FrameBase::emplace<FrameBase>(T, 8, make_shared<StateBlock>(2), make_shared<StateBlock>(1));
P->print(2,0,0,0);
auto F9 = FrameBase::emplace<FrameBase>(T, 9, make_shared<StateBlock>(2), make_shared<StateBlock>(1)); auto F9 = FrameBase::emplace<FrameBase>(T, 9, make_shared<StateBlock>(2), make_shared<StateBlock>(1));
P->print(2,0,0,0);
// tree is now consistent // tree is now consistent
ASSERT_TRUE(P->check(0)); ASSERT_TRUE(P->check(0));
...@@ -180,28 +170,226 @@ TEST(FrameBase, Frames) ...@@ -180,28 +170,226 @@ TEST(FrameBase, Frames)
ASSERT_EQ(F9, T->closestFrameToTimeStamp(9)); ASSERT_EQ(F9, T->closestFrameToTimeStamp(9));
// Next frame // Next frame
EXPECT_EQ(F1->id(), F0->getNextFrame()->id()); EXPECT_EQ(F1, F0->getNextFrame(1));
EXPECT_EQ(F2->id(), F1->getNextFrame()->id()); EXPECT_EQ(F2, F0->getNextFrame(2));
EXPECT_EQ(F3->id(), F2->getNextFrame()->id()); EXPECT_EQ(F3, F0->getNextFrame(3));
EXPECT_EQ(F4->id(), F3->getNextFrame()->id()); EXPECT_EQ(F4, F0->getNextFrame(4));
EXPECT_EQ(F5->id(), F4->getNextFrame()->id()); EXPECT_EQ(F5, F0->getNextFrame(5));
EXPECT_EQ(F6->id(), F5->getNextFrame()->id()); EXPECT_EQ(F6, F0->getNextFrame(6));
EXPECT_EQ(F7->id(), F6->getNextFrame()->id()); EXPECT_EQ(F7, F0->getNextFrame(7));
EXPECT_EQ(F8->id(), F7->getNextFrame()->id()); EXPECT_EQ(F8, F0->getNextFrame(8));
EXPECT_EQ(F9->id(), F8->getNextFrame()->id()); EXPECT_EQ(F9, F0->getNextFrame(9));
EXPECT_EQ(nullptr, F9->getNextFrame()); EXPECT_EQ(nullptr, F0->getNextFrame(10));
EXPECT_EQ(F2, F1->getNextFrame(1));
EXPECT_EQ(F3, F1->getNextFrame(2));
EXPECT_EQ(F4, F1->getNextFrame(3));
EXPECT_EQ(F5, F1->getNextFrame(4));
EXPECT_EQ(F6, F1->getNextFrame(5));
EXPECT_EQ(F7, F1->getNextFrame(6));
EXPECT_EQ(F8, F1->getNextFrame(7));
EXPECT_EQ(F9, F1->getNextFrame(8));
EXPECT_EQ(nullptr, F1->getNextFrame(9));
EXPECT_EQ(nullptr, F1->getNextFrame(10));
EXPECT_EQ(F3, F2->getNextFrame(1));
EXPECT_EQ(F4, F2->getNextFrame(2));
EXPECT_EQ(F5, F2->getNextFrame(3));
EXPECT_EQ(F6, F2->getNextFrame(4));
EXPECT_EQ(F7, F2->getNextFrame(5));
EXPECT_EQ(F8, F2->getNextFrame(6));
EXPECT_EQ(F9, F2->getNextFrame(7));
EXPECT_EQ(nullptr, F2->getNextFrame(8));
EXPECT_EQ(nullptr, F2->getNextFrame(9));
EXPECT_EQ(nullptr, F2->getNextFrame(10));
EXPECT_EQ(F4, F3->getNextFrame(1));
EXPECT_EQ(F5, F3->getNextFrame(2));
EXPECT_EQ(F6, F3->getNextFrame(3));
EXPECT_EQ(F7, F3->getNextFrame(4));
EXPECT_EQ(F8, F3->getNextFrame(5));
EXPECT_EQ(F9, F3->getNextFrame(6));
EXPECT_EQ(nullptr, F3->getNextFrame(7));
EXPECT_EQ(nullptr, F3->getNextFrame(8));
EXPECT_EQ(nullptr, F3->getNextFrame(9));
EXPECT_EQ(nullptr, F3->getNextFrame(10));
EXPECT_EQ(F5, F4->getNextFrame(1));
EXPECT_EQ(F6, F4->getNextFrame(2));
EXPECT_EQ(F7, F4->getNextFrame(3));
EXPECT_EQ(F8, F4->getNextFrame(4));
EXPECT_EQ(F9, F4->getNextFrame(5));
EXPECT_EQ(nullptr, F4->getNextFrame(6));
EXPECT_EQ(nullptr, F4->getNextFrame(7));
EXPECT_EQ(nullptr, F4->getNextFrame(8));
EXPECT_EQ(nullptr, F4->getNextFrame(9));
EXPECT_EQ(nullptr, F4->getNextFrame(10));
EXPECT_EQ(F6, F5->getNextFrame(1));
EXPECT_EQ(F7, F5->getNextFrame(2));
EXPECT_EQ(F8, F5->getNextFrame(3));
EXPECT_EQ(F9, F5->getNextFrame(4));
EXPECT_EQ(nullptr, F5->getNextFrame(5));
EXPECT_EQ(nullptr, F5->getNextFrame(6));
EXPECT_EQ(nullptr, F5->getNextFrame(7));
EXPECT_EQ(nullptr, F5->getNextFrame(8));
EXPECT_EQ(nullptr, F5->getNextFrame(9));
EXPECT_EQ(nullptr, F5->getNextFrame(10));
EXPECT_EQ(F7, F6->getNextFrame(1));
EXPECT_EQ(F8, F6->getNextFrame(2));
EXPECT_EQ(F9, F6->getNextFrame(3));
EXPECT_EQ(nullptr, F6->getNextFrame(4));
EXPECT_EQ(nullptr, F6->getNextFrame(5));
EXPECT_EQ(nullptr, F6->getNextFrame(6));
EXPECT_EQ(nullptr, F6->getNextFrame(7));
EXPECT_EQ(nullptr, F6->getNextFrame(8));
EXPECT_EQ(nullptr, F6->getNextFrame(9));
EXPECT_EQ(nullptr, F6->getNextFrame(10));
EXPECT_EQ(F8, F7->getNextFrame(1));
EXPECT_EQ(F9, F7->getNextFrame(2));
EXPECT_EQ(nullptr, F7->getNextFrame(3));
EXPECT_EQ(nullptr, F7->getNextFrame(4));
EXPECT_EQ(nullptr, F7->getNextFrame(5));
EXPECT_EQ(nullptr, F7->getNextFrame(6));
EXPECT_EQ(nullptr, F7->getNextFrame(7));
EXPECT_EQ(nullptr, F7->getNextFrame(8));
EXPECT_EQ(nullptr, F7->getNextFrame(9));
EXPECT_EQ(nullptr, F7->getNextFrame(10));
EXPECT_EQ(F9, F8->getNextFrame(1));
EXPECT_EQ(nullptr, F8->getNextFrame(2));
EXPECT_EQ(nullptr, F8->getNextFrame(3));
EXPECT_EQ(nullptr, F8->getNextFrame(4));
EXPECT_EQ(nullptr, F8->getNextFrame(5));
EXPECT_EQ(nullptr, F8->getNextFrame(6));
EXPECT_EQ(nullptr, F8->getNextFrame(7));
EXPECT_EQ(nullptr, F8->getNextFrame(8));
EXPECT_EQ(nullptr, F8->getNextFrame(9));
EXPECT_EQ(nullptr, F8->getNextFrame(10));
EXPECT_EQ(nullptr, F9->getNextFrame(1));
EXPECT_EQ(nullptr, F9->getNextFrame(2));
EXPECT_EQ(nullptr, F9->getNextFrame(3));
EXPECT_EQ(nullptr, F9->getNextFrame(4));
EXPECT_EQ(nullptr, F9->getNextFrame(5));
EXPECT_EQ(nullptr, F9->getNextFrame(6));
EXPECT_EQ(nullptr, F9->getNextFrame(7));
EXPECT_EQ(nullptr, F9->getNextFrame(8));
EXPECT_EQ(nullptr, F9->getNextFrame(9));
EXPECT_EQ(nullptr, F9->getNextFrame(10));
// Prev frame // Prev frame
EXPECT_EQ(nullptr, F0->getPreviousFrame()); EXPECT_EQ(F8, F9->getPreviousFrame(1));
EXPECT_EQ(F0, F1->getPreviousFrame()); EXPECT_EQ(F7, F9->getPreviousFrame(2));
EXPECT_EQ(F1, F2->getPreviousFrame()); EXPECT_EQ(F6, F9->getPreviousFrame(3));
EXPECT_EQ(F2, F3->getPreviousFrame()); EXPECT_EQ(F5, F9->getPreviousFrame(4));
EXPECT_EQ(F3, F4->getPreviousFrame()); EXPECT_EQ(F4, F9->getPreviousFrame(5));
EXPECT_EQ(F4, F5->getPreviousFrame()); EXPECT_EQ(F3, F9->getPreviousFrame(6));
EXPECT_EQ(F5, F6->getPreviousFrame()); EXPECT_EQ(F2, F9->getPreviousFrame(7));
EXPECT_EQ(F6, F7->getPreviousFrame()); EXPECT_EQ(F1, F9->getPreviousFrame(8));
EXPECT_EQ(F7, F8->getPreviousFrame()); EXPECT_EQ(F0, F9->getPreviousFrame(9));
EXPECT_EQ(F8, F9->getPreviousFrame()); EXPECT_EQ(nullptr, F9->getPreviousFrame(10));
EXPECT_EQ(F7, F8->getPreviousFrame(1));
EXPECT_EQ(F6, F8->getPreviousFrame(2));
EXPECT_EQ(F5, F8->getPreviousFrame(3));
EXPECT_EQ(F4, F8->getPreviousFrame(4));
EXPECT_EQ(F3, F8->getPreviousFrame(5));
EXPECT_EQ(F2, F8->getPreviousFrame(6));
EXPECT_EQ(F1, F8->getPreviousFrame(7));
EXPECT_EQ(F0, F8->getPreviousFrame(8));
EXPECT_EQ(nullptr, F8->getPreviousFrame(9));
EXPECT_EQ(nullptr, F8->getPreviousFrame(10));
EXPECT_EQ(F6, F7->getPreviousFrame(1));
EXPECT_EQ(F5, F7->getPreviousFrame(2));
EXPECT_EQ(F4, F7->getPreviousFrame(3));
EXPECT_EQ(F3, F7->getPreviousFrame(4));
EXPECT_EQ(F2, F7->getPreviousFrame(5));
EXPECT_EQ(F1, F7->getPreviousFrame(6));
EXPECT_EQ(F0, F7->getPreviousFrame(7));
EXPECT_EQ(nullptr, F7->getPreviousFrame(8));
EXPECT_EQ(nullptr, F7->getPreviousFrame(9));
EXPECT_EQ(nullptr, F7->getPreviousFrame(10));
EXPECT_EQ(F5, F6->getPreviousFrame(1));
EXPECT_EQ(F4, F6->getPreviousFrame(2));
EXPECT_EQ(F3, F6->getPreviousFrame(3));
EXPECT_EQ(F2, F6->getPreviousFrame(4));
EXPECT_EQ(F1, F6->getPreviousFrame(5));
EXPECT_EQ(F0, F6->getPreviousFrame(6));
EXPECT_EQ(nullptr, F6->getPreviousFrame(7));
EXPECT_EQ(nullptr, F6->getPreviousFrame(8));
EXPECT_EQ(nullptr, F6->getPreviousFrame(9));
EXPECT_EQ(nullptr, F6->getPreviousFrame(10));
EXPECT_EQ(F4, F5->getPreviousFrame(1));
EXPECT_EQ(F3, F5->getPreviousFrame(2));
EXPECT_EQ(F2, F5->getPreviousFrame(3));
EXPECT_EQ(F1, F5->getPreviousFrame(4));
EXPECT_EQ(F0, F5->getPreviousFrame(5));
EXPECT_EQ(nullptr, F5->getPreviousFrame(6));
EXPECT_EQ(nullptr, F5->getPreviousFrame(7));
EXPECT_EQ(nullptr, F5->getPreviousFrame(8));
EXPECT_EQ(nullptr, F5->getPreviousFrame(9));
EXPECT_EQ(nullptr, F5->getPreviousFrame(10));
EXPECT_EQ(F3, F4->getPreviousFrame(1));
EXPECT_EQ(F2, F4->getPreviousFrame(2));
EXPECT_EQ(F1, F4->getPreviousFrame(3));
EXPECT_EQ(F0, F4->getPreviousFrame(4));
EXPECT_EQ(nullptr, F4->getPreviousFrame(5));
EXPECT_EQ(nullptr, F4->getPreviousFrame(6));
EXPECT_EQ(nullptr, F4->getPreviousFrame(7));
EXPECT_EQ(nullptr, F4->getPreviousFrame(8));
EXPECT_EQ(nullptr, F4->getPreviousFrame(9));
EXPECT_EQ(nullptr, F4->getPreviousFrame(10));
EXPECT_EQ(F2, F3->getPreviousFrame(1));
EXPECT_EQ(F1, F3->getPreviousFrame(2));
EXPECT_EQ(F0, F3->getPreviousFrame(3));
EXPECT_EQ(nullptr, F3->getPreviousFrame(4));
EXPECT_EQ(nullptr, F3->getPreviousFrame(5));
EXPECT_EQ(nullptr, F3->getPreviousFrame(6));
EXPECT_EQ(nullptr, F3->getPreviousFrame(7));
EXPECT_EQ(nullptr, F3->getPreviousFrame(8));
EXPECT_EQ(nullptr, F3->getPreviousFrame(9));
EXPECT_EQ(nullptr, F3->getPreviousFrame(10));
EXPECT_EQ(F1, F2->getPreviousFrame(1));
EXPECT_EQ(F0, F2->getPreviousFrame(2));
EXPECT_EQ(nullptr, F2->getPreviousFrame(3));
EXPECT_EQ(nullptr, F2->getPreviousFrame(4));
EXPECT_EQ(nullptr, F2->getPreviousFrame(5));
EXPECT_EQ(nullptr, F2->getPreviousFrame(6));
EXPECT_EQ(nullptr, F2->getPreviousFrame(7));
EXPECT_EQ(nullptr, F2->getPreviousFrame(8));
EXPECT_EQ(nullptr, F2->getPreviousFrame(9));
EXPECT_EQ(nullptr, F2->getPreviousFrame(10));
EXPECT_EQ(F0, F1->getPreviousFrame(1));
EXPECT_EQ(nullptr, F1->getPreviousFrame(2));
EXPECT_EQ(nullptr, F1->getPreviousFrame(3));
EXPECT_EQ(nullptr, F1->getPreviousFrame(4));
EXPECT_EQ(nullptr, F1->getPreviousFrame(5));
EXPECT_EQ(nullptr, F1->getPreviousFrame(6));
EXPECT_EQ(nullptr, F1->getPreviousFrame(7));
EXPECT_EQ(nullptr, F1->getPreviousFrame(8));
EXPECT_EQ(nullptr, F1->getPreviousFrame(9));
EXPECT_EQ(nullptr, F1->getPreviousFrame(10));
EXPECT_EQ(nullptr, F0->getPreviousFrame(1));
EXPECT_EQ(nullptr, F0->getPreviousFrame(2));
EXPECT_EQ(nullptr, F0->getPreviousFrame(3));
EXPECT_EQ(nullptr, F0->getPreviousFrame(4));
EXPECT_EQ(nullptr, F0->getPreviousFrame(5));
EXPECT_EQ(nullptr, F0->getPreviousFrame(6));
EXPECT_EQ(nullptr, F0->getPreviousFrame(7));
EXPECT_EQ(nullptr, F0->getPreviousFrame(8));
EXPECT_EQ(nullptr, F0->getPreviousFrame(9));
EXPECT_EQ(nullptr, F0->getPreviousFrame(10));
} }
#include "core/state_block/state_quaternion.h" #include "core/state_block/state_quaternion.h"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment