1
0
Fork 0
Commit graph

311 commits

Author SHA1 Message Date
James Turner
ef3ba040ca Fix logic of duplicate-command-add test
parseAndReturn returns false, when runtime errors occur.
2022-01-15 22:23:38 +00:00
James Turner
d59db8ea54 FlightPlan: distuinguish routes from flight-plans
Add a bool flag isRoute to flight-plan, and use it to model
routes (which contain VIAs) from plans/legs, which do not.

Default isRoute to false, so most users only see expanded
Vias, and hence something that can be flown directly.
2022-01-15 22:23:38 +00:00
James Turner
9a08d9fcd6 AP input: add property-path support to Inputs
Allow making the AP source indirect (via a string property),
so that the actual source property can be configured or
adjusted from a -set.xml, or at runtime.
2022-01-15 22:23:37 +00:00
Julian Smith
cfe5ed0ef4 test_suite/unit_tests/AI/test_traffic.cxx: minor improvements to sprintf code.
Use snprintf() instead of sprintf() to avoid potential memory corruption.

Fixed sprintf time_t call - cast to long long.
2022-01-08 16:11:53 +00:00
James Turner
179b751bf5 Unit-tests for Nasal range() 2022-01-07 16:16:01 +00:00
James Turner
c1e5cc3074 Improve creating VIA segments
Improve argument parsing for createViaTo, createViaFromTo to
handle Airway ghosts as well as strings. As part of this, allow
specification of the airway level explicitly when looking
up an airway.

SF-ID: https://sourceforge.net/p/flightgear/codetickets/2686/
2022-01-05 15:44:50 +00:00
James Turner
a7ae3bf6cd Fix up linkage of Nasal tests inside CppUnit
Ensure correct test backend is used inside fgfs_test_suite
2022-01-05 15:41:33 +00:00
Julian Smith
1b7e8504ef test_suite/unit_tests/: cope with getStringValue() now returning std::string. 2021-12-27 10:19:34 +00:00
James Turner
aad67cdad9 Test Nasal trunc/floor/round 2021-11-16 11:00:35 +00:00
PortreeKid
d783008c08 * Improved YSSY.groundnet.xml 2021-09-30 11:19:41 +01:00
James Turner
4236cee7b2 Another waypoint selection test from MikeD
Currently selects the wrong VOR, bvut the code is working as
designed, we think.
2021-09-02 11:29:02 +01:00
PortreeKid
f1a44c98df AI Improvements
* Relax runway exit route requirement to 80°
* Ensure parking is only reset if airport for AI aircraft has changed
* Heading Error signed and arrival lead distance
2021-08-31 09:43:24 +01:00
James Turner
45d969f319 Add tests cases around bug 2616
Can't reproduce this, but capturing in a unit-test just to make sure.

