/** * MinCTest - Minimalistic C unit test framework * Copyright (C) 2015 Camil Staps * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU 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 General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef MINCTEST_MINCTEST_H #define MINCTEST_MINCTEST_H #include #include #include typedef struct { uint16_t passed; // Number of passed tests uint16_t failed; // Number of failed tests bool show_pass; // Whether or not to print a message when a test passes struct timeval start_last_test; // Time last test was started struct timeval created; // Time this was created __suseconds_t used; // usecs used for tests } tester; /** * Initialize a tester struct * * This allocates a tester on the heap. Don't forget to call test_destroy to * free that memory. * * @return a struct on the heap for use in the other test_* functions */ tester* test_initialize(void); /** * Show summarised data about the tester * * Shows a green message when all tests passed, otherwise a red message that * some failed. Shows passed/failed counts as well. * * @param tester* a pointer to a tester from test_initialize */ void test_wrapup(tester*); /** * Destroy a tester struct * * Essentially frees the memory that was allocated for the struct. * * @param tester* a pointer to a tester from test_initialize */ void test_destroy(tester*); /** * Exit the program with an appropriate return value * * Returns -1 if one or more tests failed, 0 otherwise. Exits the program. * * @param tester* a pointer to a tester from test_initialize * @return don't expect this to return */ void test_exit(tester*); /** * Start the timer for a test */ void test_start_timer(tester*); /** * Test for truth on a bool * * Outputs a red message for failure, and a green one for passing if * tester->show_pass is true. Adds this test to the summarised data in the * tester. * * @param tester* a pointer to a tester from test_initialize * @param check the boolean that should be true * @param test a custom message to show */ void test_true(tester* tester, bool check, const char* text); #endif // MINCTEST_MINCTEST_H