summaryrefslogtreecommitdiff
path: root/src/vec_tests.cpp
diff options
context:
space:
mode:
authorOxore <oxore@protonmail.com>2025-01-03 17:07:00 +0300
committerOxore <oxore@protonmail.com>2025-01-07 14:39:01 +0300
commitcb96278e25140cfcc1afc22df2102bcf3b6ae38c (patch)
tree9e93bd8a5fb4d5fbc177924b6b25ca8cd04e7fd7 /src/vec_tests.cpp
parent810dc87cd5173f8cfc81c774fd49cf8f928a9ae8 (diff)
Impl extended trace table format parser
Diffstat (limited to 'src/vec_tests.cpp')
-rw-r--r--src/vec_tests.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/vec_tests.cpp b/src/vec_tests.cpp
new file mode 100644
index 0000000..d3a4b6f
--- /dev/null
+++ b/src/vec_tests.cpp
@@ -0,0 +1,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);
+}