SF-Ticket: https://sourceforge.net/p/flightgear/codetickets/2616/
2021-08-21 13:09:39 +01:00
James Turner
4bf88a0b67 Extend unit-test for route-manager waypoint selection
SF-Ticket: https://sourceforge.net/p/flightgear/codetickets/2372/
2021-08-20 12:08:17 +01:00
James Turner
18e7bfc4b0 Fix tests build 2021-08-04 15:10:18 +01:00
Julian Smith
d91bc730b6 test_suite/unit_tests/Autopilot/testPidController*: test startup_current=0 or 1. 2021-08-02 22:38:11 +01:00
James Turner
3082789582 Disable the traffic tests for now 2021-07-21 10:59:22 +01:00
James Turner
870dbc04f5 Test infrastrucutre tweaks 2021-07-21 10:59:08 +01:00
portree_kid
8c7ff0a486 GA Test 2021-07-13 10:52:30 +01:00
portree_kid
61ced0e86f Change filewriting to simgear 2021-07-13 10:52:30 +01:00
portree_kid
f4bc2913c1 Flightplan Test 2021-07-13 10:52:30 +01:00
James Turner
a3c9f3163e Traffic tests: use shared pointers and new APIs 2021-07-13 10:49:06 +01:00
James Turner
6ab1fdbe0f Fixes for Keith’s tests 2021-07-13 10:49:06 +01:00
portree_kid
45ac50d2b7 Time moving 2021-07-13 10:49:06 +01:00
portree_kid
80e553f05c Departure gate test 2021-07-13 10:49:06 +01:00
portree_kid
986d061004 Move view moving to end of loop 2021-07-13 10:49:06 +01:00
portree_kid
54de08a3b6 Fix #2576 Added findWithHeading 2021-07-13 10:41:30 +01:00
portree_kid
3d3ff623cd Add dump() method to AIAircaft 2021-07-13 10:41:30 +01:00
portree_kid
cb3f8056ff Test AI shuttle flight 2021-07-13 10:41:30 +01:00
portree_kid
3318e09441 Test for TrafficMgr 2021-07-13 10:29:04 +01:00
portree_kid
9121e8bcef Test Complete Flight 2021-07-13 10:29:04 +01:00
portree_kid
7c1bd07ed6 New KML Logging 2021-07-13 10:29:04 +01:00
portree_kid
5489a3bfd7 Basic Airport tests 2021-07-13 10:29:03 +01:00
portree_kid
bef7af0bc0 testPushforwardSpeedy 2021-07-13 10:29:03 +01:00
PortreeKid
19b910775e Runway Tests 2021-07-13 10:29:03 +01:00
portree_kid
620dd9ee48 YSCB AI parking test 2021-07-12 16:21:19 +01:00
portree_kid
dccea87cea AI Test Windchange 2021-07-12 16:21:19 +01:00
portree_kid
8493e0bbd2 Testdata for loading of AI Aircraft 2021-07-12 16:21:19 +01:00
portree_kid
9b4cb56cc9 Set Simtime correctly 2021-07-12 16:21:19 +01:00
portree_kid
84258c79a0 Flightplan Test draft 2021-07-12 16:21:09 +01:00
portree_kid
03574442c0 AI Tests 2021-07-12 16:19:44 +01:00
portree_kid
9dd5c0e055 Moved AI FlightPlan Tests to seperate test class 2021-07-12 16:19:44 +01:00
portree_kid
d96602fc90 Tests for groundnet.cxx 2021-07-12 16:19:44 +01:00
Julian Smith
81e12d7c2e test_suite/unit_tests/Scripting/testGC.cxx: Restore nasal state when closing down.
Need to restore global_nasalMinimalInit to false in NasalGCTests::tearDown(),
otherwise later run of NasalSysTests::testCommands fails.
2021-06-07 22:24:56 +01:00
James Turner
9297f62d2f Fix some missed renames for sg_random.hxx
Ticket-Id: https://sourceforge.net/p/flightgear/codetickets/2595/
2021-05-28 11:58:57 +01:00
James Turner
e8952b6c0f Update tests for revised Subsystem API 2021-04-25 19:18:56 +01:00
James Turner
adae75821d CommRadio frequency updates from Sascha Reißner
Reject invalid frequencies from apt.dat in the loader, and fix
25Khz encoding to be the exact value (i.e round frequencies ending
in 20 and 70 to 25 and 75)

Fix ATCdialog to show 3 digits of comm radio frequency at all times,
and remove its rounding-conversion.

Finally, expand the tests to capture the new behaviour. Test for
EPLL is disabled for now because it contains an invalid frequency.
2021-04-01 14:46:21 +01:00
Julian Smith
2dda76b831 test_suite/unit_tests/Main/test_posinit.*: added test with AI disabled. 2021-03-27 21:55:35 +00:00
James Turner
4542691772 Add unit-test coverage for the transponder 2021-03-18 13:56:05 +00:00
James Turner
251b3aeb2b TimeManager: add unit-test for ETC time zones
Ensure when entering/exiting oceanic areas, we switch to/from an ETC
time-zone correctly
2021-03-13 15:57:05 +00:00
James Turner
4eecd088e8 TimeManager: handle reposition better
Extend the timeManager unit-tests to check for some movements, all
seems to work correctly now.
2021-03-12 14:45:25 +00:00
James Turner
c92c41a50f Switch test_suite build to use an OBJECT library
Remove use of BUILDING_TESTSUITE from headers. Where possible, move
test APIs to their own file in the test_suite dir (testApis.cxx). For
some others, add them to a special list of ‘sources which depend on
the build mode’. This will hopefully go away with some further
refactoring.
2021-03-08 16:59:15 +00:00
James Turner
81df48b858 Add tests for MP-runway start, and fix behaviour.
Fix a bug in how taxi-nodes were classified, which meant that MP start
on a runway was not applied correctly.
2021-03-08 10:23:43 +00:00
Julian Smith
84f95fe3c2 test_suite/unit_tests/Autopilot/: added unit test of pid-controller.
E.g.:
    test-suite -u PidControllerTests
    test-suite -u PidControllerTests::test
