diff --git a/test_suite/CMakeLists.txt b/test_suite/CMakeLists.txt
index d964d9134..8acaf534a 100644
--- a/test_suite/CMakeLists.txt
+++ b/test_suite/CMakeLists.txt
@@ -66,6 +66,7 @@ include(Dart)
# System test suites.
add_test(AeroMeshSystemTests ${TESTSUITE_OUTPUT_DIR}/run_test_suite --ctest -s AeroMeshTests)
#add_test(GPSSystemTests ${TESTSUITE_OUTPUT_DIR}/run_test_suite --ctest -s GPSTests)
+#add_test(NavaidsSystemTests ${TESTSUITE_OUTPUT_DIR}/run_test_suite --ctest -s NavaidsTests)
# Unit test suites.
add_test(AddonManagementUnitTests ${TESTSUITE_OUTPUT_DIR}/run_test_suite --ctest -u AddonManagementTests)
diff --git a/test_suite/system_tests/CMakeLists.txt b/test_suite/system_tests/CMakeLists.txt
index d2b56b6d0..d891d816f 100644
--- a/test_suite/system_tests/CMakeLists.txt
+++ b/test_suite/system_tests/CMakeLists.txt
@@ -2,6 +2,7 @@
foreach( system_test_category
FDM
Instrumentation
+ Navaids
)
add_subdirectory(${system_test_category})
diff --git a/test_suite/system_tests/Navaids/CMakeLists.txt b/test_suite/system_tests/Navaids/CMakeLists.txt
new file mode 100644
index 000000000..5d0c73755
--- /dev/null
+++ b/test_suite/system_tests/Navaids/CMakeLists.txt
@@ -0,0 +1,12 @@
+set(TESTSUITE_SOURCES
+ ${TESTSUITE_SOURCES}
+ ${CMAKE_CURRENT_SOURCE_DIR}/TestSuite.cxx
+ #${CMAKE_CURRENT_SOURCE_DIR}/testnavs.cxx
+ PARENT_SCOPE
+)
+
+set(TESTSUITE_HEADERS
+ ${TESTSUITE_HEADERS}
+ #${CMAKE_CURRENT_SOURCE_DIR}/testnavs.hxx
+ PARENT_SCOPE
+)
diff --git a/test_suite/system_tests/Navaids/TestSuite.cxx b/test_suite/system_tests/Navaids/TestSuite.cxx
new file mode 100644
index 000000000..90a179f21
--- /dev/null
+++ b/test_suite/system_tests/Navaids/TestSuite.cxx
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2018 Edward d'Auvergne
+ *
+ * This file is part of the program FlightGear.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "testnavs.hxx"
+
+
+// Set up the unit tests.
+//CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(NavaidsTests, "System tests");
diff --git a/src/Navaids/testnavs.cxx b/test_suite/system_tests/Navaids/testnavs.cxx
similarity index 64%
rename from src/Navaids/testnavs.cxx
rename to test_suite/system_tests/Navaids/testnavs.cxx
index d38341aa7..eda4a0c56 100644
--- a/src/Navaids/testnavs.cxx
+++ b/test_suite/system_tests/Navaids/testnavs.cxx
@@ -16,33 +16,40 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#include
+
#include
-#include "fixlist.hxx"
-#include "ilslist.hxx"
-#include "navlist.hxx"
-#include "mkrbeacons.hxx"
+#include
+//#include "ilslist.hxx"
+#include
+//#include "mkrbeacons.hxx"
-// change this!
-const string FG_DATA_DIR("/usr/local/lib/FlightGear");
+#include "test_suite/dataStore.hxx"
-int main() {
+#include "testnavs.hxx"
+
+
+void NavaidsTests::testNavs()
+{
double heading, dist;
+ DataStore &data = DataStore::get();
+
FGNavList *current_navlist = new FGNavList;
- SGPath p_nav( FG_DATA_DIR + "/Navaids/default.nav" );
+ SGPath p_nav = data.getFGRoot() / "/Navaids/default.nav";
current_navlist->init( p_nav );
-
+
FGNavRecord *n;
if ( (n = current_navlist->findByFreq( -93.2 * SG_DEGREES_TO_RADIANS,
45.14 * SG_DEGREES_TO_RADIANS,
3000, 117.30)) != NULL )
{
- cout << "Found a vor station in range" << endl;
- cout << " id = " << n->get_ident() << endl;
+ std::cout << "Found a vor station in range" << std::endl;
+ std::cout << " id = " << n->get_ident() << std::endl;
} else {
- cout << "not picking up vor. :-(" << endl;
+ std::cout << "not picking up vor. :-(" << std::endl;
}
FGNavRecord *dcs;
@@ -50,35 +57,35 @@ int main() {
-3.3 * SG_DEGREES_TO_RADIANS,
55.9 * SG_DEGREES_TO_RADIANS))
!= NULL ) {
-
- cout << "Found DCS by ident" << endl;
+
+ std::cout << "Found DCS by ident" << std::endl;
if (dcs->get_freq() != 11520)
- cout << "Frequency for DCS VOR is wrong (should be 115.20), it's "
- << dcs->get_freq() << endl;
+ std::cout << "Frequency for DCS VOR is wrong (should be 115.20), it's "
+ << dcs->get_freq() << std::endl;
} else {
- cout << "couldn't locate DCS (Dean-Cross) VOR" << endl;
+ std::cout << "couldn't locate DCS (Dean-Cross) VOR" << std::endl;
}
-
+
// we have to init the marker beacon storage before we parse the ILS file
FGMarkerBeacons *current_beacons = new FGMarkerBeacons;
current_beacons->init();
FGILSList *current_ilslist = new FGILSList;
- SGPath p_ils( FG_DATA_DIR + "/Navaids/default.ils" );
+ SGPath p_ils = data.getFGRoot() / "/Navaids/default.ils";
current_ilslist->init( p_ils );
FGILS *i = current_ilslist->findByFreq( -93.1 * SG_DEGREES_TO_RADIANS,
45.24 * SG_DEGREES_TO_RADIANS,
3000, 110.30);
if ( i != NULL ) {
- cout << "Found an ils station in range" << endl;
- cout << " apt = " << i->get_aptcode() << endl;
- cout << " rwy = " << i->get_rwyno() << endl;
+ std::cout << "Found an ils station in range" << std::endl;
+ std::cout << " apt = " << i->get_aptcode() << std::endl;
+ std::cout << " rwy = " << i->get_rwyno() << std::endl;
} else {
- cout << "not picking up ils. :-(" << endl;
+ std::cout << "not picking up ils. :-(" << std::endl;
}
FGFixList *current_fixlist = new FGFixList;
- SGPath p_fix( FG_DATA_DIR + "/Navaids/default.fix" );
+ SGPath p_fix = data.getFGRoot() / "/Navaids/default.fix";
current_fixlist->init( p_fix );
FGFix fix;
@@ -90,11 +97,11 @@ int main() {
53.698 * SG_DEGREES_TO_RADIANS,
3000, &fix, &heading, &dist) )
{
- cout << "Found a matching fix" << endl;
- cout << " id = " << fix.get_ident() << endl;
- cout << " heading = " << heading << " dist = " << dist * SG_METER_TO_NM
- << endl;
+ std::cout << "Found a matching fix" << std::endl;
+ std::cout << " id = " << fix.get_ident() << std::endl;
+ std::cout << " heading = " << heading << " dist = " << dist * SG_METER_TO_NM
+ << std::endl;
} else {
- cout << "did not find fix. :-(" << endl;
+ CPPUNIT_FAIL("did not find fix. :-(");
}
}
diff --git a/test_suite/system_tests/Navaids/testnavs.hxx b/test_suite/system_tests/Navaids/testnavs.hxx
new file mode 100644
index 000000000..50d1a9bef
--- /dev/null
+++ b/test_suite/system_tests/Navaids/testnavs.hxx
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2018 Edward d'Auvergne
+ *
+ * This file is part of the program FlightGear.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+
+#ifndef _FG_NAVAIDS_SYSTEM_TESTS_HXX
+#define _FG_NAVAIDS_SYSTEM_TESTS_HXX
+
+
+#include
+#include
+
+
+// The system tests.
+class NavaidsTests : public CppUnit::TestFixture
+{
+ // Set up the test suite.
+ CPPUNIT_TEST_SUITE(NavaidsTests);
+ CPPUNIT_TEST(testNavs);
+ CPPUNIT_TEST_SUITE_END();
+
+public:
+ // Set up function for each test.
+ void setUp() {}
+
+ // Clean up after each test.
+ void tearDown() {}
+
+ // The tests.
+ void testNavs();
+};
+
+#endif // _FG_NAVAIDS_SYSTEM_TESTS_HXX