tests/test_list.c

changeset 1636
5ed91801f79d
parent 1633
fe24b68758bf
child 1637
34c2e1436945
equal deleted inserted replaced
1635:4983b6a34996 1636:5ed91801f79d
68 CX_TEST_ASSERT(arr.data[3] == 8); 68 CX_TEST_ASSERT(arr.data[3] == 8);
69 CX_TEST_ASSERT(arr.data[4] == 11); 69 CX_TEST_ASSERT(arr.data[4] == 11);
70 CX_TEST_ASSERT(arr.data[5] == 47); 70 CX_TEST_ASSERT(arr.data[5] == 47);
71 CX_TEST_ASSERT(arr.size == 6); 71 CX_TEST_ASSERT(arr.size == 6);
72 CX_TEST_ASSERT(arr.capacity >= 6); 72 CX_TEST_ASSERT(arr.capacity >= 6);
73 }
74 cx_array_free(arr);
75 }
76
77 CX_TEST(test_array_add_capacity_grow_strategy) {
78 /*
79 * if (cap < 128) alignment = 16;
80 * else if (cap < 1024) alignment = 64;
81 * else if (cap < 8192) alignment = 512;
82 * else alignment = 1024;
83 */
84 CX_ARRAY(char, arr);
85 cx_array_init(arr, 5);
86 CX_TEST_DO {
87 int elem = 42;
88
89 arr.size = 5;
90 CX_TEST_ASSERT(cx_array_add(arr, elem) == 0);
91 CX_TEST_ASSERT(arr.size == 6);
92 CX_TEST_ASSERT(arr.capacity == 16);
93 arr.size = 16;
94 CX_TEST_ASSERT(cx_array_add(arr, elem) == 0);
95 CX_TEST_ASSERT(arr.size == 17);
96 CX_TEST_ASSERT(arr.capacity == 32);
97
98 CX_TEST_ASSERT(0 == cx_array_reserve(arr, 600));
99 CX_TEST_ASSERT(arr.size == 17);
100 CX_TEST_ASSERT(arr.capacity == 600);
101
102 arr.size = 600;
103 CX_TEST_ASSERT(cx_array_add(arr, elem) == 0);
104 CX_TEST_ASSERT(arr.size == 601);
105 CX_TEST_ASSERT(arr.capacity == 640);
106 arr.size = 640;
107 CX_TEST_ASSERT(cx_array_add(arr, elem) == 0);
108 CX_TEST_ASSERT(arr.size == 641);
109 CX_TEST_ASSERT(arr.capacity == 704);
110
111 CX_TEST_ASSERT(0 == cx_array_reserve(arr, 7000));
112 CX_TEST_ASSERT(arr.size == 641);
113 CX_TEST_ASSERT(arr.capacity == 7000);
114
115 arr.size = 7000;
116 CX_TEST_ASSERT(cx_array_add(arr, elem) == 0);
117 CX_TEST_ASSERT(arr.size == 7001);
118 CX_TEST_ASSERT(arr.capacity == 7168);
119 arr.size = 7168;
120 CX_TEST_ASSERT(cx_array_add(arr, elem) == 0);
121 CX_TEST_ASSERT(arr.size == 7169);
122 CX_TEST_ASSERT(arr.capacity == 7680);
123
124 CX_TEST_ASSERT(0 == cx_array_reserve(arr, 9000));
125 CX_TEST_ASSERT(arr.size == 7169);
126 CX_TEST_ASSERT(arr.capacity == 9000);
127
128 arr.size = 9000;
129 CX_TEST_ASSERT(cx_array_add(arr, elem) == 0);
130 CX_TEST_ASSERT(arr.size == 9001);
131 CX_TEST_ASSERT(arr.capacity == 9216);
132 arr.size = 9216;
133 CX_TEST_ASSERT(cx_array_add(arr, elem) == 0);
134 CX_TEST_ASSERT(arr.size == 9217);
135 CX_TEST_ASSERT(arr.capacity == 10240);
73 } 136 }
74 cx_array_free(arr); 137 cx_array_free(arr);
75 } 138 }
76 139
77 CX_TEST(test_array_remove) { 140 CX_TEST(test_array_remove) {
3436 3499
3437 CxTestSuite *cx_test_suite_array(void) { 3500 CxTestSuite *cx_test_suite_array(void) {
3438 CxTestSuite *suite = cx_test_suite_new("array (low-level)"); 3501 CxTestSuite *suite = cx_test_suite_new("array (low-level)");
3439 3502
3440 cx_test_register(suite, test_array_add); 3503 cx_test_register(suite, test_array_add);
3504 cx_test_register(suite, test_array_add_capacity_grow_strategy);
3441 cx_test_register(suite, test_array_remove); 3505 cx_test_register(suite, test_array_remove);
3442 cx_test_register(suite, test_array_remove_fast); 3506 cx_test_register(suite, test_array_remove_fast);
3443 cx_test_register(suite, test_array_remove_array); 3507 cx_test_register(suite, test_array_remove_array);
3444 cx_test_register(suite, test_array_remove_array_fast); 3508 cx_test_register(suite, test_array_remove_array_fast);
3445 cx_test_register(suite, test_array_reserve); 3509 cx_test_register(suite, test_array_reserve);

mercurial