Serenity Operating System
at master 68 lines 1.6 kB view raw
1/* 2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include <LibTest/TestCase.h> 8 9#include <AK/CircularQueue.h> 10#include <AK/DeprecatedString.h> 11 12TEST_CASE(basic) 13{ 14 CircularQueue<int, 3> ints; 15 EXPECT(ints.is_empty()); 16 ints.enqueue(1); 17 ints.enqueue(2); 18 ints.enqueue(3); 19 EXPECT_EQ(ints.size(), 3u); 20 21 ints.enqueue(4); 22 EXPECT_EQ(ints.size(), 3u); 23 EXPECT_EQ(ints.dequeue(), 2); 24 EXPECT_EQ(ints.dequeue(), 3); 25 EXPECT_EQ(ints.dequeue(), 4); 26 EXPECT_EQ(ints.size(), 0u); 27} 28 29TEST_CASE(complex_type) 30{ 31 CircularQueue<DeprecatedString, 2> strings; 32 33 strings.enqueue("ABC"); 34 strings.enqueue("DEF"); 35 36 EXPECT_EQ(strings.size(), 2u); 37 38 strings.enqueue("abc"); 39 strings.enqueue("def"); 40 41 EXPECT_EQ(strings.dequeue(), "abc"); 42 EXPECT_EQ(strings.dequeue(), "def"); 43} 44 45TEST_CASE(complex_type_clear) 46{ 47 CircularQueue<DeprecatedString, 5> strings; 48 strings.enqueue("xxx"); 49 strings.enqueue("xxx"); 50 strings.enqueue("xxx"); 51 strings.enqueue("xxx"); 52 strings.enqueue("xxx"); 53 EXPECT_EQ(strings.size(), 5u); 54 strings.clear(); 55 EXPECT_EQ(strings.size(), 0u); 56} 57 58struct ConstructorCounter { 59 static unsigned s_num_constructor_calls; 60 ConstructorCounter() { ++s_num_constructor_calls; } 61}; 62unsigned ConstructorCounter::s_num_constructor_calls = 0; 63 64TEST_CASE(should_not_call_value_type_constructor_when_created) 65{ 66 CircularQueue<ConstructorCounter, 10> queue; 67 EXPECT_EQ(0u, ConstructorCounter::s_num_constructor_calls); 68}