diff --git a/src/scripting/scriptscheduler.cpp b/src/scripting/scriptscheduler.cpp index 4c6fa2d7d9..d0abf88b65 100644 --- a/src/scripting/scriptscheduler.cpp +++ b/src/scripting/scriptscheduler.cpp @@ -162,7 +162,7 @@ void ScriptScheduler::clearSchedule(std::optional group) { std::vector ScriptScheduler::progressTo(double newTime) { std::vector result; - if (!_enabled || newTime == _currentTime) { + if (!_enabled || newTime == _currentTime || _scripts.empty()) { // Update the new time _currentTime = newTime; return result; diff --git a/tests/test_scriptscheduler.cpp b/tests/test_scriptscheduler.cpp index 0cd2913ff7..58a512f088 100644 --- a/tests/test_scriptscheduler.cpp +++ b/tests/test_scriptscheduler.cpp @@ -38,7 +38,7 @@ TEST_CASE("ScriptScheduler: Simple Forward", "[scriptscheduler]") { ); using namespace openspace::scripting; - + ScriptScheduler scheduler; std::vector scripts; @@ -49,16 +49,16 @@ TEST_CASE("ScriptScheduler: Simple Forward", "[scriptscheduler]") { script.backwardScript = "BackwardScript1"; scripts.push_back(script); } - + scheduler.progressTo(openspace::Time::convertTime("2000 JAN 01")); scheduler.loadScripts(scripts); - + auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 02")); - REQUIRE(res.first == res.second); - + REQUIRE(res.empty()); + res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 03")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "ForwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "ForwardScript1"); openspace::SpiceManager::deinitialize(); } @@ -91,15 +91,15 @@ TEST_CASE("ScriptScheduler: Multiple Forward Single Jump", "[scriptscheduler]") scheduler.loadScripts(scripts); auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 02")); - REQUIRE(res.first == res.second); - + REQUIRE(res.empty()); + res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 04")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "ForwardScript1"); - + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "ForwardScript1"); + res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 06")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "ForwardScript2"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "ForwardScript2"); openspace::SpiceManager::deinitialize(); } @@ -127,18 +127,18 @@ TEST_CASE("ScriptScheduler: Multiple Forward Ordering", "[scriptscheduler]") { script2.backwardScript = "BackwardScript2"; scripts.push_back(script2); } - + ScriptScheduler scheduler; scheduler.progressTo(openspace::Time::convertTime("2000 JAN 01")); scheduler.loadScripts(scripts); - + auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 02")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 06")); - REQUIRE(std::distance(res.first, res.second) == 2); - REQUIRE(*(res.first) == "ForwardScript1"); - REQUIRE(*(std::next(res.first)) == "ForwardScript2"); + REQUIRE(res.size() == 2); + REQUIRE(res[0] == "ForwardScript1"); + REQUIRE(res[1] == "ForwardScript2"); openspace::SpiceManager::deinitialize(); } @@ -160,17 +160,17 @@ TEST_CASE("ScriptScheduler: Simple Backward", "[scriptscheduler]") { script1.backwardScript = "BackwardScript1"; scripts.push_back(script1); } - + ScriptScheduler scheduler; scheduler.progressTo(openspace::Time::convertTime("2000 JAN 05")); scheduler.loadScripts(scripts); - + auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 04")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 02")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "BackwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "BackwardScript1"); openspace::SpiceManager::deinitialize(); } @@ -198,21 +198,21 @@ TEST_CASE("ScriptScheduler: Multiple Backward Single Jump", "[scriptscheduler]") script2.backwardScript = "BackwardScript2"; scripts.push_back(script2); } - + ScriptScheduler scheduler; scheduler.progressTo(openspace::Time::convertTime("2000 JAN 07")); scheduler.loadScripts(scripts); - + auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 06")); - REQUIRE(res.first == res.second); - + REQUIRE(res.empty()); + res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 04")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "BackwardScript2"); - + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "BackwardScript2"); + res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 01")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "BackwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "BackwardScript1"); openspace::SpiceManager::deinitialize(); } @@ -240,18 +240,18 @@ TEST_CASE("ScriptScheduler: Multiple Backward Ordering", "[scriptscheduler]") { script2.backwardScript = "BackwardScript2"; scripts.push_back(script2); } - + ScriptScheduler scheduler; scheduler.progressTo(openspace::Time::convertTime("2000 JAN 07")); scheduler.loadScripts(scripts); - + auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 06")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 01")); - REQUIRE(std::distance(res.first, res.second) == 2); - REQUIRE(*(res.first) == "BackwardScript2"); - REQUIRE(*(std::next(res.first)) == "BackwardScript1"); + REQUIRE(res.size() == 2); + REQUIRE(res[0] == "BackwardScript2"); + REQUIRE(res[1] == "BackwardScript1"); openspace::SpiceManager::deinitialize(); } @@ -263,24 +263,24 @@ TEST_CASE("ScriptScheduler: Empty", "[scriptscheduler]") { ); using namespace openspace::scripting; - + static const std::vector TestTimes = { 0.0, 1.0, -1.0, std::numeric_limits::min(), -std::numeric_limits::max(), std::numeric_limits::max() }; - + // First test if a new ScriptScheduler will return an empty list for (double t : TestTimes) { ScriptScheduler scheduler; auto res = scheduler.progressTo(t); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); } - + // Then test the same thing but keeping the same ScriptScheduler ScriptScheduler scheduler; for (double t : TestTimes) { auto res = scheduler.progressTo(t); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); } openspace::SpiceManager::deinitialize(); @@ -294,7 +294,7 @@ TEST_CASE("ScriptScheduler: Forward Backwards", "[scriptscheduler]") { using namespace openspace::scripting; using namespace std::string_literals; - + std::vector scripts; { ScriptScheduler::ScheduledScript script1; @@ -309,25 +309,25 @@ TEST_CASE("ScriptScheduler: Forward Backwards", "[scriptscheduler]") { script2.backwardScript = "BackwardScript2"; scripts.push_back(script2); } - + ScriptScheduler scheduler; scheduler.progressTo(openspace::Time::convertTime("2000 JAN 01")); scheduler.loadScripts(scripts); - + auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 04")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "ForwardScript1"); - + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "ForwardScript1"); + res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 01")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "BackwardScript1"); - + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "BackwardScript1"); + res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 07")); - REQUIRE(std::distance(res.first, res.second) == 2); - + REQUIRE(res.size() == 2); + res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 04")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "BackwardScript2"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "BackwardScript2"); openspace::SpiceManager::deinitialize(); } @@ -355,19 +355,19 @@ TEST_CASE("ScriptScheduler: Rewind", "[scriptscheduler]") { script2.backwardScript = "BackwardScript2"; scripts.push_back(script2); } - + ScriptScheduler scheduler; scheduler.progressTo(openspace::Time::convertTime("2000 JAN 01")); scheduler.loadScripts(scripts); - + auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 07")); - REQUIRE(std::distance(res.first, res.second) == 2); - + REQUIRE(res.size() == 2); + scheduler.rewind(); - + res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 04")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "ForwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "ForwardScript1"); openspace::SpiceManager::deinitialize(); } @@ -379,12 +379,12 @@ TEST_CASE("ScriptScheduler: CurrentTime", "[scriptscheduler]") { ); using namespace openspace::scripting; - + static const std::vector TestValues = { 0.0, 1.0, 42.0, std::numeric_limits::min(), -std::numeric_limits::max(), std::numeric_limits::max() }; - + for (double t : TestValues) { ScriptScheduler scheduler; scheduler.progressTo(t); @@ -402,7 +402,7 @@ TEST_CASE("ScriptScheduler: All Scripts", "[scriptscheduler]") { using namespace openspace::scripting; using namespace std::string_literals; - + std::vector scripts; { ScriptScheduler::ScheduledScript script1; @@ -423,7 +423,7 @@ TEST_CASE("ScriptScheduler: All Scripts", "[scriptscheduler]") { script3.backwardScript = "BackwardScript3"; scripts.push_back(script3); } - + ScriptScheduler scheduler; scheduler.loadScripts(scripts); @@ -458,18 +458,18 @@ TEST_CASE("ScriptScheduler: Jump Equal", "[scriptscheduler]") { scheduler.loadScripts(scripts); auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 03 11:00:00")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 03 12:00:00")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "ForwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "ForwardScript1"); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 03 12:01:00")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 03 12:00:00")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "BackwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "BackwardScript1"); openspace::SpiceManager::deinitialize(); } @@ -496,11 +496,11 @@ TEST_CASE("ScriptScheduler: Same Time", "[scriptscheduler]") { scheduler.loadScripts(scripts); auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 03 12:00:00")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "ForwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "ForwardScript1"); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 03 12:00:00")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); openspace::SpiceManager::deinitialize(); } @@ -527,17 +527,17 @@ TEST_CASE("ScriptScheduler: Multi Inner Jump", "[scriptscheduler]") { scheduler.loadScripts(scripts); auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 03 10:00:00")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 03 11:00:00")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 03 13:00:00")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "ForwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "ForwardScript1"); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 03 12:30:00")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); openspace::SpiceManager::deinitialize(); } @@ -571,15 +571,15 @@ TEST_CASE( scheduler.loadScripts({ script2 }); auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 02")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 04")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "ForwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "ForwardScript1"); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 06")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "ForwardScript2"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "ForwardScript2"); openspace::SpiceManager::deinitialize(); } @@ -610,12 +610,12 @@ TEST_CASE("ScriptScheduler: Multiple Forward Ordering Multiple Load" "[scriptsch scheduler.loadScripts({ script2 }); auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 02")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 06")); - REQUIRE(std::distance(res.first, res.second) == 2); - REQUIRE(*(res.first) == "ForwardScript1"); - REQUIRE(*(std::next(res.first)) == "ForwardScript2"); + REQUIRE(res.size() == 2); + REQUIRE(res[0] == "ForwardScript1"); + REQUIRE(res[1] == "ForwardScript2"); openspace::SpiceManager::deinitialize(); } @@ -648,15 +648,15 @@ TEST_CASE( scheduler.loadScripts({ script2 }); auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 06")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 04")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "BackwardScript2"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "BackwardScript2"); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 01")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "BackwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "BackwardScript1"); openspace::SpiceManager::deinitialize(); } @@ -689,14 +689,14 @@ TEST_CASE( scheduler.loadScripts({ script1 }); scheduler.loadScripts({ script2 }); - std::pair res = + std::vector res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 06")); - REQUIRE(res.first == res.second); + REQUIRE(res.empty()); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 01")); - REQUIRE(std::distance(res.first, res.second) == 2); - REQUIRE(*(res.first) == "BackwardScript2"); - REQUIRE(*(std::next(res.first)) == "BackwardScript1"); + REQUIRE(res.size() == 2); + REQUIRE(res[0] == "BackwardScript2"); + REQUIRE(res[1] == "BackwardScript1"); openspace::SpiceManager::deinitialize(); } @@ -726,19 +726,19 @@ TEST_CASE("ScriptScheduler: Forward Backwards Multiple Load", "[scriptscheduler] scheduler.loadScripts({ script2 }); auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 04")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "ForwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "ForwardScript1"); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 01")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "BackwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "BackwardScript1"); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 07")); - REQUIRE(std::distance(res.first, res.second) == 2); + REQUIRE(res.size() == 2); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 04")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "BackwardScript2"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "BackwardScript2"); openspace::SpiceManager::deinitialize(); } @@ -768,13 +768,13 @@ TEST_CASE("ScriptScheduler: Rewind Multiple Load", "[scriptscheduler]") { scheduler.loadScripts({ script2 }); auto res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 07")); - REQUIRE(std::distance(res.first, res.second) == 2); + REQUIRE(res.size() == 2); scheduler.rewind(); res = scheduler.progressTo(openspace::Time::convertTime("2000 JAN 04")); - REQUIRE(std::distance(res.first, res.second) == 1); - REQUIRE(*(res.first) == "ForwardScript1"); + REQUIRE(res.size() == 1); + REQUIRE(res[0] == "ForwardScript1"); openspace::SpiceManager::deinitialize(); }