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