From d87855004fda28d5e2cce61b97b1d9212a94397b Mon Sep 17 00:00:00 2001 From: Bechir Date: Thu, 28 Mar 2024 15:25:10 +0100 Subject: [PATCH] uncomment folly tests --- core/test/CircularFifo.test.cpp | 192 +++++++++++------------ core/test/ProducerConsumerQueue.test.cpp | 84 +++++----- 2 files changed, 138 insertions(+), 138 deletions(-) diff --git a/core/test/CircularFifo.test.cpp b/core/test/CircularFifo.test.cpp index 67abe3b..c3ff995 100644 --- a/core/test/CircularFifo.test.cpp +++ b/core/test/CircularFifo.test.cpp @@ -1,116 +1,116 @@ -// #include + #include -// #include "aare/CircularFifo.hpp" + #include "aare/CircularFifo.hpp" -// using aare::CircularFifo; + using aare::CircularFifo; -// // Only for testing. To make sure we can avoid copy constructor -// // and copy assignment + // Only for testing. To make sure we can avoid copy constructor + // and copy assignment -// struct MoveOnlyInt { -// int value{}; + struct MoveOnlyInt { + int value{}; -// MoveOnlyInt() = default; -// MoveOnlyInt(int i) : value(i){}; -// MoveOnlyInt(const MoveOnlyInt &) = delete; -// MoveOnlyInt &operator=(const MoveOnlyInt &) = delete; -// MoveOnlyInt(MoveOnlyInt &&other) { std::swap(value, other.value); } -// MoveOnlyInt &operator=(MoveOnlyInt &&other) { -// std::swap(value, other.value); -// return *this; -// } -// bool operator==(int other) const { return value == other; } -// }; + MoveOnlyInt() = default; + MoveOnlyInt(int i) : value(i){}; + MoveOnlyInt(const MoveOnlyInt &) = delete; + MoveOnlyInt &operator=(const MoveOnlyInt &) = delete; + MoveOnlyInt(MoveOnlyInt &&other) { std::swap(value, other.value); } + MoveOnlyInt &operator=(MoveOnlyInt &&other) { + std::swap(value, other.value); + return *this; + } + bool operator==(int other) const { return value == other; } + }; -// TEST_CASE("CircularFifo can be default constructed") { CircularFifo f; } + TEST_CASE("CircularFifo can be default constructed") { CircularFifo f; } -// TEST_CASE("Newly constructed fifo has the right size") { -// size_t size = 17; -// CircularFifo f(size); -// CHECK(f.numFreeSlots() == size); -// CHECK(f.numFilledSlots() == 0); -// } + TEST_CASE("Newly constructed fifo has the right size") { + size_t size = 17; + CircularFifo f(size); + CHECK(f.numFreeSlots() == size); + CHECK(f.numFilledSlots() == 0); + } -// TEST_CASE("Can fit size number of objects") { -// size_t size = 8; -// size_t numPushedItems = 0; -// CircularFifo f(size); -// for (size_t i = 0; i < size; ++i) { -// MoveOnlyInt a; -// bool popped = f.try_pop_free(a); -// CHECK(popped); -// if (popped) { -// a.value = i; -// bool pushed = f.try_push_value(std::move(a)); -// CHECK(pushed); -// if (pushed) -// numPushedItems++; -// } -// } -// CHECK(f.numFreeSlots() == 0); -// CHECK(f.numFilledSlots() == size); -// CHECK(numPushedItems == size); -// } + TEST_CASE("Can fit size number of objects") { + size_t size = 8; + size_t numPushedItems = 0; + CircularFifo f(size); + for (size_t i = 0; i < size; ++i) { + MoveOnlyInt a; + bool popped = f.try_pop_free(a); + CHECK(popped); + if (popped) { + a.value = i; + bool pushed = f.try_push_value(std::move(a)); + CHECK(pushed); + if (pushed) + numPushedItems++; + } + } + CHECK(f.numFreeSlots() == 0); + CHECK(f.numFilledSlots() == size); + CHECK(numPushedItems == size); + } -// TEST_CASE("Push move only type") { -// CircularFifo f; -// f.push_value(5); -// } + TEST_CASE("Push move only type") { + CircularFifo f; + f.push_value(5); + } -// TEST_CASE("Push pop") { -// CircularFifo f; -// f.push_value(MoveOnlyInt(1)); + TEST_CASE("Push pop") { + CircularFifo f; + f.push_value(MoveOnlyInt(1)); -// auto a = f.pop_value(); -// CHECK(a == 1); -// } + auto a = f.pop_value(); + CHECK(a == 1); + } -// TEST_CASE("Pop free and then push") { -// CircularFifo f; + TEST_CASE("Pop free and then push") { + CircularFifo f; -// auto a = f.pop_free(); -// a.value = 5; -// f.push_value(std::move(a)); // Explicit move since we can't copy -// auto b = f.pop_value(); + auto a = f.pop_free(); + a.value = 5; + f.push_value(std::move(a)); // Explicit move since we can't copy + auto b = f.pop_value(); -// CHECK(a == 0); // Moved from value -// CHECK(b == 5); // Original value -// } + CHECK(a == 0); // Moved from value + CHECK(b == 5); // Original value + } -// TEST_CASE("Skip the first value") { -// CircularFifo f; + TEST_CASE("Skip the first value") { + CircularFifo f; -// for (int i = 0; i != 10; ++i) { -// auto a = f.pop_free(); -// a.value = i + 1; -// f.push_value(std::move(a)); // Explicit move since we can't copy -// } + for (int i = 0; i != 10; ++i) { + auto a = f.pop_free(); + a.value = i + 1; + f.push_value(std::move(a)); // Explicit move since we can't copy + } -// auto b = f.pop_value(); -// CHECK(b == 1); -// f.next(); -// auto c = f.pop_value(); -// CHECK(c == 3); -// } + auto b = f.pop_value(); + CHECK(b == 1); + f.next(); + auto c = f.pop_value(); + CHECK(c == 3); + } -// TEST_CASE("Use in place and move to free") { -// size_t size = 18; -// CircularFifo f(size); + TEST_CASE("Use in place and move to free") { + size_t size = 18; + CircularFifo f(size); -// //Push 10 values to the fifo -// for (int i = 0; i != 10; ++i) { -// auto a = f.pop_free(); -// a.value = i + 1; -// f.push_value(std::move(a)); // Explicit move since we can't copy -// } + //Push 10 values to the fifo + for (int i = 0; i != 10; ++i) { + auto a = f.pop_free(); + a.value = i + 1; + f.push_value(std::move(a)); // Explicit move since we can't copy + } -// auto b = f.frontPtr(); -// CHECK(*b == 1); -// CHECK(f.numFilledSlots() == 10); -// CHECK(f.numFreeSlots() == size-10); -// f.next(); -// auto c = f.frontPtr(); -// CHECK(*c == 2); -// CHECK(f.numFilledSlots() == 9); -// CHECK(f.numFreeSlots() == size-9); -// } + auto b = f.frontPtr(); + CHECK(*b == 1); + CHECK(f.numFilledSlots() == 10); + CHECK(f.numFreeSlots() == size-10); + f.next(); + auto c = f.frontPtr(); + CHECK(*c == 2); + CHECK(f.numFilledSlots() == 9); + CHECK(f.numFreeSlots() == size-9); + } diff --git a/core/test/ProducerConsumerQueue.test.cpp b/core/test/ProducerConsumerQueue.test.cpp index d46e704..993a374 100644 --- a/core/test/ProducerConsumerQueue.test.cpp +++ b/core/test/ProducerConsumerQueue.test.cpp @@ -1,49 +1,49 @@ -// #include -// #include "aare/ProducerConsumerQueue.hpp" + #include + #include "aare/ProducerConsumerQueue.hpp" -// // using arve::SimpleQueue; -// TEST_CASE("push pop"){ + // using arve::SimpleQueue; + TEST_CASE("push pop"){ -// folly::ProducerConsumerQueue q(5); -// int a = 3; -// int b = 8; -// CHECK(q.sizeGuess() == 0); -// CHECK(q.write(a)); -// CHECK(q.sizeGuess() == 1); -// CHECK(q.write(b)); -// CHECK(q.sizeGuess() == 2); -// int c = 0; + folly::ProducerConsumerQueue q(5); + int a = 3; + int b = 8; + CHECK(q.sizeGuess() == 0); + CHECK(q.write(a)); + CHECK(q.sizeGuess() == 1); + CHECK(q.write(b)); + CHECK(q.sizeGuess() == 2); + int c = 0; -// CHECK(q.read(c)); -// CHECK(c == 3); -// CHECK(q.sizeGuess() == 1); -// CHECK(q.read(c)); -// CHECK(c == 8); -// CHECK(q.sizeGuess() == 0); -// } + CHECK(q.read(c)); + CHECK(c == 3); + CHECK(q.sizeGuess() == 1); + CHECK(q.read(c)); + CHECK(c == 8); + CHECK(q.sizeGuess() == 0); + } -// TEST_CASE("Cannot push to a full queue"){ -// folly::ProducerConsumerQueue q(3); -// int a = 3; -// int b = 4; -// int c = 0; -// CHECK(q.write(a)); -// CHECK(q.write(b)); -// CHECK_FALSE(q.write(a)); + TEST_CASE("Cannot push to a full queue"){ + folly::ProducerConsumerQueue q(3); + int a = 3; + int b = 4; + int c = 0; + CHECK(q.write(a)); + CHECK(q.write(b)); + CHECK_FALSE(q.write(a)); -// //values are still ok -// CHECK(q.read(c)); -// CHECK(c == 3); -// CHECK(q.read(c)); -// CHECK(c == 4); -// } + //values are still ok + CHECK(q.read(c)); + CHECK(c == 3); + CHECK(q.read(c)); + CHECK(c == 4); + } -// TEST_CASE("Cannot pop from an empty queue"){ -// folly::ProducerConsumerQueue q(2); -// int a=0; -// CHECK_FALSE(q.read(a)); -// } + TEST_CASE("Cannot pop from an empty queue"){ + folly::ProducerConsumerQueue q(2); + int a=0; + CHECK_FALSE(q.read(a)); + } -// // TEST_CASE("fail"){ -// // CHECK(false); -// // } \ No newline at end of file + // TEST_CASE("fail"){ + // CHECK(false); + // }