#import "memory.h" #import "test.h" typedef struct { int i; float f; char c; } arbitrary_struct; void test_array() { int *i_a = (int *)alloc_array(sizeof(int), 3); TEST_EQUAL(array_count(i_a), 3, "array initialization"); i_a[0] = 6; i_a[1] = 1; i_a[2] = 8; TEST_SUCCEED("array access"); retain(i_a); unsigned int rcount = retain_count(i_a); i_a = resize_array(i_a, 5); TEST_EQUAL(rcount, retain_count(i_a), "proper retain count"); TEST_NOT_EQUAL(i_a, NULL, "array resize"); TEST_EQUAL(array_count(i_a), 5, "array resize - count"); TEST_EQUAL(i_a[0], 6, "array resize - element preservation"); TEST_EQUAL(i_a[1], 1, "array resize - element preservation"); TEST_EQUAL(i_a[2], 8, "array resize - element preservation"); i_a[3] = 5; i_a[4] = 9; TEST_SUCCEED("array resize - access"); arbitrary_struct *arb_a = (arbitrary_struct *)alloc_array(sizeof(arbitrary_struct), 2); TEST_EQUAL(array_count(arb_a), 2, "struct array initialization"); arb_a[0].i = 5; arb_a[0].f = 0.125; arb_a[0].c = 'a'; arb_a[1].i = 19; arb_a[1].f = 0.25; arb_a[1].c = 'z'; TEST_SUCCEED("struct array access"); arb_a = resize_array(arb_a, 4); TEST_NOT_EQUAL(arb_a, NULL, "struct array resize"); TEST_EQUAL(array_count(arb_a), 4, "struct array resize - count"); TEST_EQUAL(arb_a[0].i, 5, "struct array resize - element preservation"); TEST_EQUAL(arb_a[0].f, 0.125, "struct array resize - element preservation"); TEST_EQUAL(arb_a[0].c, 'a', "struct array resize - element preservation"); TEST_EQUAL(arb_a[1].i, 19, "struct array resize - element preservation"); TEST_EQUAL(arb_a[1].f, 0.25, "struct array resize - element preservation"); TEST_EQUAL(arb_a[1].c, 'z', "struct array resize - element preservation"); arb_a[2].i = 0; arb_a[2].f = 0; arb_a[2].c = '0'; arb_a[3].i = 100; arb_a[3].f = 0.1; arb_a[3].c = '1'; TEST_SUCCEED("struct array resize - access"); } int main() { test_array(); OUTPUT_TEST_RESULTS; return 0; }