test_tarray.c 2.57 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
/**
* This is a test for tarray in $package$
*/
#include "si_test.h"


/* Get Tarray interface, generate for integer type */
#define TEMPLATE_ZERO   0
#define TEMPLATE_T      int
#define TEMPLATE_NAME   Intarr
#define TEMPLATE_PREFIX intarr_
#include "tarray.h"

/* Get Tarray implementation, generate for integer type */
#define TEMPLATE_ZERO   0
#define TEMPLATE_IMPLEMENT
#define TEMPLATE_T      int
#define TEMPLATE_NAME   Intarr
#define TEMPLATE_PREFIX intarr_
#include "tarray.h"

/* Get interface for pointer type. */
#define TEMPLATE_ZERO   NULL
#define TEMPLATE_T      void*
#define TEMPLATE_NAME   Ptrarr
#define TEMPLATE_PREFIX ptrarr_
#include "tarray.h"


/* Get implementation for pointer type. */
#define TEMPLATE_ZERO   NULL
#define TEMPLATE_IMPLEMENT
#define TEMPLATE_T      void*
#define TEMPLATE_NAME   Ptrarr
#define TEMPLATE_PREFIX ptrarr_
#include "tarray.h"



TEST_FUNC(tarray_int) {
  Intarr array_struct; 
  Intarr * array = &array_struct;
  int get;
  TEST_NOTNULL(intarr_init(array, 5));
  TEST_NOTNULL(intarr_put(array, 3, 123));
  TEST_NOTNULL(intarr_put(array, 0, 654));
  TEST_NULL(intarr_put(array, 5, 321));
  TEST_NOTNULL(intarr_put(array, 1, 321));
  TEST_NULL(intarr_put(array, 10, 456));
  TEST_INTEQ(123, intarr_getraw(array, 3, 0));
  TEST_INTEQ(654, intarr_getraw(array, 0, 0));
  TEST_TRUE(intarr_get(array, 3, &get));
  TEST_INTEQ(123, get);  
  TEST_TRUE(intarr_get(array, 0, &get));
  TEST_INTEQ(654, get);
  TEST_FALSE(intarr_get(array, 5, &get));
  TEST_TRUE(intarr_get(array, 1, &get));
  TEST_FALSE(intarr_get(array, 10, &get));
  TEST_NOTNULL(intarr_done(array));
  TEST_DONE();
}

TEST_FUNC(tarray_ptr) {
  Ptrarr array_struct; 
  Ptrarr * array = &array_struct;
  int i1 = 123;
  int i2 = 234;
  int i3 = 354;
  int i4 = 456;
  void * get;
  void * p1 = &i1;
  void * p2 = &i2;
  void * p3 = &i3;
  void * p4 = &i4;
  
  TEST_NOTNULL(ptrarr_init(array, 5));
  TEST_NOTNULL(ptrarr_put(array, 3, p1));
  TEST_NOTNULL(ptrarr_put(array, 0, p2));
  TEST_NULL(ptrarr_put(array, 5, p3));
  TEST_NOTNULL(ptrarr_put(array, 1, p3));
  TEST_NULL(ptrarr_put(array, 10, p4));
  TEST_PTREQ(p1, ptrarr_getraw(array, 3, NULL));
  TEST_PTREQ(p2, ptrarr_getraw(array, 0, NULL));
  TEST_TRUE(ptrarr_get(array, 3, &get));
  TEST_PTREQ(p1, get);  
  TEST_TRUE(ptrarr_get(array, 0, &get));
  TEST_PTREQ(p2, get);
  TEST_FALSE(ptrarr_get(array, 5, &get));
  TEST_TRUE(ptrarr_get(array, 1, &get));
  TEST_FALSE(ptrarr_get(array, 10,  &get));
  TEST_NOTNULL(ptrarr_done(array));
  TEST_DONE();
}


int main(void) {
  TEST_INIT();
  TEST_RUN(tarray_int);
  TEST_RUN(tarray_ptr);
  TEST_REPORT();
}