/** * This is a test for dynar in $package$ */ #include "si_test.h" #include "dynar.h" #include int dynar_string_compare(const void * one, const void * two) { if(!one) { if(!two) return 0; return 1; } if(!two) return -1; if(!*(char*)one) { if(!*(char *)two) return 0; return 1; } if(!*(char *)two) return -1; printf("Compare: %s, %s\n",*((const char**) one), *((const char**) two)); return strcmp( *((const char**) one), *((const char**) two)); } TEST_FUNC(dynar) { int index; const char * t = "wine"; Dynar * arr; arr = dynar_newptr(4); TEST_NOTNULL(dynar_putptr(arr, 0, "zebra")); TEST_NOTNULL(dynar_putptr(arr, 1, "apple")); TEST_NOTNULL(dynar_putptr(arr, 2, "bread")); TEST_NOTNULL(dynar_putptr(arr, 3, "wine")); dynar_grow(arr, 9); TEST_NOTNULL(dynar_putptr(arr, 4, "thyme")); for(index = 5; index < dynar_size(arr); index ++) { dynar_putptr(arr, index, NULL); } for(index = 0; index < dynar_size(arr); index ++) { char * str = dynar_getptr(arr, index); if(str) { printf("Array index %d : %s\n", index, str); } else { printf("Array index %d : NULL\n", index); } } TEST_NOTNULL(dynar_qsort(arr, dynar_string_compare)); printf("After qsort:\n"); for(index = 0; index < dynar_size(arr); index ++) { char * str = dynar_getptr(arr, index); printf("Array index %d : %s\n", index, str); } TEST_NOTNULL(dynar_bsearch(arr, &t, dynar_string_compare)); TEST_DONE(); } TEST_FUNC(dynar_long) { long value = 0; Dynar * arr = dynar_new_long(); dynar_grow(arr, 10); TEST_NOTNULL(dynar_put_long(arr, 3, 12345678)); TEST_NOTNULL(dynar_get_long(arr, 3, &value)); TEST_LONGEQ(value, 12345678); TEST_NOTNULL(dynar_append_long(arr, 9876)); TEST_NOTNULL(dynar_get_long(arr, 10, &value)); TEST_LONGEQ(value, 9876); TEST_NOTNULL(dynar_append_long(arr, 9876)); TEST_NOTNULL(dynar_get_long(arr, 11, &value)); TEST_LONGEQ(value, 9876); TEST_NOTNULL(dynar_append_long(arr, 9876)); TEST_NOTNULL(dynar_get_long(arr, 12, &value)); TEST_LONGEQ(value, 9876); TEST_NOTNULL(dynar_append_long(arr, 9876)); TEST_NOTNULL(dynar_get_long(arr, 13, &value)); TEST_LONGEQ(value, 9876); TEST_NOTNULL(dynar_append_long(arr, 9876)); TEST_NOTNULL(dynar_get_long(arr, 14, &value)); TEST_LONGEQ(value, 9876); TEST_NOTNULL(dynar_append_long(arr, 9876)); TEST_NOTNULL(dynar_get_long(arr, 15, &value)); TEST_LONGEQ(value, 9876); TEST_NOTNULL(dynar_append_long(arr, 9876)); TEST_NOTNULL(dynar_get_long(arr, 16, &value)); TEST_LONGEQ(value, 9876); TEST_NOTNULL(dynar_append_long(arr, 9876)); TEST_NOTNULL(dynar_get_long(arr, 17, &value)); TEST_LONGEQ(value, 9876); TEST_DONE(); } int main(void) { TEST_INIT(); TEST_RUN(dynar); TEST_RUN(dynar_long); TEST_REPORT(); }