/** * 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_H #define MINCTEST_H #include #include #include struct tester { 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 */ }; /** * 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 */ struct 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(struct 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(struct 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(struct tester *); /** * Start the timer for a test */ void test_start_timer(struct 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(struct tester *tester, bool check, const char* text); #endif /* MINCTEST_H */