#ifdef TESTS_BUILD #include #include "../src/Collections/Dictionary.hpp" #include "../src/Collections/StringViewDictionary.hpp" using namespace ArbUt; TEST_CASE("Create Dictionary, insert values") { auto dic = Dictionary(5); dic.Insert(10, 5); dic.Insert(2, 100); dic.Insert(9, 2000); } TEST_CASE("Create Dictionary with initializer list") { auto dic = Dictionary({{5, 100}, {10, 200}, {50, 2}}); CHECK(dic.Get(5) == 100); CHECK(dic.Get(10) == 200); CHECK(dic.Get(50) == 2); } TEST_CASE("Create Dictionary, insert values, get values") { auto dic = Dictionary(5); dic.Insert(10, 5); dic.Insert(2, 100); dic.Insert(9, 2000); CHECK(dic.Get(2) == 100); CHECK(dic.Get(9) == 2000); CHECK(dic.Get(10) == 5); } TEST_CASE("Create Dictionary, insert values twice should throw") { auto dic = Dictionary(5); dic.Insert(10, 5); CHECK_THROWS(dic.Insert(10, 100)); CHECK(dic.Get(10) == 5); } TEST_CASE("Create Dictionary, insert value, then update value") { auto dic = Dictionary(5); dic.Insert(10, 5); dic[10] = 200; CHECK(dic.Get(10) == 200); } TEST_CASE("Create Dictionary, insert value, try get value") { auto dic = Dictionary(5); dic.Insert(10, 5); auto v = dic.TryGet(10); CHECK(v.has_value()); CHECK(v.value() == 5); } TEST_CASE("Create Dictionary, insert value, try get non existing value") { auto dic = Dictionary(5); CHECK_FALSE(dic.TryGet(10).has_value()); } TEST_CASE("Create Dictionary, insert value, Has") { auto dic = Dictionary(5); dic.Insert(10, 5); CHECK(dic.Has(10)); } TEST_CASE("Create Dictionary, set value") { auto dic = Dictionary(5); dic.Set(5, 100); CHECK(dic.Has(5)); } TEST_CASE("Create Dictionary, insert values, get count") { auto dic = Dictionary(5); dic.Insert(10, 5); dic.Insert(2, 100); dic.Insert(9, 2000); CHECK(dic.Count() == 3); } TEST_CASE("Create Dictionary, insert values, iterate over keys") { auto dic = Dictionary(5); dic.Insert(10, 5); dic.Insert(2, 100); dic.Insert(9, 2000); size_t i = 0; for (auto val : dic) { CHECK(dic.Has(val.first)); i++; } CHECK(i == 3); } TEST_CASE("Create Dictionary with different types, insert values, iterate over keys") { auto dic = Dictionary(5); dic.Insert(10, 5); dic.Insert(2, 100); dic.Insert(9, 105); size_t i = 0; for (auto val : dic) { CHECK(dic.Has(val.first)); i++; } CHECK(i == 3); } TEST_CASE("Create StringViewDictionary, insert values, get values by hash") { auto dic = StringViewDictionary(5); dic.Insert("foo"_cnc, 5); dic.Insert("bar"_cnc, 100); dic.Insert("zet"_cnc, 2000); CHECK(dic.GetFromHash("bar"_cnc) == 100); dic.Remove("zet"_cnc.GetHash()); CHECK(dic.Count() == 2); } #endif