Skip to content
Snippets Groups Projects
Commit 2f6a9abc authored by j2-mcdaid's avatar j2-mcdaid :skull_crossbones:
Browse files

Upload New File

parent 34020ba2
Branches
Tags
No related merge requests found
#include "allocator.hpp"
#include "simpletest/simpletest.h"
#include <iostream>
using namespace std;
char const* groups[] = {
"Bump",
};
// Test 1 - Basic Allocation and Deallocation
DEFINE_TEST_G(BumpBasicTest, Bump) {
std::cout << "Test 1 - basic allocation and deallocation: " << std::endl;
bAllocator allocator(64); // 64 byte
int *x = allocator.alloc<int>(4); // 16 byte
TEST_MESSAGE(x != nullptr, "Allocation Failed for 4 ints");
allocator.dealloc();
allocator.dealloc();
}
// Test 2 - Full Allocation
DEFINE_TEST_G(BumpFullAllocationTest, Bump) {
std::cout << "Test 2 - full allocation: " << std::endl;
bAllocator allocator(16); // 16 byte
int *a = allocator.alloc<int>(3); // 12 byte
TEST_MESSAGE(a != nullptr, "Failed to allocate 3 ints.");
char *b = allocator.alloc<char>(4); // 4 byte
TEST_MESSAGE(b != nullptr, "Failed to allocate 4 int");
}
// Test 3 - Mixed type allocation
DEFINE_TEST_G(BumpMixedTypesTest, Bump) {
std::cout << "Test 3 - mixed type allocation: " << std::endl;
bAllocator allocator(32); //32 byte
int *x = allocator.alloc<int>(2); // 8 byte
char *y = allocator.alloc<char>(8); // 8 byte
double *z = allocator.alloc<double>(1); // 8 byte
TEST_MESSAGE(x != nullptr, "Failed to allocate 2 ints.");
TEST_MESSAGE(y != nullptr, "Failed to allocate 10 chars.");
TEST_MESSAGE(z != nullptr, "Failed to allocate double.");
}
// Test 4 - Reset when Deallocation is complete
DEFINE_TEST_G(BumpResetOnDeallocationTest, Bump) {
std::cout << "Test 4 - reset when deallocated: " << std::endl;
bAllocator allocator(32); // 32 byte
int *x = allocator.alloc<int>(3); // 12 byte
char *y = allocator.alloc<char>(4); // 4 byte
TEST_MESSAGE(x != nullptr, "Failed to allocate 4 ints.");
TEST_MESSAGE(y != nullptr, "Failed to alllocate 6 chars.");
allocator.dealloc();
allocator.dealloc(); // frees up heap
int *z = allocator.alloc<int>(6); // 24 byte
TEST_MESSAGE(z != nullptr, "Allocator failed to reset.");
}
// Test 5 - Over capacity of allocation
DEFINE_TEST_G(BumpOverCapacityTest, Bump) {
std::cout << "Test 5 - Over capacity of allocation: " << std::endl;
bAllocator allocator(8); // 8 byte
int *x = allocator.alloc<int>(1); // 4 byte
int *y = allocator.alloc<int>(1); // 4 byte
int *z = allocator.alloc<int>(1); // 4 byte - should fail
TEST_MESSAGE(x != nullptr, "First allocation failure.");
TEST_MESSAGE(y != nullptr, "Second allocation failure.");
TEST_MESSAGE(z == nullptr, "Third allocation failure.");
}
int main() {
bool pass = true;
for (auto group : groups) {
pass &= TestFixture::ExecuteTestGroup(group, TestFixture::Verbose);
}
return pass ? 0 : 1;
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment