/
smychkov
/
SStorage
Обзор
Документация
Войти
/
smychkov
/
SStorage
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
tests/test_page.cpp
207 строк
5 KB
Андрей Смычков
Add tests for Path Traversal protection and validate args
20 апр 2026, 12:14
20 апр 2026, 12:14
fa5c820
Код
Авторство
О чём код?
#include <gtest/gtest.h> #include "core/page.hpp" using namespace sstorage; TEST(PageTest, DefaultConstructor) { Page page; EXPECT_EQ(page.getPageId(), 0); EXPECT_TRUE(page.isEmpty()); EXPECT_EQ(page.getRowCount(), 0); } TEST(PageTest, ConstructorWithMaxSize) { Page page(8192); EXPECT_EQ(page.getMaxSize(), 8192); EXPECT_TRUE(page.isEmpty()); } TEST(PageTest, ConstructorWithMaxSizeAndId) { Page page(4096, 5); EXPECT_EQ(page.getMaxSize(), 4096); EXPECT_EQ(page.getPageId(), 5); } TEST(PageTest, AddRow) { Page page(4096); Row row(100, "Test", Encoding::UTF_16); bool result = page.addRow(row); EXPECT_TRUE(result); EXPECT_EQ(page.getRowCount(), 1); EXPECT_FALSE(page.isEmpty()); } TEST(PageTest, AddMultipleRows) { Page page(4096); EXPECT_TRUE(page.addRow(Row(100, "A", Encoding::UTF_16))); EXPECT_TRUE(page.addRow(Row(200, "B", Encoding::UTF_16))); EXPECT_TRUE(page.addRow(Row(300, "C", Encoding::UTF_16))); EXPECT_EQ(page.getRowCount(), 3); } TEST(PageTest, AddRowsSortedByTimestamp) { Page page(4096); page.addRow(Row(300, "C", Encoding::UTF_16)); page.addRow(Row(100, "A", Encoding::UTF_16)); page.addRow(Row(200, "B", Encoding::UTF_16)); auto rows = page.getRows(); EXPECT_EQ(rows[0].getTimestamp(), 100); EXPECT_EQ(rows[1].getTimestamp(), 200); EXPECT_EQ(rows[2].getTimestamp(), 300); } TEST(PageTest, AddRowInvalid) { Page page(4096); Row row(0, "", Encoding::UTF_16); bool result = page.addRow(row); EXPECT_FALSE(result); } TEST(PageTest, PageOverflow) { Page page(4); bool result1 = page.addRow(Row(100, "A", Encoding::UTF_16)); EXPECT_TRUE(result1); } TEST(PageTest, IsFull) { Page page; EXPECT_FALSE(page.isFull()); } TEST(PageTest, RemoveRow) { Page page(4096); page.addRow(Row(100, "Test", Encoding::UTF_16)); EXPECT_EQ(page.getRowCount(), 1); bool result = page.removeRow(100); EXPECT_TRUE(result); EXPECT_EQ(page.getRowCount(), 0); } TEST(PageTest, RemoveRowNotFound) { Page page(4096); page.addRow(Row(100, "Test", Encoding::UTF_16)); bool result = page.removeRow(999); EXPECT_FALSE(result); EXPECT_EQ(page.getRowCount(), 1); } TEST(PageTest, FindRow) { Page page(4096); page.addRow(Row(100, "Test", Encoding::UTF_16)); const Row* found = page.findRow(100); EXPECT_NE(found, nullptr); EXPECT_EQ(found->getTimestamp(), 100); } TEST(PageTest, FindRowNotFound) { Page page(4096); page.addRow(Row(100, "Test", Encoding::UTF_16)); const Row* found = page.findRow(999); EXPECT_EQ(found, nullptr); } TEST(PageTest, GetRows) { Page page(4096); page.addRow(Row(100, "A", Encoding::UTF_16)); page.addRow(Row(200, "B", Encoding::UTF_16)); auto rows = page.getRows(); EXPECT_EQ(rows.size(), 2); } TEST(PageTest, GetRowsInRange) { Page page(4096); page.addRow(Row(100, "A", Encoding::UTF_16)); page.addRow(Row(200, "B", Encoding::UTF_16)); page.addRow(Row(300, "C", Encoding::UTF_16)); auto rows = page.getRowsInRange(150, 250); EXPECT_EQ(rows.size(), 1); EXPECT_EQ(rows[0].getTimestamp(), 200); } TEST(PageTest, GetRowsInRangeNoMatch) { Page page(4096); page.addRow(Row(100, "A", Encoding::UTF_16)); auto rows = page.getRowsInRange(200, 300); EXPECT_TRUE(rows.empty()); } TEST(PageTest, GetSize) { Page page(4096); page.addRow(Row(100, "Test", Encoding::UTF_16)); size_t size = page.getSize(); EXPECT_GT(size, 0); } TEST(PageTest, GetMinTimestamp) { Page page(4096); page.addRow(Row(100, "A", Encoding::UTF_16)); page.addRow(Row(200, "B", Encoding::UTF_16)); page.addRow(Row(300, "C", Encoding::UTF_16)); EXPECT_EQ(page.getMinTimestamp(), 100); } TEST(PageTest, GetMaxTimestamp) { Page page(4096); page.addRow(Row(100, "A", Encoding::UTF_16)); page.addRow(Row(200, "B", Encoding::UTF_16)); page.addRow(Row(300, "C", Encoding::UTF_16)); EXPECT_EQ(page.getMaxTimestamp(), 300); } TEST(PageTest, EmptyTimestamps) { Page page(4096); EXPECT_EQ(page.getMinTimestamp(), 0); EXPECT_EQ(page.getMaxTimestamp(), 0); } TEST(PageTest, IsEmpty) { Page page(4096); EXPECT_TRUE(page.isEmpty()); page.addRow(Row(100, "Test", Encoding::UTF_16)); EXPECT_FALSE(page.isEmpty()); } TEST(PageTest, Clear) { Page page(4096); page.addRow(Row(100, "Test", Encoding::UTF_16)); EXPECT_EQ(page.getRowCount(), 1); page.clear(); EXPECT_EQ(page.getRowCount(), 0); EXPECT_TRUE(page.isEmpty()); } TEST(PageTest, SetPageId) { Page page(4096); EXPECT_EQ(page.getPageId(), 0); page.setPageId(42); EXPECT_EQ(page.getPageId(), 42); } TEST(PageTest, GetRowCount) { Page page(4096); page.addRow(Row(100, "A", Encoding::UTF_16)); page.addRow(Row(200, "B", Encoding::UTF_16)); EXPECT_EQ(page.getRowCount(), 2); }