From c426110f24516f92ecb8a5374e2a281f2c79787a Mon Sep 17 00:00:00 2001 From: Dominick Allen Date: Mon, 31 Mar 2025 00:47:45 -0500 Subject: Fix Vector bug. --- test/test_hash_map.cpp | 97 +++++++++++++++++++++----------------------------- 1 file changed, 40 insertions(+), 57 deletions(-) (limited to 'test/test_hash_map.cpp') diff --git a/test/test_hash_map.cpp b/test/test_hash_map.cpp index 00c4693..aa0ba49 100644 --- a/test/test_hash_map.cpp +++ b/test/test_hash_map.cpp @@ -24,21 +24,39 @@ namespace fud { +Vector testStrings() +{ + Vector stringList{Vector::withCapacity(9).takeOkay()}; + fudAssert(stringList.pushBack(String::makeFromCString("foo").takeOkay()) == FudStatus::Success); + fudAssert(stringList.pushBack(String::makeFromCString("bar").takeOkay()) == FudStatus::Success); + fudAssert(stringList.pushBack(String::makeFromCString("baz").takeOkay()) == FudStatus::Success); + fudAssert(stringList.pushBack(String::makeFromCString("qux").takeOkay()) == FudStatus::Success); + fudAssert(stringList.pushBack(String::makeFromCString("Tom").takeOkay()) == FudStatus::Success); + fudAssert(stringList.pushBack(String::makeFromCString("Dick").takeOkay()) == FudStatus::Success); + fudAssert(stringList.pushBack(String::makeFromCString("Harry").takeOkay()) == FudStatus::Success); + fudAssert(stringList.pushBack(String::makeFromCString("Alice").takeOkay()) == FudStatus::Success); + fudAssert(stringList.pushBack(String::makeFromCString("Bob").takeOkay()) == FudStatus::Success); + return stringList; +} + +Vector testStringViews() +{ + Vector stringList{Vector::withCapacity(9).takeOkay()}; + fudAssert(stringList.pushBack(StringView::makeFromCString("foo")) == FudStatus::Success); + fudAssert(stringList.pushBack(StringView::makeFromCString("bar")) == FudStatus::Success); + fudAssert(stringList.pushBack(StringView::makeFromCString("baz")) == FudStatus::Success); + fudAssert(stringList.pushBack(StringView::makeFromCString("qux")) == FudStatus::Success); + fudAssert(stringList.pushBack(StringView::makeFromCString("Tom")) == FudStatus::Success); + fudAssert(stringList.pushBack(StringView::makeFromCString("Dick")) == FudStatus::Success); + fudAssert(stringList.pushBack(StringView::makeFromCString("Harry")) == FudStatus::Success); + fudAssert(stringList.pushBack(StringView::makeFromCString("Alice")) == FudStatus::Success); + fudAssert(stringList.pushBack(StringView::makeFromCString("Bob")) == FudStatus::Success); + return stringList; +} + TEST(FudHash, InsertMoveKeyMoveValue) { - auto stringList{ - Vector::from( - NullOpt, - String::makeFromCString("foo").takeOkay(), - String::makeFromCString("bar").takeOkay(), - String::makeFromCString("baz").takeOkay(), - String::makeFromCString("qux").takeOkay(), - String::makeFromCString("Tom").takeOkay(), - String::makeFromCString("Dick").takeOkay(), - String::makeFromCString("Harry").takeOkay(), - String::makeFromCString("Alice").takeOkay(), - String::makeFromCString("Bob").takeOkay()) - .takeOkay()}; + auto stringList{testStrings()}; HashMap mapInt2String{}; for (int index = 0; index < static_cast(stringList.size()); ++index) { auto insertStatus = mapInt2String.insert(index * 1, String::from(stringList[index]).takeOkay()); @@ -55,19 +73,7 @@ TEST(FudHash, InsertMoveKeyMoveValue) TEST(FudHash, InsertMoveKeyCopyValue) { - auto stringList{ - Vector::from( - NullOpt, - String::makeFromCString("foo").takeOkay(), - String::makeFromCString("bar").takeOkay(), - String::makeFromCString("baz").takeOkay(), - String::makeFromCString("qux").takeOkay(), - String::makeFromCString("Tom").takeOkay(), - String::makeFromCString("Dick").takeOkay(), - String::makeFromCString("Harry").takeOkay(), - String::makeFromCString("Alice").takeOkay(), - String::makeFromCString("Bob").takeOkay()) - .takeOkay()}; + auto stringList{testStrings()}; HashMap mapString2Int{}; for (int index = 0; index < static_cast(stringList.size()); ++index) { auto insertStatus = mapString2Int.insert(String::from(stringList[index]).takeOkay(), index * 1); @@ -85,19 +91,7 @@ TEST(FudHash, InsertMoveKeyCopyValue) TEST(FudHash, InsertCopyKeyMoveValue) { - auto stringList{ - Vector::from( - NullOpt, - String::makeFromCString("foo").takeOkay(), - String::makeFromCString("bar").takeOkay(), - String::makeFromCString("baz").takeOkay(), - String::makeFromCString("qux").takeOkay(), - String::makeFromCString("Tom").takeOkay(), - String::makeFromCString("Dick").takeOkay(), - String::makeFromCString("Harry").takeOkay(), - String::makeFromCString("Alice").takeOkay(), - String::makeFromCString("Bob").takeOkay()) - .takeOkay()}; + auto stringList{testStrings()}; HashMap mapInt2String{}; for (int index = 0; index < static_cast(stringList.size()); ++index) { auto insertStatus = mapInt2String.insert(index, String::from(stringList[index]).takeOkay()); @@ -115,31 +109,20 @@ TEST(FudHash, InsertCopyKeyMoveValue) TEST(FudHash, InsertCopyKeyCopyValue) { - auto stringList{ - Vector::from( - NullOpt, - StringView::makeFromCString("foo"), - StringView::makeFromCString("bar"), - StringView::makeFromCString("baz"), - StringView::makeFromCString("qux"), - StringView::makeFromCString("Tom"), - StringView::makeFromCString("Dick"), - StringView::makeFromCString("Harry"), - StringView::makeFromCString("Alice"), - StringView::makeFromCString("Bob")) - .takeOkay()}; + auto stringViewList{testStringViews()}; + HashMap mapView2Int{}; - for (int index = 0; index < static_cast(stringList.size()); ++index) { - auto insertStatus = mapView2Int.insert(stringList[index], index); + for (int index = 0; index < static_cast(stringViewList.size()); ++index) { + auto insertStatus = mapView2Int.insert(stringViewList[index], index); EXPECT_EQ(insertStatus, FudStatus::Success); } - EXPECT_EQ(mapView2Int.size(), stringList.size()); + EXPECT_EQ(mapView2Int.size(), stringViewList.size()); EXPECT_GT(mapView2Int.capacity(), mapView2Int.size()); - for (int index = 0; index < static_cast(stringList.size()); ++index) { + for (int index = 0; index < static_cast(stringViewList.size()); ++index) { const int invalid = -1; - EXPECT_EQ(mapView2Int.getConstRef(stringList[index]).valueOr(invalid), index); + EXPECT_EQ(mapView2Int.getConstRef(stringViewList[index]).valueOr(invalid), index); } } -- cgit v1.2.3