1 #include <gtest/gtest.h>
3 #include "AllocationTestHarness.h"
6 #include "osi/include/array.h"
9 class ArrayTest : public AllocationTestHarness {};
11 TEST_F(ArrayTest, test_new_free_simple) {
12 array_t *array = array_new(4);
13 ASSERT_TRUE(array != NULL);
17 TEST_F(ArrayTest, test_free_null) {
21 TEST_F(ArrayTest, test_invalid_ptr) {
22 array_t *array = array_new(4);
23 EXPECT_DEATH(array_ptr(array), "");
27 TEST_F(ArrayTest, test_invalid_at) {
28 array_t *array = array_new(4);
29 EXPECT_DEATH(array_at(array, 1), "");
33 TEST_F(ArrayTest, test_append_value) {
34 array_t *array = array_new(sizeof(int));
35 for (int i = 0; i < 100; ++i) {
36 array_append_value(array, i * i);
38 for (int i = 0; i < 100; ++i) {
39 EXPECT_EQ(*(int *)array_at(array, i), i * i);
44 TEST_F(ArrayTest, test_append_ptr) {
46 array_t *array = array_new(sizeof(int));
47 for (int i = 0; i < 100; ++i) {
49 array_append_ptr(array, &items[i]);
51 for (int i = 0; i < 100; ++i) {
52 EXPECT_EQ(*(int *)array_at(array, i), i * i);
57 TEST_F(ArrayTest, test_large_element) {
58 char strings[][128] = {
69 array_t *array = array_new(128);
70 for (int i = 0; i < 100; ++i) {
71 array_append_ptr(array, strings[i % 8]);
73 for (int i = 0; i < 100; ++i) {
74 EXPECT_TRUE(!memcmp(array_at(array, i), strings[i % 8], 128));