1
0
Fork 0
flightgear/test_suite/system_tests/subsystems/test_instanced_creation.cxx
Edward d'Auvergne 45243c96e8 TestSuite: System tests for subsystem creation via the global registrations.
This covers all instantiated SGSubsystem derived classes, i.e. those that are
not base classes, including subsystem groups.  Both non-instanced and instanced
subsystem creation is tested.  The tests for subsystems yet to be registered are
commented out.
2022-11-17 15:57:39 +00:00

99 lines
4.7 KiB
C++

/*
* 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 "test_suite/FGTestApi/testGlobals.hxx"
#include "test_instanced_creation.hxx"
// Set up function for each test.
void InstancedSubsystemTests::setUp()
{
// First set up the globals object.
FGTestApi::setUp::initTestGlobals("InstancedSubsystemCreationTests");
// The subsystem manager.
_mgr.reset(new SGSubsystemMgr());
}
// Clean up after each test.
void InstancedSubsystemTests::tearDown()
{
// Remove the manager.
_mgr.reset();
// Clean up globals.
FGTestApi::tearDown::shutdownTestGlobals();
}
// Helper functions.
void InstancedSubsystemTests::create(const char* name)
{
// Create two subsystem instances and add them to the manager.
_mgr->addInstance(name, "inst1");
_mgr->addInstance(name, "inst2");
auto sub1 = _mgr->get_subsystem(name, "inst1");
auto sub2 = _mgr->get_subsystem(name, "inst2");
// Check the first subsystem.
CPPUNIT_ASSERT(sub1);
CPPUNIT_ASSERT_EQUAL(sub1->subsystemId(), std::string(name) + ".inst1");
CPPUNIT_ASSERT_EQUAL(sub1->subsystemClassId(), std::string(name));
CPPUNIT_ASSERT_EQUAL(sub1->subsystemInstanceId(), std::string("inst1"));
// Check the second subsystem.
CPPUNIT_ASSERT(sub2);
CPPUNIT_ASSERT_EQUAL(sub2->subsystemId(), std::string(name) + ".inst2");
CPPUNIT_ASSERT_EQUAL(sub2->subsystemClassId(), std::string(name));
CPPUNIT_ASSERT_EQUAL(sub2->subsystemInstanceId(), std::string("inst2"));
}
// The instanced subsystems.
void InstancedSubsystemTests::testADF() { create("adf"); }
void InstancedSubsystemTests::testAirspeedIndicator() { create("airspeed-indicator"); }
void InstancedSubsystemTests::testAltimeter() { create("altimeter"); }
void InstancedSubsystemTests::testAttitudeIndicator() { create("attitude-indicator"); }
void InstancedSubsystemTests::testClock() { create("clock"); }
void InstancedSubsystemTests::testCommRadio() { create("comm-radio"); }
void InstancedSubsystemTests::testDME() { create("dme"); }
void InstancedSubsystemTests::testFGKR_87() { create("KR-87"); }
void InstancedSubsystemTests::testFGMarkerBeacon() { create("marker-beacon"); }
void InstancedSubsystemTests::testFGNavRadio() { create("old-navradio"); }
void InstancedSubsystemTests::testGPS() { create("gps"); }
void InstancedSubsystemTests::testGSDI() { create("gsdi"); }
void InstancedSubsystemTests::testHeadingIndicator() { create("heading-indicator"); }
void InstancedSubsystemTests::testHeadingIndicatorDG() { create("heading-indicator-dg"); }
void InstancedSubsystemTests::testHeadingIndicatorFG() { create("heading-indicator-fg"); }
void InstancedSubsystemTests::testHUD() { create("hud"); }
void InstancedSubsystemTests::testInstVerticalSpeedIndicator() { create("inst-vertical-speed-indicator"); }
void InstancedSubsystemTests::testKLN89() { create("kln89"); }
void InstancedSubsystemTests::testMagCompass() { create("magnetic-compass"); }
void InstancedSubsystemTests::testMasterReferenceGyro() { create("master-reference-gyro"); }
void InstancedSubsystemTests::testMK_VIII() { create("mk-viii"); }
void InstancedSubsystemTests::testNavRadio() { create("nav-radio"); }
void InstancedSubsystemTests::testRadarAltimeter() { create("radar-altimeter"); }
void InstancedSubsystemTests::testSlipSkidBall() { create("slip-skid-ball"); }
void InstancedSubsystemTests::testTACAN() { create("tacan"); }
void InstancedSubsystemTests::testTCAS() { create("tcas"); }
void InstancedSubsystemTests::testTransponder() { create("transponder"); }
void InstancedSubsystemTests::testTurnIndicator() { create("turn-indicator"); }
void InstancedSubsystemTests::testVerticalSpeedIndicator() { create("vertical-speed-indicator"); }