/** * avetestc.c - An non-interactive unit test of the average procedure. */ // +---------+-------------------------------------------------------- // | Headers | // +---------+ #include #include #include #include "average.h" // +---------+-------------------------------------------------------- // | Globals | // +---------+ int errors = 0; // The count of errors // +---------+-------------------------------------------------------- // | Helpers | // +---------+ /** * Procedure: * report * Parameters * values, an array of integers * count, an integer * expected, an integer * Purpose: * Check if we get a result we expect. * Produces: * [Nothing; Called for the side effect.] * Pre: * values[] contains at least count values * count > 0 */ void report (int values[], int count, int expected) { int i; int ave = average (values, count); if (ave != expected) { ++errors; printf ("For average ({%d", values[0]); for (i = 1; i < count; i++) { printf (",%d", values[i]); } // for printf ("}), expected %d, got %d.\n", expected, ave); } } // report // +------+----------------------------------------------------------- // | Main | // +------+ int main () { int i; int values0[] = { 1, 2, 3, 4, 5 }; int values1[] = { -11 }; int values2[] = { 0, 0, 0 }; int values3[] = { 'a', 'c' }; int values4[] = { INT_MAX, INT_MAX, INT_MAX, INT_MAX }; // One simple test report (values0, 5, 3); report (values1, 1, -11); report (values2, 3, 0); report (values3, 1, 'a'); report (values3, 2, 'b'); for (i = 1; i <= 4; i++) report (values4, i, INT_MAX); // And we're done if (errors) printf ("%d tests failed.\n", errors); return errors; } // main