/
lasersquad
/
DynamicArrays
Обзор
Документация
Войти
/
lasersquad
/
DynamicArrays
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
dynamicarrays/tests/THash2Test.cpp
210 строк
6 KB
lasersquad0
Added new instantiations of THash2 to check compilation
04 авг 2026, 14:51
04 авг 2026, 14:51
7bbe653
Код
Авторство
О чём код?
#include "gtest/gtest.h" #include <vector> #include "DynamicArrays.h" // intentionally selected different types for THash2 typedef unsigned long KeyType; typedef unsigned ValueType1; typedef long ValueType2; typedef THash2<KeyType, ValueType1, ValueType2> TestHash; // just ofr testing succesfull compilation typedef THash2<KeyType, std::string, std::wstring, Compare<KeyType>> TestHashX; typedef THash2<KeyType, std::wstring, std::string, Compare<KeyType>> TestHashXX; // this will NOT compile when there will be code that uses TestHashXXX typedef THash2<KeyType, std::wstring, std::string, Compare<std::string>> TestHashXXX; TEST(THash2XX, EmptyHashes) { TestHashX hash1; TestHashXX hash2; EXPECT_EQ(hash1.Count(), 0u); EXPECT_EQ(hash1.GetAIndexes().Count(), 0u); EXPECT_EQ(hash1.GetAValues().Count(), 0u); EXPECT_NO_THROW(hash1.Clear()); EXPECT_EQ(hash2.Count(), 0u); EXPECT_EQ(hash2.GetAIndexes().Count(), 0u); EXPECT_EQ(hash2.GetAValues().Count(), 0u); EXPECT_NO_THROW(hash2.Clear()); } TEST(THash2Long, EmptyHash1) { TestHash hash; EXPECT_EQ(hash.Count(), 0u); EXPECT_EQ(hash.GetAIndexes().Count(), 0u); EXPECT_EQ(hash.GetAValues().Count(), 0u); EXPECT_NO_THROW(hash.Clear()); //EXPECT_NO_THROW(hash.ClearMem()); } TEST(THash2Long, EmptyHash2) { TestHash hash; EXPECT_THROW(hash.GetKey(0u), THArrayException); EXPECT_THROW(hash.GetKey(1u), THArrayException); EXPECT_THROW(hash.GetValue(3u), THArrayException); EXPECT_THROW(hash.GetValue(1000u), THArrayException); EXPECT_NO_THROW(hash.Delete(3u)); EXPECT_NO_THROW(hash.Delete(888u)); EXPECT_EQ(hash.GetValuePointer(0u), nullptr); EXPECT_EQ(hash.GetValuePointer(44u), nullptr); } TEST(THash2Long, EmptyIndexOf) { TestHash hash; EXPECT_EQ(hash.IfExists(0), false); EXPECT_EQ(hash.IfExists(1), false); EXPECT_EQ(hash.IfExists(1234), false); } TEST(THash2Long, SetValue) { TestHash hash; hash.SetValue(1, 1, 1); EXPECT_EQ(hash.IfExists(1), true); EXPECT_EQ(hash.IfExists(1, 1), true); EXPECT_EQ(hash.IfExists(0), false); EXPECT_EQ(hash.IfExists(0, 1), false); EXPECT_EQ(hash.IfExists(1, 0), false); EXPECT_EQ(hash.IfExists(2), false); EXPECT_EQ(hash.IfExists(2, 0), false); EXPECT_EQ(hash.IfExists(2, 1), false); EXPECT_EQ(hash.IfExists(0, 2), false); EXPECT_EQ(hash.IfExists(1, 2), false); THash<ValueType1, ValueType2> v; v.SetValue(1, 1); EXPECT_EQ(hash.GetValue(1), v); EXPECT_THROW(hash.GetValue(0), THArrayException); EXPECT_THROW(hash.GetValue(2), THArrayException); hash.SetValue(1111, 1111, 1111); EXPECT_EQ(hash.IfExists(1), true); EXPECT_EQ(hash.IfExists(1, 1), true); EXPECT_EQ(hash.IfExists(0), false); EXPECT_EQ(hash.IfExists(0, 1), false); EXPECT_EQ(hash.IfExists(1, 0), false); EXPECT_EQ(hash.IfExists(2), false); EXPECT_EQ(hash.IfExists(2, 0), false); EXPECT_EQ(hash.IfExists(2, 1), false); EXPECT_EQ(hash.IfExists(0, 2), false); EXPECT_EQ(hash.IfExists(1, 2), false); EXPECT_EQ(hash.IfExists(111), false); EXPECT_EQ(hash.IfExists(11), false); EXPECT_EQ(hash.IfExists(111111), false); EXPECT_EQ(hash.IfExists(1111), true); EXPECT_EQ(hash.IfExists(111111, 1111), false); EXPECT_EQ(hash.IfExists(1111, 1), false); EXPECT_EQ(hash.IfExists(1111, 11), false); EXPECT_EQ(hash.IfExists(1111, 111), false); EXPECT_EQ(hash.IfExists(1111, 1111), true); EXPECT_EQ(hash.GetValue(1), v); EXPECT_EQ(hash.GetValue(1u, 1u), 1); EXPECT_EQ(hash.GetValue(1111u, 1111u), 1111); EXPECT_THROW(hash.GetValue(0), THArrayException); EXPECT_THROW(hash.GetValue(2), THArrayException); EXPECT_THROW(hash.GetValue(0, 1111), THArrayException); EXPECT_THROW(hash.GetValue(1111, 0), THArrayException); EXPECT_THROW(hash.GetValue(2, 1111), THArrayException); EXPECT_THROW(hash.GetValue(1111, 2), THArrayException); EXPECT_THROW(hash.GetValue(0, 1), THArrayException); EXPECT_THROW(hash.GetValue(1, 0), THArrayException); EXPECT_THROW(hash.GetValue(2, 1), THArrayException); EXPECT_THROW(hash.GetValue(1, 2), THArrayException); EXPECT_EQ(hash.Count(), 2u); THash<ValueType1, ValueType2> vv; vv.SetValue(55, 55); hash.SetValue(1u, vv); EXPECT_EQ(hash.Count(), 2u); EXPECT_EQ(hash.IfExists(1), true); EXPECT_EQ(hash.IfExists(1, 55), true); EXPECT_EQ(hash.IfExists(1, 1), false); EXPECT_EQ(hash.IfExists(55, 1), false); EXPECT_EQ(hash.IfExists(0), false); EXPECT_EQ(hash.IfExists(0, 1), false); EXPECT_EQ(hash.IfExists(1, 0), false); EXPECT_EQ(hash.IfExists(2), false); EXPECT_EQ(hash.IfExists(2, 0), false); EXPECT_EQ(hash.IfExists(2, 1), false); EXPECT_EQ(hash.IfExists(0, 2), false); EXPECT_EQ(hash.IfExists(1, 2), false); EXPECT_EQ(hash.IfExists(111111), false); EXPECT_EQ(hash.IfExists(1111), true); EXPECT_EQ(hash.IfExists(1111, 1111), true); EXPECT_EQ(hash.IfExists(1111, 55), false); EXPECT_EQ(hash.IfExists(55, 1111), false); EXPECT_EQ(hash.GetValue(1u), vv); EXPECT_EQ(hash.GetValue(1u, 55u), 55); EXPECT_EQ(hash.GetValue(1111u, 1111u), 1111); THash<ValueType1, ValueType2> vvv; vvv.SetValue(1111, 1111); EXPECT_EQ(hash.GetValue(1111), vvv); EXPECT_THROW(hash.GetValue(0), THArrayException); EXPECT_THROW(hash.GetValue(2), THArrayException); EXPECT_THROW(hash.GetValue(0, 1111), THArrayException); EXPECT_THROW(hash.GetValue(1111, 0), THArrayException); EXPECT_THROW(hash.GetValue(2, 1111), THArrayException); EXPECT_THROW(hash.GetValue(1111, 2), THArrayException); EXPECT_THROW(hash.GetValue(0, 1), THArrayException); EXPECT_THROW(hash.GetValue(1, 0), THArrayException); EXPECT_THROW(hash.GetValue(2, 1), THArrayException); EXPECT_THROW(hash.GetValue(1, 2), THArrayException); } TEST(THash2Long, CountTest) { TestHash hash; hash.SetValue(44, 55, 66); EXPECT_EQ(hash.Count(), 1u); hash.SetValue(44, 55, 77); EXPECT_EQ(hash.Count(), 1u); hash.SetValue(44, 56, 88); EXPECT_EQ(hash.Count(), 2u); hash.SetValue(33); EXPECT_EQ(hash.Count(), 2u); // note that Count hasn't changed hash.SetValue(33, 55, 66); EXPECT_EQ(hash.Count(), 3u); hash.SetValue(33, 55, 77); EXPECT_EQ(hash.Count(), 3u); hash.SetValue(33, 56, 88); EXPECT_EQ(hash.Count(), 4u); THash<ValueType1, ValueType2> vvv; vvv.SetValue(1111, 1111); hash.SetValue(22, vvv); EXPECT_EQ(hash.Count(), 5u); hash.SetValue(33, vvv); EXPECT_EQ(hash.Count(), 4u); // weid result - we set value but count is desreased hash.SetValue(44, vvv); EXPECT_EQ(hash.Count(), 3u);// weid result - we set value but count is desreased }