imported from "final" folder

This commit is contained in:
2025-11-28 12:12:50 +01:00
parent f9288986cf
commit ff8e725b35
1061 changed files with 225150 additions and 96 deletions

View File

@@ -0,0 +1,51 @@
#include "doctest.h"
#include "fl/async.h"
#include "fl/task.h"
#include "fl/time.h"
#include "fl/warn.h"
TEST_CASE("Async tasks run correctly [async]") {
// Clear any leftover tasks from previous tests
fl::Scheduler::instance().clear_all_tasks();
SUBCASE("A simple task runs") {
bool task_ran = false;
auto task = fl::task::every_ms(10);
task.then([&task_ran]() {
task_ran = true;
});
fl::Scheduler::instance().add_task(task);
fl::Scheduler::instance().update();
REQUIRE(task_ran);
// Clear task after this subcase to prevent interference
fl::Scheduler::instance().clear_all_tasks();
}
SUBCASE("Task timing works correctly") {
// Clear any leftover tasks from previous subcases
fl::Scheduler::instance().clear_all_tasks();
int run_count = 0;
auto task = fl::task::every_ms(50); // 50ms interval
task.then([&run_count]() {
run_count++;
});
fl::Scheduler::instance().add_task(task);
// Run immediately - should execute
fl::Scheduler::instance().update();
REQUIRE(run_count == 1);
// Run again immediately - should not execute (not enough time passed)
fl::Scheduler::instance().update();
REQUIRE(run_count == 1);
// Clear task after this subcase
fl::Scheduler::instance().clear_all_tasks();
}
}