Busybox unit test framework
===========================

This document describes what you need to do to write test cases using the
Busybox unit test framework.


Building unit tests
-------------------

The framework and all tests are built as a regular Busybox applet if option
CONFIG_UNIT_TEST (found in General Configuration -> Debugging Options) is set.


Writing test cases
------------------

Unit testing interface can be found in include/bbunit.h.

Tests can be placed in any .c file in Busybox tree - preferably right next to
the functions they test. Test cases should be enclosed within an #if, and
should start with BBUNIT_DEFINE_TEST macro and end with BBUNIT_ENDTEST within
the test curly brackets. If an assertion fails the test ends immediately, ie.
the following assertions will not be reached. Any code placed after
BBUNIT_ENDTEST is executed regardless of the test result. Here's an example:

#if ENABLE_UNIT_TEST

BBUNIT_DEFINE_TEST(test_name)
{
	int *i;

	i = malloc(sizeof(int));
	BBUNIT_ASSERT_NOTNULL(i);
	*i = 2;
	BBUNIT_ASSERT_EQ((*i)*(*i), 4);

	BBUNIT_ENDTEST;

	free(i);
}

#endif /* ENABLE_UNIT_TEST */


Running the unit test suite
---------------------------

To run the tests you can either directly run 'busybox unit' or use 'make test'
to run both the unit tests (if compiled) and regular test suite.
