Commit Graph

8 Commits

Author SHA1 Message Date
Allan Odgaard
2c55141e47 Support setup functions for tests
Previously this had to be done via global constructor functions but it would seem the execution of these may happen before initialization of global data.
2013-08-16 22:40:08 +02:00
Allan Odgaard
6f264a2520 Fix issue with reference types used in assertions 2013-07-26 13:53:57 +02:00
Allan Odgaard
ca91ce58c6 Add options to generated test executable
The current options are:

 -b/--benchmark   Run benchmarks instead of tests.
 -m/--measure     Measure time of each test. This disables concurrency.
 -r/--repeat <n>  Number of times to repeat each test/benchmark.
 -v/--verbose     Be verbose.
 -h/--help        Show this help.
 -V/--version     Show version number.
2013-03-10 14:34:44 +01:00
Allan Odgaard
99969996c5 Ensure test assertions are only evaluated once 2013-03-10 14:34:43 +01:00
Allan Odgaard
1f4eecbab7 Always use system default ruby 1.8
Maybe fixes #845.
2013-02-27 13:42:23 +01:00
Allan Odgaard
2f3cd66a2b Support relative includes in tests
Since we inline the test file, rather than include it, relative includes from this inlined code would not work.
2013-02-23 09:19:45 +01:00
Allan Odgaard
9ebcfcbd79 Support to_s for most integer types
Here “most” refers to signed and unsigned 16, 32, and 64 bit integers.
2013-02-22 15:53:05 +01:00
Allan Odgaard
01417054cb Add test system supporting grand central dispatch
The motivation for introducing a new test generator is that CxxTest cannot be used with tests that (indirectly) schedule code to run in the main queue.

There are a few other advantages of breaking with CxxTest:

 1. Less boilerplate: A test file need only contain a
    function named with a ‘test_’ prefix. No classes,
    inheritance, or similar. If you need fixtures, use the
    multitude of ways that C/C++ allows that (constructor
    functions or non-POD types with static storage).

 2. Concurrent tests: Test functions are scheduled with
    ‘dispatch_apply’ and will thus run concurrently. If
    you need serial execution you can wrap your tests in a
    block and schedule that to run in the main queue.
    Though you should catch exceptions and re-throw these
    in the test’s original queue, as the test assertions
    are using exceptions.

 3. Easier output of custom types: The assertion macros
    will call ‘to_s’ on the arguments given, so the only
    thing required to make these output nicely is to
    provide a ‘to_s’ overload for your custom type /
    enumeration. I know that the standard way to do this
    is overloading operator<< for a stream, but the
    TextMate code-base already uses the ‘to_s’
    convention.

Long-term I can see a few other advantages, like calling preprocessor on the input files to support #if/#else/#endif to disable tests, better support for Cocoa code (NSRunLoop), and introducing test timeouts.
2013-02-21 15:54:37 +01:00