/* SPDX-License-Identifier: Unlicense */ #include "vec.h" #include "doctest/doctest.h" TEST_CASE("Push, access and pop trivial data") { Vec 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 v{}; v.PushBack(10); Vec 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 vi{}; vi.PushBack(10); Vec> 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> 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); }