/* 9unit Copyright (C) Jonathan Lamothe This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ // Tracks information about the tests being run. typedef struct TestState TestState; // Defines a log entry in a TestState struct typedef struct TestLogEntry TestLogEntry; // The following structures will typically be maintained by the // testing framework. You shouldn't need to concern yourself with // them. struct TestState { int run; // number of tests run int passed; // number of successful tests int failed; // number of failed tests int pending; // number of pending tests TestLogEntry *first_log; // the first log entry TestLogEntry *last_log; //the last log entry void *ptr; // used for passing data between tests const char *context; // immediate context of current test const char *full_context; // full context of current test int depth; // how many tests "deep" are we? void (*report)(const char *); // prints a string immediately }; struct TestLogEntry { char *text; // the entry text TestLogEntry *next; // points to the next entry }; // Possible results of running a single test typedef enum TestResult { test_success, // the test succeeded test_failure, // the test failed test_pending // the test is pending } TestResult; // Runs a single test extern void run_test( TestState *, // the TestState data TestResult (*)(TestState *) // the test to run ); // Runs multiple tests, displaying a summary at the end extern void run_tests( // runs the tests and updates a provided TestState void (*)(TestState *) ); // Adds an entry to the log that is displayed after the tests have // completed extern void append_test_log( TestState *, // the current state const char * // the message to append ); //jl