You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.6 KiB
68 lines
1.6 KiB
#include <gtest/gtest.h>
|
|
|
|
#include "AllocationTestHarness.h"
|
|
|
|
#include "osi/include/array.h"
|
|
|
|
class ArrayTest : public AllocationTestHarness {};
|
|
|
|
TEST_F(ArrayTest, test_new_free_simple) {
|
|
array_t* array = array_new(4);
|
|
ASSERT_TRUE(array != NULL);
|
|
array_free(array);
|
|
}
|
|
|
|
TEST_F(ArrayTest, test_free_null) { array_free(NULL); }
|
|
|
|
TEST_F(ArrayTest, test_invalid_ptr) {
|
|
array_t* array = array_new(4);
|
|
EXPECT_DEATH(array_ptr(array), "");
|
|
array_free(array);
|
|
}
|
|
|
|
TEST_F(ArrayTest, test_invalid_at) {
|
|
array_t* array = array_new(4);
|
|
EXPECT_DEATH(array_at(array, 1), "");
|
|
array_free(array);
|
|
}
|
|
|
|
TEST_F(ArrayTest, test_append_value) {
|
|
array_t* array = array_new(sizeof(int));
|
|
for (int i = 0; i < 100; ++i) {
|
|
array_append_value(array, i * i);
|
|
}
|
|
for (int i = 0; i < 100; ++i) {
|
|
EXPECT_EQ(*(int*)array_at(array, i), i * i);
|
|
}
|
|
array_free(array);
|
|
}
|
|
|
|
TEST_F(ArrayTest, test_append_ptr) {
|
|
int items[100];
|
|
array_t* array = array_new(sizeof(int));
|
|
for (int i = 0; i < 100; ++i) {
|
|
items[i] = i * i;
|
|
array_append_ptr(array, &items[i]);
|
|
}
|
|
for (int i = 0; i < 100; ++i) {
|
|
EXPECT_EQ(*(int*)array_at(array, i), i * i);
|
|
}
|
|
array_free(array);
|
|
}
|
|
|
|
TEST_F(ArrayTest, test_large_element) {
|
|
char strings[][128] = {
|
|
"string 1", "string 2", "string 3", "string 4",
|
|
"string 5", "string 6", "string 7", "string 8",
|
|
};
|
|
|
|
array_t* array = array_new(128);
|
|
for (int i = 0; i < 100; ++i) {
|
|
array_append_ptr(array, strings[i % 8]);
|
|
}
|
|
for (int i = 0; i < 100; ++i) {
|
|
EXPECT_TRUE(!memcmp(array_at(array, i), strings[i % 8], 128));
|
|
}
|
|
array_free(array);
|
|
}
|