Skip to content
goat-based minimalistic C unit testing library
C Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.gitignore
license.md
makefile
readme.md

readme.md

Testoasterror

Testoasterror is a minimalistic testing library. It is written in C99 and does not use dynamic memory allocations by default.

Testing

Run make and make run. This will execute the example in the tests folder.

Using

TL;DR

Check out the tests folder

Details

Include testoasterror.h and compile testoasterror.c with your testing main().

Declare an array of bool to hold the results of each tested expression. Its size determines the maximum number of expression checks for the same test. If one outreaches that limit, testoasterror will print a "fail overflow" message. The limit is 255, the maximum for a uint8_t.

bool results[255];

Also declare an array of function pointers to hold your tests

void (*funcs[3])(struct testoasterror*) =
{
	test1,
	test2,
	test3
}

Then, initialize a testoasterror context, giving:

  • a pointer to the context to initialize
  • the expression results buffer
  • its length
  • the testing functions array
  • its length
struct testoasterror test;
testoasterror_init(&test, results, 255, funcs, 3);

Run the tests and you're good to go!

testoasterror_run(&test);

You can now write your tests in other C files, using the same function prototype

#ifndef C_TESTS
#define C_TESTS

#include "testoasterror.h"

// a test
void test1(struct testoasterror* test)
{
	// an expression check
	testoasterror(test, 1 > 0);
}

#endif

It is, in my opinion, a good idea to include them directly with the main(). This way, the function pointers will resolve without the need for a header (hence the include guards in the C file example above)

#include "tests.c"

Extra: to abort, call the fail function and return

testoasterror_fail(test);

Greetings

nnorm for ninja-starring this repo (how can you be this fast?!)

You can’t perform that action at this time.