| 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); |