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.
This commit is contained in:
Lenny Maiorani 2020-10-17 09:07:44 -04:00 committed by Andreas Kling
parent c9ca897a45
commit 919fc7a814
Notes: sideshowbarker 2024-07-19 01:52:05 +09:00

View file

@ -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)