2021-03-07 21:57:50 +00:00
Julian Smith
3a754799c2 test_suite/testSuite.cxx: added example -u <unit-test-name>. 2021-03-07 21:57:50 +00:00
James Turner
4ca929fa61 Fix test for Jano’s dtRemainder init change 2021-03-07 13:08:29 +00:00
James Turner
8716801c8c Unit-test for Nasal parsing bug 2021-03-07 13:08:29 +00:00
Scott Giese
21330d2f31 Minor typo 2021-02-26 20:48:43 -06:00
Scott Giese
66ad9d8373 Check for nullptr.
Safety during invoke() and start() to ensure global_eventManager is valid.

Use unique_ptr for cleanup.
2021-02-26 20:48:03 -06:00
James Turner
335d0003cc Test Nasal airport.taxiways API 2021-02-24 11:19:44 +00:00
James Turner
7961f12e81 CommRadio: capture current behaviour for EPLL 2021-02-23 13:51:27 +00:00
James Turner
462fac1933 Fix CommRadio in 8.3Khz mode, when frequency does not match channel
Fix a bug where we would copy-assign a PropertyObject, when we
actually wanted to copy the value.

Thanks to Sascha Reißner for tracking the problem down.
2021-02-21 19:15:55 +00:00
Julian Smith
af3afb55db Fixed test-suite build error on OpenBSD.
assertEquals<> template requires first two args to be the same type, and old
code assumed that time_t was a long int.
2021-02-13 23:04:35 +00:00
Colin Geniet
9008b3194f AI: Fix unit problems for AIBase::vs
It was supposed to be in ft/min, but everything except AIAircraft was
using it as ft/sec. Change the name to AIBase::vs_fps and ensure the
same unit is used everywhere.
2021-02-11 09:27:36 +00:00
James Turner
71c09f0bcd Extended NavRadio tests by Huntley Palmer
Also covers the new nav radio code, as well as the old version.
2021-01-24 16:09:18 +00:00
James Turner
548b9d8bc0 System test for Options
Test various combinations of aircraft-dir, aircraft and fg-aircraft
options.
2021-01-24 15:01:45 +00:00
James Turner
9e77cdf6cb Add some real TimeManager tests. 2021-01-19 17:35:12 +00:00
Colin Geniet
b738058945 Tests: Add some unit tests for submodels
Tests:
- loading XML submodels file, using just about every documented tag.
- submodel release trigger
- initial submodel position and velocity
2021-01-18 11:45:41 +00:00
James Turner
02814ebe35 Tests: mark some expected-fail tests
Disable GPS::finalLegCourseTest, and one of the View index tests,
so that tests pass successfully. 

Also add some default properties so the skeleton traffic tests start
up without crashing.
2021-01-18 11:45:13 +00:00
James Turner
015ae01bc9 Add skeleton TimeManager test. 2021-01-18 11:01:28 +00:00
James Turner
ffda1a0cb8 Unit-tests: add initial DME, new nav radio tests
Very basic so far, lots more to be done on both.
2021-01-18 11:01:28 +00:00
Julian Smith
71c7659f98 test_suite/unit_tests/Main/test_posinit.cxx: add asserts for findParkingByName() returning null. 2021-01-01 17:54:10 +00:00
James Turner
7b87b061da Add coherent noise filter to the AP 2020-12-26 18:54:35 +00:00
James Turner
783212b954 Traffic: add a trivial test of createPushback
No validation yet, but creates all the needed pieces and doesn’t crash.
2020-12-21 13:25:15 +00:00
James Turner
62cdd30810 Fix a GPS bug identified by Jonathan Redpath
When in LEG mode, and within the intercept cone, but further away from
the leg waypoint than the leg origin, we were computing a bogus
abeam point and hence a bogus desired track.

Detect this situation, and invert the computed along-track-distance,
so the computed abeam point is actually near where we are, and not ahead
of us.
2020-12-14 21:04:50 +00:00
James Turner
c588f90a59 GPS: Extend a unit-test slightly 2020-12-14 13:03:57 +00:00
James Turner
7a3f8276a6 Add unit-tests for Route-manager commands
Fix some bugs in insert-waypt command discovered during the testing
(w00t, tests FTW)
2020-12-14 11:45:46 +00:00
James Turner
72f1b84837 Improve waypointFromString logic
- exclude POIs and some other types from the ident match, to avoid
  confusing results
