From d76cfad42a29b94c129c8e48b145e61ebd03b183 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Tue, 9 Mar 2010 12:19:59 +0100 Subject: Add unittest module --- unittest/runtests.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ unittest/stringify.h | 1 + unittest/unittest.h | 40 +++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100755 unittest/runtests.py create mode 120000 unittest/stringify.h create mode 100644 unittest/unittest.h (limited to 'unittest') diff --git a/unittest/runtests.py b/unittest/runtests.py new file mode 100755 index 0000000..dbc616f --- /dev/null +++ b/unittest/runtests.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import os, sys +import getopt +import subprocess + +class colors: + RED = '\033[91m' + GREEN = '\033[92m' + END = '\033[0m' + + def disable(self): + self.RED = '' + self.GREEN = '' + self.END = '' + + def red(self, str): + return self.RED + str + self.END + + def green(self, str): + return self.GREEN + str + self.END + +failed = passed = 0 +c = colors() + +def fail(t, ret): + global failed, c + print(" %s %s (%s)" % (c.red("[FAIL]"), t, ret)) + failed += 1 + +def ok(t): + global passed, c + print(" %s %s" % (c.green("[PASS]"), t)) + passed += 1 + +def main(): + if len(sys.argv) < 2: + sys.exit(0) + + total = len(sys.argv[1:]) + + for t in sys.argv[1:]: + t_p = os.path.join('.', t) + if not os.path.exists(t_p): + fail(t, "not found") + continue + + ret = subprocess.call(t_p) + if ret == 0: + ok(t) + else: + fail(t, "retval %s" % ret) + + print("Ran %s tests (%s, %s)" % (total, c.green(str(passed) + " passed"), c.red(str(failed) + " failed"))) + exit(ret) + +if __name__ == '__main__': + main() diff --git a/unittest/stringify.h b/unittest/stringify.h new file mode 120000 index 0000000..2728caf --- /dev/null +++ b/unittest/stringify.h @@ -0,0 +1 @@ +../stringify/stringify.h \ No newline at end of file diff --git a/unittest/unittest.h b/unittest/unittest.h new file mode 100644 index 0000000..0ed005f --- /dev/null +++ b/unittest/unittest.h @@ -0,0 +1,40 @@ +#ifndef _UNITTEST_H_ +#define _UNITTEST_H_ + +#include +#include +#include "stringify.h" + +#define TEST_PASS 0 +#define TEST_FAIL 1 + +#define assert_err(fmt, args...) \ + fprintf(stderr, "%s:%d: Assertion error: " fmt, __FILE__, __LINE__, ##args) + +/* Assert the expression 'expr' */ +#define test_assert(expr) ({if (!(expr)) { \ + assert_err(__stringify(expr) "\n"); \ + exit(TEST_FAIL); \ + }}) + +/* Assert the expression 'expr' and print 'msg' on fail */ +#define test_assert_msg(expr, msg) ({if (!(expr)) { \ + assert_err(msg "\n"); \ + exit(TEST_FAIL); \ + }}) + +/* Assert that a == b */ +#define test_assert_eq(a, b) ({ \ + if ((a) != (b)) { \ + assert_err(__stringify(a) " != " __stringify(b) "\n"); \ + exit(TEST_FAIL); \ + }}) + +/* Assert that a != b */ +#define test_assert_neq(a, b) ({ \ + if ((a) == (b)) { \ + assert_err(__stringify(a) " != " __stringify(b) "\n"); \ + exit(TEST_FAIL); \ + }}) + +#endif /* _UNITTEST_H_ */ -- cgit v1.2.3-54-g00ecf