diff options
author | Dominick Allen <djallen@librehumanitas.org> | 2025-03-30 23:08:43 -0500 |
---|---|---|
committer | Dominick Allen <djallen@librehumanitas.org> | 2025-03-30 23:08:43 -0500 |
commit | cb9fa588ba8144fcdd52ba4b83d69d93fb18066f (patch) | |
tree | 214574ca68c1551ec76e7fbb9e0263793180231d /test/test_vector.cpp | |
parent | 1d357adfa19725ee69fb267a363f1fd217b1272f (diff) |
Add hash map.
Diffstat (limited to 'test/test_vector.cpp')
-rw-r--r-- | test/test_vector.cpp | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/test/test_vector.cpp b/test/test_vector.cpp index ba0272e..3f4e584 100644 --- a/test/test_vector.cpp +++ b/test/test_vector.cpp @@ -24,9 +24,14 @@ namespace fud { template <size_t Size> struct TestLinearAllocator : public Allocator { - virtual ~TestLinearAllocator() override = default; - - virtual Result<std::byte*, FudStatus> allocate(size_t bytes, size_t alignment = alignof(std::max_align_t)) override + TestLinearAllocator() = default; + TestLinearAllocator(const TestLinearAllocator&) = delete; + TestLinearAllocator(TestLinearAllocator&&) = delete; + TestLinearAllocator& operator=(const TestLinearAllocator&) = delete; + TestLinearAllocator& operator=(TestLinearAllocator&&) = delete; + ~TestLinearAllocator() override = default; + + Result<std::byte*, FudStatus> allocate(size_t bytes, size_t alignment = alignof(std::max_align_t)) override { auto allocIndex = m_next; if (allocIndex % alignment != 0) { @@ -39,13 +44,13 @@ struct TestLinearAllocator : public Allocator { return Okay<std::byte*>{m_backing.data() + allocIndex}; } - virtual void deallocate(std::byte* pointer, size_t bytes) override + void deallocate(std::byte* pointer, size_t bytes) override { static_cast<void>(pointer); static_cast<void>(bytes); } - virtual bool isEqual(const Allocator& rhs) const override { + [[nodiscard]] bool isEqual(const Allocator& rhs) const override { return &rhs == static_cast<const Allocator*>(this); } @@ -82,7 +87,7 @@ struct NonTrivial { counter++; } NonTrivial(const NonTrivial&) = delete; - NonTrivial(NonTrivial&& rhs) : value{rhs.value}, destroyed{rhs.destroyed} + NonTrivial(NonTrivial&& rhs) noexcept : value{rhs.value}, destroyed{rhs.destroyed} { rhs.destroyed = true; } @@ -94,7 +99,7 @@ struct NonTrivial { } } NonTrivial& operator=(const NonTrivial& rhs) = delete; - NonTrivial& operator=(NonTrivial&& rhs) + NonTrivial& operator=(NonTrivial&& rhs) noexcept { value = rhs.value; destroyed = rhs.destroyed; @@ -183,4 +188,17 @@ TEST(VectorTest, NestedVector) // Result<Vector<Vector<FallibleObject>>, FudStatus> } +TEST(VectorTest, WithElements) +{ + auto vectorResult{Vector<int>::from(NullOpt, 1, 2, 3, 42, -100)}; + ASSERT_TRUE(vectorResult.isOkay()); + auto intVector{vectorResult.takeOkay()}; + ASSERT_EQ(intVector.size(), 5); + ASSERT_EQ(intVector[0], 1); + ASSERT_EQ(intVector[1], 2); + ASSERT_EQ(intVector[2], 3); + ASSERT_EQ(intVector[3], 42); + ASSERT_EQ(intVector[4], -100); +} + } // namespace fud |