/** * is-in-order-utest.c * Some unit tests for the is_in_order procedure. */ #include #include "int-testing-tools.h" #include "string-testing-tools.h" int errors = 0; void int_check (int a[], int size, int expected) { int result = is_in_order (a, size); if (result != expected) { printf ("TEST: is_in_order("); print_int_array (a, size); printf (")\n"); printf (" RESULT: %d\n", result); printf (" EXPECTED: %d\n", expected); ++errors; } } // int_check void string_check (char *a[], int size, int expected) { int result = string_is_in_order (a, size); if (result != expected) { printf ("TEST: is_in_order("); print_string_array (a, size); printf (")\n"); printf (" RESULT: %d\n", result); printf (" EXPECTED: %d\n", expected); ++errors; } } // string_check void int_tests () { int_check ((int[]) { }, 0, 1); int_check ((int[]) { 1 }, 1, 1); int_check ((int[]) { 1, 2 }, 2, 1); int_check ((int[]) { 2, 1 }, 2, 0); int_check ((int[]) { 1, 1 }, 2, 1); int_check ((int[]) { 1, 1, 1 }, 3, 1); int_check ((int[]) { 1, 1, 2 }, 3, 1); int_check ((int[]) { 1, 2, 1 }, 3, 0); int_check ((int[]) { 2, 1, 1 }, 3, 0); int_check ((int[]) { 1, 2, 2 }, 3, 1); int_check ((int[]) { 2, 1, 2 }, 3, 0); int_check ((int[]) { 2, 2, 1 }, 3, 0); int_check ((int[]) { 1, 2, 3 }, 3, 1); int_check ((int[]) { 2, 1, 3 }, 3, 0); int_check ((int[]) { 1, 3, 2 }, 3, 0); int_check ((int[]) { 3, 1, 2 }, 3, 0); int_check ((int[]) { 2, 3, 1 }, 3, 0); int_check ((int[]) { 3, 2, 1 }, 3, 0); } void string_tests () { string_check ((char *[]) { }, 0, 1); string_check ((char *[]) { "ant" }, 1, 1); string_check ((char *[]) { "ant", "ant" }, 2, 1); string_check ((char *[]) { "ant", "bee" }, 2, 1); string_check ((char *[]) { "bee", "ant" }, 2, 0); string_check ((char *[]) { "ant", "bee", "doe" }, 3, 1); string_check ((char *[]) { "ant", "ant", "ant" }, 3, 1); string_check ((char *[]) { "aa", "ab", "ac" }, 3, 1); string_check ((char *[]) { "doe", "ant", "ant" }, 3, 0); } // string_tests int main () { int_tests (); string_tests (); if (errors) printf ("%d errors encountered.\n", errors); return errors; } // main