1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
/* SPDX-License-Identifier: Unlicense
*/
#include "vec.h"
#include "doctest/doctest.h"
TEST_CASE("Push, access and pop trivial data") {
Vec<int> v{};
CHECK_EQ(v.Size(), 0);
v.PushBack(10);
v.PushBack(11);
v.PushBack(12);
CHECK_EQ(v.Size(), 3);
CHECK_EQ(10, v[0]);
CHECK_EQ(11, v[1]);
CHECK_EQ(12, v[2]);
CHECK_EQ(12, v.PopBack());
CHECK_EQ(11, v.PopBack());
CHECK_EQ(10, v.PopBack());
CHECK_EQ(v.Size(), 0);
}
TEST_CASE("Copy constructor should copy") {
Vec<int> v{};
v.PushBack(10);
Vec<int> v2(v);
CHECK_EQ(v2.Size(), 1);
CHECK_EQ(10, v[0]);
CHECK_EQ(v.Size(), 1);
CHECK_EQ(10, v[0]);
CHECK_EQ(v, v2);
}
TEST_CASE("Push, access and pop vec of vecs") {
Vec<int> vi{};
vi.PushBack(10);
Vec<Vec<int>> vv{};
CHECK_EQ(vv.Size(), 0);
vv.PushBack(vi);
vv.PushBack(vi);
CHECK_EQ(vv.Size(), 2);
CHECK_EQ(vi, vv[1]);
CHECK_EQ(vi, vv[0]);
Vec<Vec<int>> vv2{vv};
CHECK_EQ(vi.Size(), vv[0].Size());
CHECK_EQ(vi, vv[0]);
const auto popvi = vv.PopBack();
CHECK_EQ(vi.Size(), popvi.Size());
CHECK_EQ(vv2.Size(), 2);
}
|