#include "config.h" #include #include #include #include #include "../src/nss_wrapper.c" static void test_nwrap_vector_basic_add(void **state) { struct nwrap_vector v; char string[] = "string!"; char string2[] = "2string!"; (void) state; /* unused */ nwrap_vector_init(&v); assert_non_null(v.items); nwrap_vector_add_item(&v, string); assert_null(v.items[1]); assert_int_equal(v.count, 1); assert_string_equal(v.items[0], string); assert_int_equal(v.capacity, DEFAULT_VECTOR_CAPACITY); assert_string_equal(v.items[0], "string!"); nwrap_vector_add_item(&v, string2); assert_null(v.items[2]); assert_int_equal(v.count, 2); assert_string_equal(v.items[0], string); assert_string_equal(v.items[1], string2); free(v.items); } static void test_nwrap_vector_merge_empty(void **state) { struct nwrap_vector v1; struct nwrap_vector v2; char string[] = "string!"; char string2[] = "2string!"; (void) state; /* unused */ nwrap_vector_init(&v1); assert_non_null(v1.items); assert_int_equal(v1.count, 0); nwrap_vector_init(&v2); assert_non_null(v2.items); assert_int_equal(v2.count, 0); nwrap_vector_merge(&v1, &v2); assert_int_equal(v1.count, 0); assert_null(v1.items[0]); nwrap_vector_add_item(&v1, string); nwrap_vector_add_item(&v1, string2); assert_int_equal(v1.count, 2); nwrap_vector_merge(&v1, &v2); assert_int_equal(v1.count, 2); assert_string_equal(v1.items[0], string); assert_string_equal(v1.items[1], string2); assert_null(v1.items[2]); nwrap_vector_merge(&v2, &v1); assert_int_equal(v2.count, 2); assert_string_equal(v2.items[0], string); assert_string_equal(v2.items[1], string2); assert_null(v2.items[2]); free(v1.items); free(v2.items); } static void test_nwrap_vector_merge(void **state) { struct nwrap_vector v1; struct nwrap_vector v2; char string[] = "string!"; char string2[] = "2string!"; (void) state; /* unused */ nwrap_vector_init(&v1); assert_non_null(v1.items); nwrap_vector_add_item(&v1, string); nwrap_vector_add_item(&v1, string2); assert_int_equal(v1.count, 2); nwrap_vector_init(&v2); assert_non_null(v2.items); nwrap_vector_add_item(&v2, string2); nwrap_vector_add_item(&v2, string); assert_int_equal(v2.count, 2); nwrap_vector_merge(&v1, &v2); assert_int_equal(v1.count, 4); assert_string_equal(v1.items[0], string); assert_string_equal(v1.items[1], string2); assert_string_equal(v1.items[2], string2); assert_string_equal(v1.items[3], string); assert_null(v1.items[4]); free(v1.items); free(v2.items); } static void test_nwrap_vector_merge_max(void **state) { struct nwrap_vector v1; struct nwrap_vector v2; char string[] = "string!"; char string2[] = "2string!"; int p; (void) state; /* unused */ nwrap_vector_init(&v1); assert_non_null(v1.items); for (p = 0; p < 64; ++p) { nwrap_vector_add_item(&v1, string); } assert_int_equal(v1.count, 64); nwrap_vector_init(&v2); assert_non_null(v2.items); nwrap_vector_merge(&v2, &v1); assert_int_equal(v2.count, 64); for (p = 0; p < 64; ++p) { assert_string_equal(v2.items[p], string); } nwrap_vector_add_item(&v2, string2); assert_string_equal(v2.items[64], string2); assert_int_equal(v2.count, 65); assert_null(v2.items[65]); free(v1.items); free(v2.items); } int main(void) { int rc; const struct CMUnitTest tests[] = { cmocka_unit_test(test_nwrap_vector_basic_add), cmocka_unit_test(test_nwrap_vector_merge_empty), cmocka_unit_test(test_nwrap_vector_merge), cmocka_unit_test(test_nwrap_vector_merge_max), }; rc = cmocka_run_group_tests(tests, NULL, NULL); return rc; }