#include #include #include #include class TestStep { public: virtual void run() = 0; // name for logging purposes }; typedef std::vector 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 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; }