#pragma once #include #include #include "manifest_parser.hpp" #include #include struct RunContext; class TestRunnerMapObserver; struct TestMetadata; class TestRunner { public: explicit TestRunner(Manifest); bool run(TestMetadata&, const std::set&); void reset(); // Manifest const Manifest& getManifest() const; void doShuffle(uint32_t seed); private: bool runOperations(const std::string& key, TestMetadata&, RunContext&); bool runInjectedProbesBegin(TestMetadata&, const std::set&, RunContext&); bool runInjectedProbesEnd(TestMetadata&, const std::set&, RunContext&, mbgl::gfx::RenderingStats); bool checkQueryTestResults(mbgl::PremultipliedImage&& actualImage, std::vector&& features, TestMetadata&); bool checkRenderTestResults(mbgl::PremultipliedImage&& image, TestMetadata&); struct Impl { Impl(const TestMetadata&); ~Impl(); std::unique_ptr observer; mbgl::HeadlessFrontend frontend; mbgl::Map map; }; std::unordered_map> maps; Manifest manifest; };