Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
Executable
+30
@@ -0,0 +1,30 @@
|
||||
#
|
||||
# @RDE_HEADER@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
SET(UnitTestSources
|
||||
../trajectory_splitter.cpp
|
||||
../trajectory_splitter.h
|
||||
trajectory_splitter_unit_test.cpp
|
||||
trajectory_splitter_unit_test.h
|
||||
)
|
||||
|
||||
SOURCE_GROUP( UnitTestSources FILES ${UnitTestSources} )
|
||||
|
||||
IF(BUILD_TESTING)
|
||||
ADD_EXECUTABLE(aesUnitTestTrajectorySplitter ${LinkedSources} ${UnitTestSources} )
|
||||
|
||||
TARGET_LINK_LIBRARIES(aesUnitTestTrajectorySplitter
|
||||
NGLLogger
|
||||
nglcoreapplication
|
||||
Qt5::Core
|
||||
Qt5::Test
|
||||
svcAesCommon
|
||||
)
|
||||
|
||||
ADD_TEST(NAME aesUnitTestTrajectorySplitter COMMAND $<TARGET_FILE:aesUnitTestTrajectorySplitter>)
|
||||
|
||||
ENDIF()
|
||||
+285
@@ -0,0 +1,285 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Unittest
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "trajectory_splitter_unit_test.h"
|
||||
#include "../trajectory_splitter.h"
|
||||
|
||||
|
||||
#include <nglapplication/nglcoreapplication.h>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace AreaEffectSimulation;
|
||||
//
|
||||
//
|
||||
// This class is an UnitTest with values taken from the TNE.
|
||||
// That was created while Michael Moetje was implementing that code at the TNE (PlayerUnit)
|
||||
//
|
||||
//
|
||||
|
||||
static TrajectoryType getExampleData()
|
||||
{
|
||||
TrajectoryType vector;
|
||||
|
||||
// trunk (size = 5)
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 1));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 2));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 3));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 4));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 5));
|
||||
|
||||
// branch 1 (size = 3)
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(1.1, 0.2, 0.3, 6));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(1.1, 0.2, 0.3, 7));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(1.1, 0.2, 0.3, 8));
|
||||
|
||||
// branch 2 (size = 4)
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(2.1, 0.2, 0.3, 6));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(2.1, 0.2, 0.3, 7));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(2.1, 0.2, 0.3, 8));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(2.1, 0.2, 0.3, 9));
|
||||
|
||||
return vector;
|
||||
}
|
||||
|
||||
static TrajectoryType getRealTrunk()
|
||||
{
|
||||
TrajectoryType vector;
|
||||
// trunk (size = 5)
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 1));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 2));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 3));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 4));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 5));
|
||||
return vector;
|
||||
}
|
||||
static TrajectoryType getRealBranch1()
|
||||
{
|
||||
TrajectoryType vector;
|
||||
// branch 1 (size = 3)
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(1.1, 0.2, 0.3, 6));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(1.1, 0.2, 0.3, 7));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(1.1, 0.2, 0.3, 8));
|
||||
return vector;
|
||||
}
|
||||
static TrajectoryType getRealBranch2()
|
||||
{
|
||||
TrajectoryType vector;
|
||||
// branch 2 (size = 4)
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(2.1, 0.2, 0.3, 6));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(2.1, 0.2, 0.3, 7));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(2.1, 0.2, 0.3, 8));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(2.1, 0.2, 0.3, 9));
|
||||
return vector;
|
||||
}
|
||||
|
||||
static TrajectoryType getRealTrajectory1()
|
||||
{
|
||||
TrajectoryType vector;
|
||||
// trunk (size = 5)
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 1));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 2));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 3));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 4));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 5));
|
||||
|
||||
// branch 1 (size = 3)
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(1.1, 0.2, 0.3, 6));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(1.1, 0.2, 0.3, 7));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(1.1, 0.2, 0.3, 8));
|
||||
return vector;
|
||||
}
|
||||
|
||||
static TrajectoryType getRealTrajectory2()
|
||||
{
|
||||
TrajectoryType vector;
|
||||
// trunk (size = 5)
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 1));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 2));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 3));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 4));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(0.1, 0.2, 0.3, 5));
|
||||
|
||||
// branch 2 (size = 4)
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(2.1, 0.2, 0.3, 6));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(2.1, 0.2, 0.3, 7));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(2.1, 0.2, 0.3, 8));
|
||||
vector.emplace_back(Core::GeoPositionRelativeTime(2.1, 0.2, 0.3, 9));
|
||||
return vector;
|
||||
}
|
||||
|
||||
// TrajectorySplitter::init is protected.
|
||||
// To gain access, create a temporary class and enable access:
|
||||
class MyLocalTrajectorySplitter : public TrajectorySplitter<std::vector<Core::GeoPositionRelativeTime>>
|
||||
{
|
||||
public:
|
||||
using BaseClass = TrajectorySplitter;
|
||||
|
||||
explicit MyLocalTrajectorySplitter(const TrajectoryType &trajectory)
|
||||
: BaseClass(trajectory)
|
||||
{}
|
||||
|
||||
bool init() const
|
||||
{
|
||||
return BaseClass::init();
|
||||
}
|
||||
|
||||
size_t rawTrajectorySize() const
|
||||
{
|
||||
return BaseClass::rawTrajectorySize();
|
||||
}
|
||||
|
||||
|
||||
static qint64 findDuplicateTimeInternal(const TrajectoryType &trajectory) { return BaseClass::findDuplicateTimeInternal(trajectory);}
|
||||
static int findDuplicateBranchIndexInternal(const TrajectoryType &trajectory) { return BaseClass::findDuplicateBranchIndexInternal(trajectory);}
|
||||
static int findIndexOfEndOfFirstBranchInternal(const TrajectoryType &trajectory) { return BaseClass::findIndexOfEndOfFirstBranchInternal(trajectory);}
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
void UnitTestTrajectorySplitter::init()
|
||||
{
|
||||
m_trajectory = getExampleData();
|
||||
}
|
||||
|
||||
void UnitTestTrajectorySplitter::test_rawTrajectorySize()
|
||||
{
|
||||
QCOMPARE(m_trajectory.size(), 12);
|
||||
|
||||
MyLocalTrajectorySplitter splitter(m_trajectory);
|
||||
QCOMPARE(splitter.rawTrajectorySize(), 12);
|
||||
}
|
||||
|
||||
void UnitTestTrajectorySplitter::test_findDuplicateTimeInternal()
|
||||
{
|
||||
const int value = MyLocalTrajectorySplitter::findDuplicateTimeInternal(m_trajectory);
|
||||
QCOMPARE(value, 6);
|
||||
}
|
||||
void UnitTestTrajectorySplitter::test_findDuplicateTimeInternalFailure()
|
||||
{
|
||||
const int value = MyLocalTrajectorySplitter::findDuplicateTimeInternal(getRealTrunk());
|
||||
QCOMPARE(value, -1);
|
||||
}
|
||||
|
||||
|
||||
void UnitTestTrajectorySplitter::test_findDuplicateBranchIndexInternal()
|
||||
{
|
||||
const int idx = MyLocalTrajectorySplitter::findDuplicateBranchIndexInternal(m_trajectory);
|
||||
QCOMPARE(idx, 5);
|
||||
}
|
||||
void UnitTestTrajectorySplitter::test_findDuplicateBranchIndexInternalFailure()
|
||||
{
|
||||
const int idx = MyLocalTrajectorySplitter::findDuplicateBranchIndexInternal(getRealTrunk());
|
||||
QCOMPARE(idx, -1);
|
||||
}
|
||||
|
||||
void UnitTestTrajectorySplitter::test_init()
|
||||
{
|
||||
{
|
||||
MyLocalTrajectorySplitter splitter({});
|
||||
QCOMPARE(splitter.init(), false);
|
||||
}
|
||||
{
|
||||
MyLocalTrajectorySplitter splitter(m_trajectory);
|
||||
QCOMPARE(splitter.rawTrajectorySize(), 12);
|
||||
QCOMPARE(splitter.init(), true);
|
||||
QCOMPARE(splitter.init(), true); // execute a second time
|
||||
}
|
||||
}
|
||||
|
||||
void UnitTestTrajectorySplitter::test_findIndexOfEndOfFirstBranchInternal()
|
||||
{
|
||||
const int idx = MyLocalTrajectorySplitter::findIndexOfEndOfFirstBranchInternal(m_trajectory);
|
||||
QCOMPARE(idx, 7);
|
||||
}
|
||||
|
||||
void UnitTestTrajectorySplitter::test_trunk()
|
||||
{
|
||||
MyLocalTrajectorySplitter splitter(m_trajectory);
|
||||
QCOMPARE(splitter.rawTrajectorySize(), 12);
|
||||
|
||||
const auto trunk = splitter.getTrunk();
|
||||
QCOMPARE(trunk.size(), 5);
|
||||
|
||||
const auto realTrunk = getRealTrunk();
|
||||
QCOMPARE(trunk, realTrunk);
|
||||
}
|
||||
|
||||
void UnitTestTrajectorySplitter::test_branch1()
|
||||
{
|
||||
MyLocalTrajectorySplitter splitter(m_trajectory);
|
||||
QCOMPARE(splitter.rawTrajectorySize(), 12);
|
||||
|
||||
const auto br1 = splitter.getBranch1();
|
||||
QCOMPARE(br1.size(), 3);
|
||||
|
||||
const auto &realBranch1 = getRealBranch1();
|
||||
QCOMPARE(br1, realBranch1);
|
||||
}
|
||||
|
||||
void UnitTestTrajectorySplitter::test_branch2()
|
||||
{
|
||||
MyLocalTrajectorySplitter splitter(m_trajectory);
|
||||
QCOMPARE(splitter.rawTrajectorySize(), 12);
|
||||
|
||||
const auto br2 = splitter.getBranch2();
|
||||
QCOMPARE(br2.size(), 4);
|
||||
|
||||
const auto &realBranch2 = getRealBranch2();
|
||||
QCOMPARE(br2, realBranch2);
|
||||
}
|
||||
|
||||
void UnitTestTrajectorySplitter::test_trajectory1()
|
||||
{
|
||||
MyLocalTrajectorySplitter splitter(m_trajectory);
|
||||
QCOMPARE(splitter.rawTrajectorySize(), 12);
|
||||
|
||||
const auto traj1 = splitter.getTrajectory1();
|
||||
QCOMPARE(traj1.size(), 8);
|
||||
|
||||
const auto &getRealTraj1 = getRealTrajectory1();
|
||||
QCOMPARE(traj1, getRealTraj1);
|
||||
}
|
||||
void UnitTestTrajectorySplitter::test_trajectory2()
|
||||
{
|
||||
MyLocalTrajectorySplitter splitter(m_trajectory);
|
||||
QCOMPARE(splitter.rawTrajectorySize(), 12);
|
||||
|
||||
const auto tra2 = splitter.getTrajectory2();
|
||||
QCOMPARE(tra2.size(), 9);
|
||||
|
||||
const auto &getRealTraj2 = getRealTrajectory2();
|
||||
QCOMPARE(tra2, getRealTraj2);
|
||||
}
|
||||
|
||||
void UnitTestTrajectorySplitter::test_failure()
|
||||
{
|
||||
MyLocalTrajectorySplitter splitter(getRealTrunk());
|
||||
QCOMPARE(splitter.rawTrajectorySize(), 5);
|
||||
|
||||
QCOMPARE(splitter.init(), false);
|
||||
|
||||
QCOMPARE(splitter.getTrunk().size(), 0);
|
||||
QCOMPARE(splitter.getBranch1().size(), 0);
|
||||
QCOMPARE(splitter.getBranch2().size(), 0);
|
||||
QCOMPARE(splitter.getTrajectory1().size(), 0);
|
||||
QCOMPARE(splitter.getTrajectory2().size(), 0);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
NGLCoreApplication app(argc, argv);
|
||||
app.createLogger("UnitTest_TrajectorySplitter", "log4cxxUnitTest.props");
|
||||
|
||||
UnitTestTrajectorySplitter tc;
|
||||
return QTest::qExec(&tc, argc, argv);
|
||||
}
|
||||
|
||||
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Unittest
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
#include <Core/core.hpp>
|
||||
|
||||
using TrajectoryType = std::vector<Core::GeoPositionRelativeTime>;
|
||||
|
||||
/**
|
||||
* @brief This class is an UnitTest with values taken from the TNE.
|
||||
* That was created while Michael Moetje was implementing that code at the TNE (PlayerUnit)
|
||||
*/
|
||||
class UnitTestTrajectorySplitter : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private Q_SLOTS:
|
||||
|
||||
void init();
|
||||
|
||||
void test_rawTrajectorySize();
|
||||
|
||||
void test_findDuplicateTimeInternal();
|
||||
void test_findDuplicateTimeInternalFailure();
|
||||
void test_findDuplicateBranchIndexInternal();
|
||||
void test_findDuplicateBranchIndexInternalFailure();
|
||||
void test_init();
|
||||
void test_findIndexOfEndOfFirstBranchInternal();
|
||||
|
||||
void test_trunk();
|
||||
void test_branch1();
|
||||
void test_branch2();
|
||||
|
||||
void test_trajectory1();
|
||||
void test_trajectory2();
|
||||
|
||||
void test_failure();
|
||||
|
||||
// void cleanup();
|
||||
|
||||
private:
|
||||
TrajectoryType m_trajectory;
|
||||
};
|
||||
Reference in new issue
Block a user