/
smychkov
/
SStorage
Обзор
Документация
Войти
/
smychkov
/
SStorage
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
tests/test_cache.cpp
137 строк
3 KB
Андрей Смычков
Initial commit: SStorage database implementation
19 апр 2026, 15:53
19 апр 2026, 15:53
27e7e35
Код
Авторство
О чём код?
#include <gtest/gtest.h> #include "cache/cache.hpp" #include "core/page.hpp" using namespace sstorage; TEST(LRUCacheTest, DefaultConstructor) { LRUCache<uint32_t, Page> cache(10); EXPECT_EQ(cache.maxSize(), 10); EXPECT_EQ(cache.size(), 0); } TEST(LRUCacheTest, PutAndGet) { LRUCache<uint32_t, Page> cache(10); Page page(4096, 1); bool result = cache.put(1, page); EXPECT_TRUE(result); EXPECT_EQ(cache.size(), 1); } TEST(LRUCacheTest, PutDuplicateKey) { LRUCache<uint32_t, Page> cache(10); Page page1(4096, 1); Page page2(4096, 2); cache.put(1, page1); cache.put(1, page2); EXPECT_EQ(cache.size(), 1); } TEST(LRUCacheTest, Get) { LRUCache<uint32_t, Page> cache(10); Page page(4096, 1); cache.put(1, page); const Page* found = cache.get(1); EXPECT_NE(found, nullptr); EXPECT_EQ(found->getPageId(), 1); } TEST(LRUCacheTest, GetNotFound) { LRUCache<uint32_t, Page> cache(10); const Page* found = cache.get(999); EXPECT_EQ(found, nullptr); } TEST(LRUCacheTest, Contains) { LRUCache<uint32_t, Page> cache(10); Page page(4096, 1); cache.put(1, page); EXPECT_TRUE(cache.contains(1)); EXPECT_FALSE(cache.contains(999)); } TEST(LRUCacheTest, Remove) { LRUCache<uint32_t, Page> cache(10); Page page(4096, 1); cache.put(1, page); EXPECT_EQ(cache.size(), 1); bool result = cache.remove(1); EXPECT_TRUE(result); EXPECT_EQ(cache.size(), 0); } TEST(LRUCacheTest, RemoveNotFound) { LRUCache<uint32_t, Page> cache(10); bool result = cache.remove(999); EXPECT_FALSE(result); } TEST(LRUCacheTest, Clear) { LRUCache<uint32_t, Page> cache(10); Page page1(4096, 1); Page page2(4096, 2); cache.put(1, page1); cache.put(2, page2); EXPECT_EQ(cache.size(), 2); cache.clear(); EXPECT_EQ(cache.size(), 0); } TEST(LRUCacheTest, IsFull) { LRUCache<uint32_t, Page> cache(2); EXPECT_FALSE(cache.isFull()); cache.put(1, Page(4096, 1)); cache.put(2, Page(4096, 2)); EXPECT_TRUE(cache.isFull()); } TEST(LRUCacheTest, SetMaxSize) { LRUCache<uint32_t, Page> cache(10); cache.put(1, Page(4096, 1)); cache.put(2, Page(4096, 2)); EXPECT_EQ(cache.size(), 2); cache.setMaxSize(1); EXPECT_EQ(cache.size(), 1); } TEST(LRUCacheTest, MaxSizeZero) { LRUCache<uint32_t, Page> cache(0); Page page(4096, 1); bool result = cache.put(1, page); EXPECT_FALSE(result); } TEST(LRUCacheTest, Eviction) { LRUCache<uint32_t, Page> cache(2); cache.put(1, Page(4096, 1)); cache.put(2, Page(4096, 2)); cache.put(3, Page(4096, 3)); EXPECT_TRUE(cache.contains(2)); EXPECT_TRUE(cache.contains(3)); EXPECT_FALSE(cache.contains(1)); } TEST(LRUCacheTest, GetKeys) { LRUCache<uint32_t, Page> cache(10); cache.put(1, Page(4096, 1)); cache.put(2, Page(4096, 2)); auto keys = cache.getKeys(); EXPECT_EQ(keys.size(), 2); }