tinytest is a simple and lightweight unit testing library for C projects. It provides a minimal set of macros and functions to write, run, and report tests in a concise and easy-to-use manner.
- Simplicity: Minimal API with just a few macros and functions to get started.
- Flexibility: Write tests using plain C code without any external dependencies.
- Portability: Works on multiple platforms (Linux, macOS) and architectures (x86, ARM).
- Ease of Integration: Seamlessly integrate into your existing C projects.
Download the required files from the releases:
tinytest.h- Header filelibtinytest-(arch).so- Shared library (Linux). Rename to libtinytest.so after downloading.libtinytest-(arch).dylib- Dynamic library (macOS). Rename to libtinytest.dylib after downloading.
assert_equal(left, right, failure_message);
// Compares two values of the same type (int, float, double, or string)
// Prints detailed error message if values don't match
assert_condition(condition, failure_message);
// Tests if a boolean condition is true
addTest(test_name, function_running_the_test_case);
// Add the Test case to be run
runTests();
// Run all the Test cases# Linux
gcc -Wall -Wextra test_file.c -L/path/to/lib -ltinytest -o test_program
# macOS
gcc -Wall -Wextra test_file.c -L/path/to/lib -ltinytest -o test_programMake sure the library is in your library path or use LD_LIBRARY_PATH (Linux) or DYLD_LIBRARY_PATH (macOS).
#include "tinytest.h"
void test_addition() {
int result = 2 + 2;
assert_equal(result, 5, "2 + 2 should equal 4");
assert_condition(result > 0, "Result should be positive");
}
void test_string_comparison() {
const char *str = "hello";
assert_equal(str, "hello", "String should match 'hello'");
}
int main() {
addTest("Addition Test", test_addition);
addTest("String Test", test_string_comparison);
runTests();
return 0;
} Assertion failed: 2 + 2 should equal 4
Left = 4
Right = 5
✘ [Test Case] Addition Test: Failed
✓ [Test Case] String Test: Passed
============TEST REPORT============
Tests passed = 1, Tests failed = 1The library supports comparison of these types:
int
float (with epsilon comparison)
double (with epsilon comparison)
char* and const char* (string comparison)