#include #include #include #include // binary semaphores currently only supported on linux #if defined(FSFW_OSAL_LINUX) || defined(FSFW_OSAL_FREERTOS) TEST_CASE("Binary Semaphore Test", "[BinSemaphore]") { // perform set-up here SemaphoreIF* binSemaph = SemaphoreFactory::instance()->createBinarySemaphore(); REQUIRE(binSemaph != nullptr); SECTION("Simple Test") { // set-up is run for each section REQUIRE(binSemaph->getSemaphoreCounter() == 1); REQUIRE(binSemaph->release() == static_cast(SemaphoreIF::SEMAPHORE_NOT_OWNED)); REQUIRE(binSemaph->acquire(SemaphoreIF::POLLING) == returnvalue::OK); { // not precise enough on linux.. should use clock instead.. // Stopwatch stopwatch(false); // REQUIRE(binSemaph->acquire(SemaphoreIF::TimeoutType::WAITING, 5) == // SemaphoreIF::SEMAPHORE_TIMEOUT); // dur_millis_t time = stopwatch.stop(); // CHECK(time == 5); } REQUIRE(binSemaph->getSemaphoreCounter() == 0); REQUIRE(binSemaph->release() == returnvalue::OK); } SemaphoreFactory::instance()->deleteSemaphore(binSemaph); // perform tear-down here } TEST_CASE("Counting Semaphore Test", "[CountingSemaph]") { SECTION("Simple Test") {} } #endif