Serenity Operating System
at master 63 lines 1.3 kB view raw
1/* 2 * Copyright (c) 2020, Fei Wu <f.eiwu@yahoo.com> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include <LibTest/TestCase.h> 8 9#include <AK/CircularDeque.h> 10#include <AK/DeprecatedString.h> 11#include <AK/StdLibExtras.h> 12 13TEST_CASE(enqueue_begin) 14{ 15 CircularDeque<int, 3> ints; 16 17 ints.enqueue_begin(0); 18 EXPECT_EQ(ints.size(), 1u); 19 EXPECT_EQ(ints.first(), 0); 20 21 ints.enqueue_begin(1); 22 EXPECT_EQ(ints.size(), 2u); 23 EXPECT_EQ(ints.first(), 1); 24 EXPECT_EQ(ints.last(), 0); 25 26 ints.enqueue_begin(2); 27 EXPECT_EQ(ints.size(), 3u); 28 EXPECT_EQ(ints.first(), 2); 29 EXPECT_EQ(ints.last(), 0); 30 31 ints.enqueue_begin(3); 32 EXPECT_EQ(ints.size(), 3u); 33 EXPECT_EQ(ints.first(), 3); 34 EXPECT_EQ(ints.at(1), 2); 35 EXPECT_EQ(ints.last(), 1); 36} 37 38TEST_CASE(enqueue_begin_being_moved_from) 39{ 40 CircularDeque<DeprecatedString, 2> strings; 41 42 DeprecatedString str { "test" }; 43 strings.enqueue_begin(move(str)); 44 EXPECT(str.is_null()); 45} 46 47TEST_CASE(deque_end) 48{ 49 CircularDeque<int, 3> ints; 50 ints.enqueue(0); 51 ints.enqueue(1); 52 ints.enqueue(2); 53 EXPECT_EQ(ints.size(), 3u); 54 55 EXPECT_EQ(ints.dequeue_end(), 2); 56 EXPECT_EQ(ints.size(), 2u); 57 58 EXPECT_EQ(ints.dequeue_end(), 1); 59 EXPECT_EQ(ints.size(), 1u); 60 61 EXPECT_EQ(ints.dequeue_end(), 0); 62 EXPECT(ints.is_empty()); 63}