Renamed equal asserts, added asserts sample in README, added abort_test

This commit is contained in:
Snaipe 2015-03-17 16:11:32 +01:00
parent 56ff31b135
commit 547bd032d2
4 changed files with 63 additions and 46 deletions

View file

@ -52,6 +52,7 @@ Sample tests can be found in the [sample directory][samples].
* [A simple test][sample-simple]
* [Using multiple suites][sample-suites]
* [Writing assertions][sample-asserts]
* [Adding test fixtures][sample-fixtures]
* [Tests with signals][sample-signal]
* [Using report hooks][sample-report]
@ -85,6 +86,7 @@ A. Yes, you can, Cygwin is only required to compile the static library if
[samples]: ./samples/
[sample-simple]: ./samples/simple.c
[sample-suites]: ./samples/suites.c
[sample-asserts]: ./samples/asserts.c
[sample-fixtures]: ./samples/fixtures.c
[sample-signal]: ./samples/signal.c
[sample-report]: ./samples/report.c

View file

@ -51,22 +51,22 @@ parameter, and an optional failure message:
On top of those, more assertions are available for common operations:
* ``{assert,expect}_not(Actual, Expected, [Message])``
* ``{assert,expect}_equal(Actual, Expected, [Message])``
* ``{assert,expect}_not_equal(Actual, Unexpected, [Message])``
* ``{assert,expect}_eq(Actual, Expected, [Message])``
* ``{assert,expect}_neq(Actual, Unexpected, [Message])``
* ``{assert,expect}_lt(Actual, Expected, [Message])``
* ``{assert,expect}_leq(Actual, Expected, [Message])``
* ``{assert,expect}_gt(Actual, Expected, [Message])``
* ``{assert,expect}_geq(Actual, Expected, [Message])``
* ``{assert,expect}_float_equal(Actual, Expected, Epsilon, [Message])``
* ``{assert,expect}_float_not_equal(Actual, Unexpected, Epsilon, [Message])``
* ``{assert,expect}_strings_equal(Actual, Expected, [Message])``
* ``{assert,expect}_strings_not_equal(Actual, Unexpected, [Message])``
* ``{assert,expect}_float_eq(Actual, Expected, Epsilon, [Message])``
* ``{assert,expect}_float_neq(Actual, Unexpected, Epsilon, [Message])``
* ``{assert,expect}_strings_eq(Actual, Expected, [Message])``
* ``{assert,expect}_strings_neq(Actual, Unexpected, [Message])``
* ``{assert,expect}_strings_lt(Actual, Expected, [Message])``
* ``{assert,expect}_strings_leq(Actual, Expected, [Message])``
* ``{assert,expect}_strings_gt(Actual, Expected, [Message])``
* ``{assert,expect}_strings_geq(Actual, Expected, [Message])``
* ``{assert,expect}_arrays_equal(Actual, Expected, Size, [Message])``
* ``{assert,expect}_arrays_not_equal(Actual, Unexpected, Size, [Message])``
* ``{assert,expect}_arrays_eq(Actual, Expected, Size, [Message])``
* ``{assert,expect}_arrays_neq(Actual, Unexpected, Size, [Message])``
Fixtures
--------

View file

