#include "config.h" #include "unitTestHelpers.hxx" #include <Main/globals.hxx> #include <Main/options.hxx> #include <Navaids/NavDataCache.hxx> #include <Time/TimeManager.hxx> #include <simgear/debug/logstream.hxx> #include <simgear/misc/sg_dir.hxx> #include <simgear/timing/timestamp.hxx> #include <iostream> static SGPath tests_fgdata; namespace fgtest { bool looksLikeFGData(const SGPath& path) { return (path / "defaults.xml").exists(); } SGPath fgdataPath() { return tests_fgdata; } void initTestGlobals(const std::string& testName) { sglog().setLogLevels( SG_ALL, SG_WARN ); sglog().setDeveloperMode(true); globals = new FGGlobals; bool foundRoot = false; if (std::getenv("FG_ROOT")) { SGPath fg_root = SGPath::fromEnv("FG_ROOT"); if (looksLikeFGData(fg_root)) { globals->set_fg_root(fg_root); foundRoot = true; } } if (!foundRoot) { SGPath pkgLibDir = SGPath::fromUtf8(PKGLIBDIR); if (looksLikeFGData(pkgLibDir)) { globals->set_fg_root(pkgLibDir); foundRoot = true; } } if (!foundRoot) { SGPath dataDir = SGPath::fromUtf8(FGSRCDIR) / ".." / "fgdata"; if (looksLikeFGData(dataDir)) { globals->set_fg_root(dataDir); foundRoot = true; } } if (!foundRoot) { std::cerr << "FGData not found" << std::endl; exit(EXIT_FAILURE); } tests_fgdata = globals->get_fg_root(); // current dir SGPath homePath = SGPath::fromUtf8(FGBUILDDIR) / "test_home"; if (!homePath.exists()) { (homePath / "dummyFile").create_dir(0755); } globals->set_fg_home(homePath); fgSetDefaults(); flightgear::NavDataCache* cache = flightgear::NavDataCache::createInstance(); if (cache->isRebuildRequired()) { std::cerr << "Navcache rebuild for testing" << std::flush; while (cache->rebuild() != flightgear::NavDataCache::REBUILD_DONE) { SGTimeStamp::sleepForMSec(1000); std::cerr << "." << std::flush; } } TimeManager* t = new TimeManager; t->init(); // establish mag-var data } void shutdownTestGlobals() { delete globals; } } // of namespace fgtest