summaryrefslogtreecommitdiff
path: root/AK
diff options
context:
space:
mode:
authorLenny Maiorani <lenny@colorado.edu>2020-10-17 09:07:44 -0400
committerAndreas Kling <kling@serenityos.org>2020-10-17 23:21:00 +0200
commit919fc7a8141ab3f3706083f099e3ab36bf84f798 (patch)
treeb507110eaa968b2a0f060cd8b2b788b6230ef049 /AK
parentc9ca897a4524c4830337434267153b933ace26b1 (diff)
downloadserenity-919fc7a8141ab3f3706083f099e3ab36bf84f798.zip
CircularQueue: Ensure constructor does not construct any values
Problem: - There is no test which guarantees the CircularQueue does not construct any objects of the value type. The goal is to have uninitialized memory which can be used. Solution: - Add a test requiring that the constructor of the value type is never called.
Diffstat (limited to 'AK')
-rw-r--r--AK/Tests/TestCircularQueue.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/AK/Tests/TestCircularQueue.cpp b/AK/Tests/TestCircularQueue.cpp
index 65425aa1fb..53a7803b68 100644
--- a/AK/Tests/TestCircularQueue.cpp
+++ b/AK/Tests/TestCircularQueue.cpp
@@ -75,4 +75,16 @@ TEST_CASE(complex_type_clear)
EXPECT_EQ(strings.size(), 0u);
}
+struct ConstructorCounter {
+ static unsigned s_num_constructor_calls;
+ ConstructorCounter() { ++s_num_constructor_calls; }
+};
+unsigned ConstructorCounter::s_num_constructor_calls = 0;
+
+TEST_CASE(should_not_call_value_type_constructor_when_created)
+{
+ CircularQueue<ConstructorCounter, 10> queue;
+ EXPECT_EQ(0u, ConstructorCounter::s_num_constructor_calls);
+}
+
TEST_MAIN(CircularQueue)