@ -65,6 +65,12 @@ struct criterion_assert_args {
// Common asserts
# define abort_test(Message) \
assert(0, \
.default_msg = "The conditions for this test were not met.", \
.msg = (Message) \
)
# define assert(...) assert_(__VA_ARGS__, .sentinel_ = 0)
# define expect(...) expect_(__VA_ARGS__, .sentinel_ = 0)
@ -86,11 +92,11 @@ struct criterion_assert_args {
# define expect_op_(Op, Actual, Expected, ...) \
assert_impl(NORMAL, (Actual) Op (Expected), __VA_ARGS__)
# define assert_equal(...) assert_op_(==, __VA_ARGS__, .sentinel_ = 0)
# define expect_equal(...) expect_op_(==, __VA_ARGS__, .sentinel_ = 0)
# define assert_eq(...) assert_op_(==, __VA_ARGS__, .sentinel_ = 0)
# define expect_eq(...) expect_op_(==, __VA_ARGS__, .sentinel_ = 0)
# define assert_not_equal(...) assert_op_(!=, __VA_ARGS__, .sentinel_ = 0)
# define expect_not_equal(...) expect_op_(!=, __VA_ARGS__, .sentinel_ = 0)
# define assert_neq(...) assert_op_(!=, __VA_ARGS__, .sentinel_ = 0)
# define expect_neq(...) expect_op_(!=, __VA_ARGS__, .sentinel_ = 0)
# define assert_lt(...) assert_op_(<, __VA_ARGS__, .sentinel_ = 0)
# define expect_lt(...) expect_op_(<, __VA_ARGS__, .sentinel_ = 0)
@ -106,30 +112,30 @@ struct criterion_assert_args {
// Floating-point asserts
# define assert_float_equal(...) \
assert_float_equal_(__VA_ARGS__, .sentinel_ = 0)
# define expect_float_equal(...) \
expect_float_equal_(__VA_ARGS__, .sentinel_ = 0)
# define assert_float_eq(...) \
assert_float_eq_(__VA_ARGS__, .sentinel_ = 0)
# define expect_float_eq(...) \
expect_float_eq_(__VA_ARGS__, .sentinel_ = 0)
# define assert_float_equal_(Actual, Expected, Epsilon, ...) \
# define assert_float_eq_(Actual, Expected, Epsilon, ...) \
assert_impl(FATAL, (Expected) - (Actual) <= (Epsilon) \
&& (Actual) - (Expected) <= (Epsilon), \
__VA_ARGS__)
# define expect_float_equal_(Actual, Expected, Epsilon, ...) \
# define expect_float_eq_(Actual, Expected, Epsilon, ...) \
assert_impl(NORMAL, (Expected) - (Actual) <= (Epsilon) \
&& (Actual) - (Expected) <= (Epsilon), \
__VA_ARGS__)
# define assert_float_not_equal(...) \
assert_float_not_equal_(__VA_ARGS__, .sentinel_ = 0)
# define expect_float_not_equal(...) \
expect_float_not_equal_(__VA_ARGS__, .sentinel_ = 0)
# define assert_float_neq(...) \
assert_float_neq_(__VA_ARGS__, .sentinel_ = 0)
# define expect_float_neq(...) \
expect_float_neq_(__VA_ARGS__, .sentinel_ = 0)
# define assert_float_not_equal_(Actual, Expected, Epsilon, ...) \
# define assert_float_neq_(Actual, Expected, Epsilon, ...) \
assert_impl(FATAL, (Expected) - (Actual) > (Epsilon) \
|| (Actual) - (Expected) > (Epsilon), \
__VA_ARGS__)
# define expect_float_not_equal_(Actual, Expected, Epsilon, ...) \
# define expect_float_neq_(Actual, Expected, Epsilon, ...) \
assert_impl(NORMAL, (Expected) - (Actual) > (Epsilon) \
|| (Actual) - (Expected) > (Epsilon), \
__VA_ARGS__)
@ -141,14 +147,14 @@ struct criterion_assert_args {
# define expect_strings_(Op, Actual, Expected, ...) \
assert_impl(NORMAL, strcmp((Actual), (Expected)) Op 0, __VA_ARGS__)
# define assert_strings_equal(...) \
# define assert_strings_eq(...) \
assert_strings_(==, __VA_ARGS__, .sentinel_ = 0)
# define expect_strings_equal(...) \
# define expect_strings_eq(...) \
expect_strings_(==, __VA_ARGS__, .sentinel_ = 0)
# define assert_strings_not_equal(...) \
# define assert_strings_neq(...) \
assert_strings_(!=, __VA_ARGS__, .sentinel_ = 0)
# define expect_strings_not_equal(...) \
# define expect_strings_neq(...) \
expect_strings_(!=, __VA_ARGS__, .sentinel_ = 0)
# define assert_strings_gt(...) assert_strings_(>, __VA_ARGS__, .sentinel_ = 0)
@ -165,24 +171,24 @@ struct criterion_assert_args {
// Array asserts
# define assert_arrays_equal(...) \
assert_arrays_equal_(__VA_ARGS__, .sentinel = 0)
# define expect_arrays_equal(...) \
expect_arrays_equal_(__VA_ARGS__, .sentinel = 0)
# define assert_arrays_eq(...) \
assert_arrays_eq_(__VA_ARGS__, .sentinel = 0)
# define expect_arrays_eq(...) \
expect_arrays_eq_(__VA_ARGS__, .sentinel = 0)
# define assert_arrays_not_equal(...) \
assert_arrays_not_equal_(__VA_ARGS__, .sentinel = 0)
# define expect_arrays_not_equal(...) \
expect_arrays_not_equal_(__VA_ARGS__, .sentinel = 0)
# define assert_arrays_neq(...) \
assert_arrays_neq_(__VA_ARGS__, .sentinel = 0)
# define expect_arrays_neq(...) \
expect_arrays_neq_(__VA_ARGS__, .sentinel = 0)
# define assert_arrays_equal_(A, B, Size, ...) \
# define assert_arrays_eq_(A, B, Size, ...) \
assert_impl(FATAL, !memcmp((A), (B), (Size)), __VA_ARGS__)
# define expect_arrays_equal_(A, B, Size, ...) \
# define expect_arrays_eq_(A, B, Size, ...) \
assert_impl(NORMAL, !memcmp((A), (B), (Size)), __VA_ARGS__)
# define assert_arrays_not_equal_(A, B, Size, ...) \
# define assert_arrays_neq_(A, B, Size, ...) \
assert_impl(FATAL, memcmp((A), (B), (Size)), __VA_ARGS__)
# define expect_arrays_not_equal_(A, B, Size, ...) \
# define expect_arrays_neq_(A, B, Size, ...) \
assert_impl(NORMAL, memcmp((A), (B), (Size)), __VA_ARGS__)
#endif /* !CRITERION_ASSERT_H_ */

View file

@ -6,14 +6,23 @@ Test(asserts, base) {
assert(true, "Assertions may take failure messages");
assert(true, .msg = "You can use explicit named arguments");
expect(false, "assert is fatal, expect isn't");
assert(false, "This assert runs");
assert(false, "This does not");
}
Test(asserts, old_school) {
if (false)
abort_test("You can abort the test with a message from anywhere");
abort_test(NULL); // or without a message
}
Test(asserts, string) {
assert_strings_equal("hello", "hello");
assert_strings_not_equal("hello", "olleh");
assert_strings_eq("hello", "hello");
assert_strings_neq("hello", "olleh");
assert_strings_gt("hello", "hell");
assert_strings_geq("hello", "hell");
@ -25,8 +34,8 @@ Test(asserts, string) {
}
Test(asserts, native) {
assert_equal(1, 1);
assert_not_equal(1, 2);
assert_eq(1, 1);
assert_neq(1, 2);
assert_lt(1, 2);
assert_leq(1, 2);
@ -38,6 +47,6 @@ Test(asserts, native) {
}
Test(asserts, float) {
assert_not_equal(0.1 * 0.1, 0.01);
assert_float_equal(0.1 * 0.1, 0.01, 0.001);
assert_neq(0.1 * 0.1, 0.01);
assert_float_eq(0.1 * 0.1, 0.01, 0.001);
}