Serenity Operating System
1/*
2 * Copyright (c) 2021, Jesse Buhagiar <jooster669@gmail.com>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#include <LibTest/TestCase.h>
8
9#include <AK/Stack.h>
10
11TEST_CASE(basic)
12{
13 AK::Stack<int, 3> stack;
14
15 EXPECT(stack.is_empty() == true);
16 stack.push(2);
17 stack.push(4);
18 stack.push(17);
19 EXPECT(stack.size() == 3);
20 EXPECT(stack.top() == 17);
21 EXPECT_EQ(stack.pop(), true);
22 EXPECT_EQ(stack.pop(), true);
23 EXPECT_EQ(stack.pop(), true);
24 EXPECT(stack.is_empty());
25}
26
27TEST_CASE(complex_type)
28{
29 AK::Stack<DeprecatedString, 4> stack;
30
31 EXPECT_EQ(stack.is_empty(), true);
32 EXPECT(stack.push("Well"));
33 EXPECT(stack.push("Hello"));
34 EXPECT(stack.push("Friends"));
35 EXPECT(stack.push(":^)"));
36 EXPECT_EQ(stack.top(), ":^)");
37 EXPECT_EQ(stack.pop(), true);
38 EXPECT_EQ(stack.top(), "Friends");
39 EXPECT_EQ(stack.pop(), true);
40 EXPECT_EQ(stack.top(), "Hello");
41 EXPECT_EQ(stack.pop(), true);
42 EXPECT_EQ(stack.top(), "Well");
43 EXPECT_EQ(stack.pop(), true);
44 EXPECT(stack.is_empty());
45}