#include <vector> #include <simgear/props/condition.hxx> #include <simgear/props/props_io.hxx> #include <simgear/math/SGMath.hxx> class TestStep { public: virtual void run() = 0; // name for logging purposes }; typedef std::vector<TestStep*> TestStepSequence; class SimulateStep : public TestStep { public: void run() override { } private: double m_count; double m_dt; SGGeod m_endPosition; double m_endHeadingTrueDeg; // other fake FDM data }; class CommandStep : public TestStep { public: void run() override { // build the command and run it } private: SGPropertyNode_ptr m_cmd; }; class CheckStep : public TestStep { public: void run() override { for (auto cond : m_conditions) { // eval // if failed, boom } } private: std::vector<SGConditionRef> m_conditions; }; int main(int argc, char* argv[]) { // parse XML // find test name // wipe working dir // create working dir // build test stages // read and create subsystems // execute in turn return EXIT_SUCCESS; }