#include "aare/core/ProducerConsumerQueue.hpp" #include // 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; 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)); // 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("fail"){ // CHECK(false); // }