1
0
Fork 0

TestSuite: Migration of the old Navaids tests to the CppUnit framework.

This test suffers from significant bit-rot (it is designed for operation prior
to the NavDataCache), so it is deactivated.
This commit is contained in:
Edward d'Auvergne 2018-06-14 21:19:00 +02:00
parent 02c3c6dc97
commit f8c2cb5284
6 changed files with 122 additions and 29 deletions

View file

@ -66,6 +66,7 @@ include(Dart)
# System test suites. # System test suites.
add_test(AeroMeshSystemTests ${TESTSUITE_OUTPUT_DIR}/run_test_suite --ctest -s AeroMeshTests) 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(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. # Unit test suites.
add_test(AddonManagementUnitTests ${TESTSUITE_OUTPUT_DIR}/run_test_suite --ctest -u AddonManagementTests) add_test(AddonManagementUnitTests ${TESTSUITE_OUTPUT_DIR}/run_test_suite --ctest -u AddonManagementTests)

View file

@ -2,6 +2,7 @@
foreach( system_test_category foreach( system_test_category
FDM FDM
Instrumentation Instrumentation
Navaids
) )
add_subdirectory(${system_test_category}) add_subdirectory(${system_test_category})

View file

@ -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
)

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#include "testnavs.hxx"
// Set up the unit tests.
//CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(NavaidsTests, "System tests");

View file

@ -16,33 +16,40 @@
// along with this program; if not, write to the Free Software // along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include <iostream>
#include <simgear/misc/sg_path.hxx> #include <simgear/misc/sg_path.hxx>
#include "fixlist.hxx" #include <Navaids/fixlist.hxx>
#include "ilslist.hxx" //#include "ilslist.hxx"
#include "navlist.hxx" #include <Navaids/navlist.hxx>
#include "mkrbeacons.hxx" //#include "mkrbeacons.hxx"
// change this! #include "test_suite/dataStore.hxx"
const string FG_DATA_DIR("/usr/local/lib/FlightGear");
int main() { #include "testnavs.hxx"
void NavaidsTests::testNavs()
{
double heading, dist; double heading, dist;
DataStore &data = DataStore::get();
FGNavList *current_navlist = new FGNavList; 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 ); current_navlist->init( p_nav );
FGNavRecord *n; FGNavRecord *n;
if ( (n = current_navlist->findByFreq( -93.2 * SG_DEGREES_TO_RADIANS, if ( (n = current_navlist->findByFreq( -93.2 * SG_DEGREES_TO_RADIANS,
45.14 * SG_DEGREES_TO_RADIANS, 45.14 * SG_DEGREES_TO_RADIANS,
3000, 117.30)) != NULL ) 3000, 117.30)) != NULL )
{ {
cout << "Found a vor station in range" << endl; std::cout << "Found a vor station in range" << std::endl;
cout << " id = " << n->get_ident() << endl; std::cout << " id = " << n->get_ident() << std::endl;
} else { } else {
cout << "not picking up vor. :-(" << endl; std::cout << "not picking up vor. :-(" << std::endl;
} }
FGNavRecord *dcs; FGNavRecord *dcs;
@ -50,35 +57,35 @@ int main() {
-3.3 * SG_DEGREES_TO_RADIANS, -3.3 * SG_DEGREES_TO_RADIANS,
55.9 * SG_DEGREES_TO_RADIANS)) 55.9 * SG_DEGREES_TO_RADIANS))
!= NULL ) { != NULL ) {
cout << "Found DCS by ident" << endl; std::cout << "Found DCS by ident" << std::endl;
if (dcs->get_freq() != 11520) if (dcs->get_freq() != 11520)
cout << "Frequency for DCS VOR is wrong (should be 115.20), it's " std::cout << "Frequency for DCS VOR is wrong (should be 115.20), it's "
<< dcs->get_freq() << endl; << dcs->get_freq() << std::endl;
} else { } 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 // we have to init the marker beacon storage before we parse the ILS file
FGMarkerBeacons *current_beacons = new FGMarkerBeacons; FGMarkerBeacons *current_beacons = new FGMarkerBeacons;
current_beacons->init(); current_beacons->init();
FGILSList *current_ilslist = new FGILSList; 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 ); current_ilslist->init( p_ils );
FGILS *i = current_ilslist->findByFreq( -93.1 * SG_DEGREES_TO_RADIANS, FGILS *i = current_ilslist->findByFreq( -93.1 * SG_DEGREES_TO_RADIANS,
45.24 * SG_DEGREES_TO_RADIANS, 45.24 * SG_DEGREES_TO_RADIANS,
3000, 110.30); 3000, 110.30);
if ( i != NULL ) { if ( i != NULL ) {
cout << "Found an ils station in range" << endl; std::cout << "Found an ils station in range" << std::endl;
cout << " apt = " << i->get_aptcode() << endl; std::cout << " apt = " << i->get_aptcode() << std::endl;
cout << " rwy = " << i->get_rwyno() << endl; std::cout << " rwy = " << i->get_rwyno() << std::endl;
} else { } else {
cout << "not picking up ils. :-(" << endl; std::cout << "not picking up ils. :-(" << std::endl;
} }
FGFixList *current_fixlist = new FGFixList; 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 ); current_fixlist->init( p_fix );
FGFix fix; FGFix fix;
@ -90,11 +97,11 @@ int main() {
53.698 * SG_DEGREES_TO_RADIANS, 53.698 * SG_DEGREES_TO_RADIANS,
3000, &fix, &heading, &dist) ) 3000, &fix, &heading, &dist) )
{ {
cout << "Found a matching fix" << endl; std::cout << "Found a matching fix" << std::endl;
cout << " id = " << fix.get_ident() << endl; std::cout << " id = " << fix.get_ident() << std::endl;
cout << " heading = " << heading << " dist = " << dist * SG_METER_TO_NM std::cout << " heading = " << heading << " dist = " << dist * SG_METER_TO_NM
<< endl; << std::endl;
} else { } else {
cout << "did not find fix. :-(" << endl; CPPUNIT_FAIL("did not find fix. :-(");
} }
} }

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#ifndef _FG_NAVAIDS_SYSTEM_TESTS_HXX
#define _FG_NAVAIDS_SYSTEM_TESTS_HXX
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/TestFixture.h>
// 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