diff options
author | klto <klto@bb4c1ae6-6eb5-4d93-a66e-2307d6765a9c> | 2010-10-28 07:33:28 +0000 |
---|---|---|
committer | klto <klto@bb4c1ae6-6eb5-4d93-a66e-2307d6765a9c> | 2010-10-28 07:33:28 +0000 |
commit | 2f7a7f07846aa498b4b79a83bbe425d7aba73f03 (patch) | |
tree | 18c49cd2e8f09c6df38ceab570f72dd52dd51773 /unittest | |
parent | b29885c60c5b8f1b204e78902df728121b5e7cf2 (diff) | |
parent | 098c2b10024f57666e381889438e5250ef882a44 (diff) |
Merge branch 'master' into local-svn
git-svn-id: https://parma.zhaw.ch/svn/csnippets@2 bb4c1ae6-6eb5-4d93-a66e-2307d6765a9c
Diffstat (limited to 'unittest')
-rwxr-xr-x | unittest/runtests.py | 59 | ||||
l--------- | unittest/stringify.h | 1 | ||||
-rw-r--r-- | unittest/unittest.h | 72 |
3 files changed, 132 insertions, 0 deletions
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..2350f55 --- /dev/null +++ b/unittest/unittest.h @@ -0,0 +1,72 @@ +#ifndef _UNITTEST_H_ +#define _UNITTEST_H_ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#include "stringify.h" + +#define TEST_PASS 0 +#define TEST_FAIL 1 + +#define test_print(fmt, args...) \ + fprintf(stderr, "%s:%d:" fmt, __FILE__, __LINE__, ##args) + +#define assert_err(fmt, args...) \ + test_print("Assertion error: " fmt, ##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); \ + }}) + +/* Assert that a is NULL */ +#define test_assert_null(a) ({ \ + if ((a) != NULL) { \ + assert_err(__stringify(a) " not NULL\n"); \ + exit(TEST_FAIL); \ + }}) + +/* Assert that a is not NULL */ +#define test_assert_not_null(a) ({ \ + if ((a) == NULL) { \ + assert_err(__stringify(a) " is NULL\n"); \ + exit(TEST_FAIL); \ + }}) + +static inline int __xstrmatch(const char *ctx, const char *arg) +{ + size_t len = strlen(ctx); + return (strlen(arg) == len && strncmp(arg, ctx, len) == 0); +} + +/* Assert that string a matches string b */ +#define test_assert_str_eq(a, b) ({ \ + if (!__xstrmatch((a), (b))) { \ + assert_err(__stringify(a) " does not match " __stringify(b) "\n"); \ + exit(TEST_FAIL); \ + }}) + +#endif /* _UNITTEST_H_ */ |