- improve how the search vicinity is computed when inserting a leg,
  which is the common case for a route with a destination set. Use
  the midpoint of the leg ending at the insert position, as the optimal
  search vicinity
- move the waypointFromString code into route.cxx, since it is mostly
  independent of a FlightPlan instance
- extend the tests to cover the bug which flagged these issues

Ticket-Id: https://sourceforge.net/p/flightgear/codetickets/2372/
2020-12-13 17:55:32 +00:00
Scott Giese
b7fa7e2c1c Revert "Fix textNasalSys"
This reverts commit eabd4bbc7f.
2020-12-13 09:17:11 -06:00
Scott Giese
43c530b660 Modernize: std::string_literals 2020-12-05 14:25:59 -06:00
Scott Giese
eabd4bbc7f Fix textNasalSys 2020-12-05 13:35:48 -06:00
Julian Smith
f62e5b9ce3 CompositeViewer: Support for multiple view windows using osgViewer::CompositeViewer.
Overview:

    Previously Flightgear always used a single osgViewer::Viewer(), which
    inherits from both osgViewer::ViewerBase and osgViewer::View, giving a
    single view window.

    If CompositeViewer is enabled, we instead use a osgViewer::CompositeViewer
    which contains a list of osgViewer::View's. Each of these View's can have
    its own eye position, so we can have multiple different views of the same
    scene.

    Enable at runtime with: --composite-viewer=1

Changes to allow use of osgViewer::CompositeViewer:

    Previously FGRenderer had this method:

        osgViewer::Viewer* getViewer();

    This has been replaced by these two new methods:

        osgViewer::ViewerBase* getViewerBase();
        osgViewer::View* getView();

    If CompositeViewer is not enabled (the default), the actual runtime state
    is unchanged, and getViewerBase() and getView() both return a pointer to
    the singleton osgViewer::Viewer() object.

    If CompositeViewer is enabled, getViewerBase() returns a pointer to a
    singleton osgViewer::CompositeViewer object, and getView() returns a
    pointer to the first osgViewer::View in the osgViewer::CompositeViewer's
    list.

    The other significant change to FGRenderer() is the new method:

        osg::FrameStamp* getFrameStamp()

    If CompositeViewer is not enabled, this simply returns
    getView()->getFrameStamp(). If CompositeViewer is enabled it returns
    getViewerBase()->getFrameStamp(). It is important that code that previously
    called getView()->getFrameStamp() is changed to use the new method, because
    when CompositeViewer is enabled individual osgViewer::View's appear to
    return an osg::FrameStamp with zero frame number).

    All code that uses FGRenderer has been patched up to use the new methods so
    that things work as before regardless of whether CompositeViewer is enabled
    or not.

    We make FGRenderer::update() call SviewUpdate() which updates any extra
    views.

