From 985c06816ba852e9d497ce212057f7d118e59570 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 8 Nov 2018 02:32:47 +0100 Subject: [PATCH] Ref T429, unit test to test same/changed position --- .../testinterpolatormisc.cpp | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/tests/blackmisc/simulation/testinterpolatormisc/testinterpolatormisc.cpp b/tests/blackmisc/simulation/testinterpolatormisc/testinterpolatormisc.cpp index 9c6a6cb83..fbc15f098 100644 --- a/tests/blackmisc/simulation/testinterpolatormisc/testinterpolatormisc.cpp +++ b/tests/blackmisc/simulation/testinterpolatormisc/testinterpolatormisc.cpp @@ -11,14 +11,18 @@ //! \file //! \ingroup testblackmisc +#include "blackmisc/aviation/aircraftsituation.h" #include "blackmisc/simulation/interpolationrenderingsetup.h" #include "test.h" + + #include #include #include using namespace BlackMisc::Aviation; +using namespace BlackMisc::Geo; using namespace BlackMisc::PhysicalQuantities; using namespace BlackMisc::Simulation; @@ -32,6 +36,9 @@ namespace BlackMiscTest private slots: //! Basic unit tests for interpolation setup void setupTests(); + + //! Equal situations + void equalSituationTests(); }; void CTestInterpolatorMisc::setupTests() @@ -51,6 +58,74 @@ namespace BlackMiscTest setup2.setEnabledAircraftParts(!setup2.isAircraftPartsEnabled()); QVERIFY2(setup1 != setup2, "Expect unequal setups (per callsign)"); } + + void CTestInterpolatorMisc::equalSituationTests() + { + const CCoordinateGeodetic geoPos0 = CCoordinateGeodetic::fromWgs84("48° 21′ 13″ N", "11° 47′ 09″ E", { 1487, CLengthUnit::ft() }); + const CCoordinateGeodetic geoPos1 = CCoordinateGeodetic::fromWgs84("48° 21′ 13″ N", "11° 47′ 09″ E", { 1488, CLengthUnit::ft() }); + const CCoordinateGeodetic geoPos2 = CCoordinateGeodetic::fromWgs84("48° 21′ 14″ N", "11° 47′ 09″ E", { 1487, CLengthUnit::ft() }); + + CAngle pitch(3.33, CAngleUnit::deg()); + CAngle bank(-1.0, CAngleUnit::deg()); + CHeading heading(270.0, CAngleUnit::deg()); + + // initial tests + const CAircraftSituation s0(geoPos0, heading, pitch, bank); + CAircraftSituation s1(s0); + CAircraftSituation s2(s0); + CAircraftSituation sg1(s0); + CAircraftSituation sg2(s0); + + QVERIFY2(s1.equalPbhAndVector(s2), "Expect same PHB/Vector"); + QVERIFY2(s1.equalPbhVectorAltitude(s2), "Expect same PHB/Vector/Altitude"); + QVERIFY2(sg1 == sg2, "Expect the same situation"); + + sg1 = geoPos1; + sg2 = geoPos2; + + QVERIFY2(!sg1.equalPbhVectorAltitude(s0), "Expect different positions"); + QVERIFY2(!sg2.equalPbhVectorAltitude(s0), "Expect different positions"); + + // test all pitch + for (int i = 0; i < 361; i++) + { + pitch = CAngle(i, CAngleUnit::deg()); + s1.setPitch(pitch); + s2.setPitch(pitch); + QVERIFY2(s1.equalPbhVectorAltitude(s2), "Pitch test, expect same PHB/Vector/Altitude"); + pitch = CAngle(i + 1, CAngleUnit::deg()); + s2.setPitch(pitch); + QVERIFY2(!s1.equalPbhVectorAltitude(s2), "Pitch test, expect same PHB/Vector/Altitude"); + } + + // test all bank + s1 = s0; + s2 = s0; + for (int i = 0; i < 361; i++) + { + bank = CAngle(i, CAngleUnit::deg()); + s1.setBank(bank); + s2.setBank(bank); + QVERIFY2(s1.equalPbhVectorAltitude(s2), "Bank test, expect same PHB/Vector/Altitude"); + bank = CAngle(i + 1, CAngleUnit::deg()); + s2.setBank(bank); + QVERIFY2(!s1.equalPbhVectorAltitude(s2), "Bank test, expect same PHB/Vector/Altitude"); + } + + // test all heading + s1 = s0; + s2 = s0; + for (int i = 0; i < 361; i++) + { + heading = CHeading(i, CAngleUnit::deg()); + s1.setHeading(heading); + s2.setHeading(heading); + QVERIFY2(s1.equalPbhVectorAltitude(s2), "Heading test, expect same PHB/Vector/Altitude"); + heading = CHeading(i + 1, CAngleUnit::deg()); + s2.setHeading(heading); + QVERIFY2(!s1.equalPbhVectorAltitude(s2), "Heading test, expect same PHB/Vector/Altitude"); + } + } } // namespace //! main