Home | History | Annotate | Download | only in test
      1 #include <gtest/gtest.h>
      2 
      3 #include "AllocationTestHarness.h"
      4 
      5 extern "C" {
      6 #include "osi/include/array.h"
      7 }
      8 
      9 class ArrayTest : public AllocationTestHarness {};
     10 
     11 TEST_F(ArrayTest, test_new_free_simple) {
     12   array_t *array = array_new(4);
     13   ASSERT_TRUE(array != NULL);
     14   array_free(array);
     15 }
     16 
     17 TEST_F(ArrayTest, test_free_null) {
     18   array_free(NULL);
     19 }
     20 
     21 TEST_F(ArrayTest, test_invalid_ptr) {
     22   array_t *array = array_new(4);
     23   EXPECT_DEATH(array_ptr(array), "");
     24   array_free(array);
     25 }
     26 
     27 TEST_F(ArrayTest, test_invalid_at) {
     28   array_t *array = array_new(4);
     29   EXPECT_DEATH(array_at(array, 1), "");
     30   array_free(array);
     31 }
     32 
     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);
     37   }
     38   for (int i = 0; i < 100; ++i) {
     39     EXPECT_EQ(*(int *)array_at(array, i), i * i);
     40   }
     41   array_free(array);
     42 }
     43 
     44 TEST_F(ArrayTest, test_append_ptr) {
     45   int items[100];
     46   array_t *array = array_new(sizeof(int));
     47   for (int i = 0; i < 100; ++i) {
     48     items[i] = i * i;
     49     array_append_ptr(array, &items[i]);
     50   }
     51   for (int i = 0; i < 100; ++i) {
     52     EXPECT_EQ(*(int *)array_at(array, i), i * i);
     53   }
     54   array_free(array);
     55 }
     56 
     57 TEST_F(ArrayTest, test_large_element) {
     58   char strings[][128] = {
     59     "string 1",
     60     "string 2",
     61     "string 3",
     62     "string 4",
     63     "string 5",
     64     "string 6",
     65     "string 7",
     66     "string 8",
     67   };
     68 
     69   array_t *array = array_new(128);
     70   for (int i = 0; i < 100; ++i) {
     71     array_append_ptr(array, strings[i % 8]);
     72   }
     73   for (int i = 0; i < 100; ++i) {
     74     EXPECT_TRUE(!memcmp(array_at(array, i), strings[i % 8], 128));
     75   }
     76   array_free(array);
     77 }
     78