Extra view windows:

    If CompositeViewer is enabled, one can create top-level extra view windows
    by calling SviewCreate(). See src/Viewer/sview.hxx for details.

    Each extra view window has its own simgear::compositor::Compositor
    instance.

    Currently SviewCreate() can create extra view windows that clone the
    current view, or view from one point to another (e.g. from one multiplayer
    aircraft to the user's aircradt) or keep two aircraft in view, one at a
    fixed distance in the foreground.

    SviewCreate() can be called from nasal via new nasal commands "view-clone",
    "view-last-pair", "view-last-pair-double" and "view-push". Associated
    changes to fgdata gives access to these via the View menu. The "view-push"
    command tags the current view for later use by "view-last-pair" and
    "view-last-pair-double".

    Extra view windows created by SviewCreate() use a new view system called
    Sview, which allows views to be constructed at runtime instead of being
    hard-coded in *-set.xml files. This is work in progress and views aren't
    all fully implemented. For example Pilot view gets things slightly wrong
    with large roll values, Tower View AGL is not implemented, and we don't
    implement damping. See top of src/Viewer/sview.cxx for an overview.

OpenSceneGraph-3.4 issues:

    OSG-3.4's event handling seems to be incorrect with CompositeViewer -
    events get sent for the wrong window which causes issues with resize and
    closing. It doesn't seem to be possible to work around this, so closing
    extra view windows can end up closing the main window for example.

    OSG-3.6 seems to fix the problems.

    We warn if CompositeViewer is enabled and OpenSceneGraph is 3.4.
2020-11-21 13:27:02 +00:00
James Turner
423c754009 Reposition: tolerate more scenarios in ATC_mgr
When starting at an airport, but not at parking or a runway, create
an empty AIFlightPlan, and ensure the AIManager code doesn’t choke on
empty FPs.

Add a unit-test which simulates the C172 tutorial reposition logic,
which is a little gnarly.
2020-10-27 18:32:18 +00:00
legoboyvdlp R
b00520ffdb Add test case for issue with routepath at Paro. Also add support for approaches to the TestDelegate. 2020-10-13 09:32:11 +01:00
James Turner
830a890eff Tests: skeleton ViewManager/Views tests 2020-09-08 12:31:42 +01:00
James Turner
5da15c3773 TestSuite: Fix include paths for logging 2020-09-08 11:37:13 +01:00
James Turner
e46c6f587b AIFlightPlan: remove ‘erase’ option from Decrement
Thankfully, the erase option to DecrementWaypoint was never used, so
remove it, since it’s … mental.
2020-09-05 11:16:36 +01:00
James Turner
02cfaeabba Tests: AIFlightPlan Increment/Decrement
Capture the current behaviour of Increment/DecrementWaypoint in
AI flightplans, prior to making some simplifications. Especially try
to test the behaviour of the ‘increment and erase’ logic.
2020-09-05 11:14:00 +01:00
James Turner
f5b5828bd0 AIFlightPlan: add test for XML parsing
This meant some slight refactoring to expose some easier APIs for
testing, but the normal methods should be unaffected.
2020-09-05 10:44:43 +01:00
James Turner
3a3ff07883 Start testing FGAIFlightPlan 2020-09-05 10:44:43 +01:00
James Turner
1f6b43c38f More AI tests 2020-09-03 17:51:40 +01:00
James Turner
d1fc4b58cb Start creating tests of AIModel code
First test just creates the manager, and ensures the user aircraft
updates in sync with the real aircraft.
2020-09-03 17:51:40 +01:00
James Turner
37d820120d Unit-testing: tests for Nasal SGCommand API
Test adding/removing/invoking commands, and error handles when
duplicate adding and removing a command name.
2020-08-26 17:20:58 +01:00
James Turner
5dbab6e90e CMake: overhaul how we find 3rd-party files
Handle the standard windows-3rd-party setup (used by fgmeta) with no
extra options, and also handle the slightly odd setup we use on Jenkins.
Try to tolerate all permutations of setting MSVC_3RDPARTY_ROOT to 
different places in the hierarchy.

We no longer try to guess Boost_INCLUDEDIR by looking at parent dirs of
MSVC_3RDPARTY_ROOT, since this seemed kind of bad to me. Let’s try 
it and see.
2020-08-26 13:57:24 +01:00
James Turner
178d1beb80 Cmake: Remove version.h machinery
Merge this file into config.h, this means we can save an include path
everywhere.
2020-08-24 15:04:24 +01:00
James Turner
fef50310bf Cmake: fix some issues Scott spotted. 2020-08-23 18:15:07 +01:00
James Turner
218df89b29 Embedded resources: better cmake command
Use add_custom_command and an intermediate OBJECT library to avoid
rerunning fgrcc unless the XML input file has actually changed.
2020-08-23 11:31:37 +01:00
James Turner
47ff3e9f67 Improve CMake strucutre 2020-08-23 11:31:37 +01:00
Edward d'Auvergne
04ee8c34a4 TestSuite: Execution of multiple tests or suites using comma separated lists.
This enables options such as '-u AeroElementTests,YASimAtmosphereTests'.  It
should help tracking down bugs whereby a test failure or error is triggered
solely due to a previous test.
2020-08-17 20:14:32 +02:00
James Turner
a297c89144 Flightplans: add clearAll, rename clear -> clearLegs
Improve naming of clear() methods, and expose the new ones to Nasal.
this will allow RouteManager dialog ‘clear’ button to clear all, soon.

See ticket:
https://sourceforge.net/p/flightgear/codetickets/2064/
2020-08-17 16:11:10 +01:00