cOMS/tests/memory/RingMemoryTest.cpp
Dennis Eichhorn 17b803a0b6
Some checks failed
CodeQL / Analyze (${{ matrix.language }}) (autobuild, c-cpp) (push) Has been cancelled
Microsoft C++ Code Analysis / Analyze (push) Has been cancelled
prepare directx ui, not working yet
2025-03-09 18:15:08 +01:00

109 lines
2.3 KiB
C++

#include "../TestFramework.h"
#include "../../memory/RingMemory.h"
static void test_ring_alloc() {
RingMemory mem = {};
ring_alloc(&mem, 50);
ASSERT_TRUE(memcmp(mem.memory, mem.memory + 1, 49) == 0);
ASSERT_EQUALS(mem.size, 50);
ring_free(&mem);
ASSERT_EQUALS(mem.size, 0);
ASSERT_EQUALS(mem.memory, NULL);
}
static void test_ring_get_memory() {
RingMemory mem = {};
ring_alloc(&mem, 50);
ASSERT_EQUALS(ring_get_memory(&mem, 20), mem.memory);
ASSERT_EQUALS(mem.head, mem.memory + 20);
ring_free(&mem);
}
static void test_ring_calculate_position() {
RingMemory mem = {};
ring_alloc(&mem, 50);
ring_get_memory(&mem, 20);
ASSERT_EQUALS(ring_calculate_position(&mem, 20), mem.memory + 20);
ring_free(&mem);
}
static void test_ring_reset() {
RingMemory mem = {};
ring_alloc(&mem, 50);
ring_get_memory(&mem, 20);
ASSERT_NOT_EQUALS(mem.head, mem.memory);
ring_reset(&mem);
ASSERT_EQUALS(mem.head, mem.memory);
ring_free(&mem);
}
static void test_ring_get_memory_nomove() {
RingMemory mem = {};
ring_alloc(&mem, 50);
ASSERT_EQUALS(ring_get_memory_nomove(&mem, 20), mem.memory);
ASSERT_EQUALS(mem.head, mem.memory);
ring_free(&mem);
}
static void test_ring_move_pointer() {
RingMemory mem = {};
ring_alloc(&mem, 50);
ring_move_pointer(&mem, &mem.head, 20);
ASSERT_EQUALS(mem.head, mem.memory + 20);
ring_free(&mem);
}
static void test_ring_commit_safe() {
RingMemory mem = {};
ring_alloc(&mem, 50);
ring_get_memory(&mem, 20, 1);
ASSERT_TRUE(ring_commit_safe(&mem, 20));
// False because of alignment
ASSERT_FALSE(ring_commit_safe(&mem, 30));
ASSERT_TRUE(ring_commit_safe(&mem, 30, 1));
ASSERT_FALSE(ring_commit_safe(&mem, 45));
ASSERT_FALSE(ring_commit_safe(&mem, 101));
ring_free(&mem);
}
#ifdef UBER_TEST
#ifdef main
#undef main
#endif
#define main MemoryRingMemoryTest
#endif
int main() {
TEST_INIT(25);
TEST_RUN(test_ring_alloc);
TEST_RUN(test_ring_get_memory);
TEST_RUN(test_ring_calculate_position);
TEST_RUN(test_ring_reset);
TEST_RUN(test_ring_get_memory_nomove);
TEST_RUN(test_ring_move_pointer);
TEST_RUN(test_ring_commit_safe);
TEST_FINALIZE();
return 0;
}