Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 36 additions & 28 deletions clar.h
Original file line number Diff line number Diff line change
Expand Up @@ -170,34 +170,42 @@ const char *cl_fixture_basename(const char *fixture_name);
#define cl_assert_equal_wcsn(wcs1,wcs2,len) clar__assert_equal(CLAR_CURRENT_FILE,CLAR_CURRENT_FUNC,CLAR_CURRENT_LINE,"String mismatch: " #wcs1 " != " #wcs2, 1, "%.*ls", (wcs1), (wcs2), (int)(len))
#define cl_assert_equal_wcsn_(wcs1,wcs2,len,note) clar__assert_equal(CLAR_CURRENT_FILE,CLAR_CURRENT_FUNC,CLAR_CURRENT_LINE,"String mismatch: " #wcs1 " != " #wcs2 " (" #note ")", 1, "%.*ls", (wcs1), (wcs2), (int)(len))

/* The following three macros are essentially deprecated now in favor of the macros in subsequent blocks. */
#define cl_assert_equal_i(i1,i2) cl_assert_compare_i(i1,i2,CLAR_COMPARISON_EQ,#i1 " != " #i2,"%"PRIdMAX " != %"PRIdMAX,(intmax_t)(i1),(intmax_t)(i2))
#define cl_assert_equal_i_(i1,i2,note) cl_assert_compare_i(i1,i2,CLAR_COMPARISON_EQ,#i1 " != " #i2 " (" #note ")","%"PRIdMAX " != %"PRIdMAX,(intmax_t)(i1),(intmax_t)(i2))
#define cl_assert_equal_i_fmt(i1,i2,fmt) cl_assert_compare_i(i1,i2,CLAR_COMPARISON_EQ,#i1 " != " #i2, fmt " != " fmt, (int)(i1), (int)(i2))

#define cl_assert_compare_i(i1,i2,cmp,error,description,...) clar__assert_compare_i(CLAR_CURRENT_FILE,CLAR_CURRENT_FUNC,CLAR_CURRENT_LINE,1,cmp,(i1),(i2),error,description,__VA_ARGS__)
#define cl_assert_eq_i_(i1,i2,description,...) cl_assert_compare_i(i1,i2,CLAR_COMPARISON_EQ,"Expected comparison to hold: " #i1 " == " #i2,description,__VA_ARGS__)
#define cl_assert_eq_i(i1,i2) cl_assert_eq_i_(i1,i2,"%"PRIdMAX " != %"PRIdMAX,(intmax_t)(i1),(intmax_t)(i2))
#define cl_assert_lt_i_(i1,i2,description,...) cl_assert_compare_i(i1,i2,CLAR_COMPARISON_LT,"Expected comparison to hold: " #i1 " < " #i2,description,__VA_ARGS__)
#define cl_assert_lt_i(i1,i2) cl_assert_lt_i_(i1,i2,"%"PRIdMAX " >= %"PRIdMAX,(intmax_t)(i1),(intmax_t)(i2))
#define cl_assert_le_i_(i1,i2,description,...) cl_assert_compare_i(i1,i2,CLAR_COMPARISON_LE,"Expected comparison to hold: " #i1 " <= " #i2,description,__VA_ARGS__)
#define cl_assert_le_i(i1,i2) cl_assert_le_i_(i1,i2,"%"PRIdMAX " > %"PRIdMAX,(intmax_t)(i1),(intmax_t)(i2))
#define cl_assert_gt_i_(i1,i2,description,...) cl_assert_compare_i(i1,i2,CLAR_COMPARISON_GT,"Expected comparison to hold: " #i1 " > " #i2,description,__VA_ARGS__)
#define cl_assert_gt_i(i1,i2) cl_assert_gt_i_(i1,i2,"%"PRIdMAX " <= %"PRIdMAX,(intmax_t)(i1),(intmax_t)(i2))
#define cl_assert_ge_i_(i1,i2,description,...) cl_assert_compare_i(i1,i2,CLAR_COMPARISON_GE,"Expected comparison to hold: " #i1 " >= " #i2,description,__VA_ARGS__)
#define cl_assert_ge_i(i1,i2) cl_assert_ge_i_(i1,i2,"%"PRIdMAX " < %"PRIdMAX,(intmax_t)(i1),(intmax_t)(i2))

#define cl_assert_compare_u(u1,u2,cmp,error,description,...) clar__assert_compare_u(CLAR_CURRENT_FILE,CLAR_CURRENT_FUNC,CLAR_CURRENT_LINE,1,cmp,(u1),(u2),error,description,__VA_ARGS__)
#define cl_assert_eq_u_(u1,u2,description,...) cl_assert_compare_u(u1,u2,CLAR_COMPARISON_EQ,"Expected comparison to hold: " #u1 " == " #u2,description,__VA_ARGS__)
#define cl_assert_eq_u(u1,u2) cl_assert_eq_u_(u1,u2,"%"PRIuMAX " != %"PRIuMAX,(uintmax_t)(u1),(uintmax_t)(u2))
#define cl_assert_lt_u_(u1,u2,description,...) cl_assert_compare_u(u1,u2,CLAR_COMPARISON_LT,"Expected comparison to hold: " #u1 " < " #u2,description,__VA_ARGS__)
#define cl_assert_lt_u(u1,u2) cl_assert_lt_u_(u1,u2,"%"PRIuMAX " >= %"PRIuMAX,(uintmax_t)(u1),(uintmax_t)(u2))
#define cl_assert_le_u_(u1,u2,description,...) cl_assert_compare_u(u1,u2,CLAR_COMPARISON_LE,"Expected comparison to hold: " #u1 " <= " #u2,description,__VA_ARGS__)
#define cl_assert_le_u(u1,u2) cl_assert_le_u_(u1,u2,"%"PRIuMAX " > %"PRIuMAX,(uintmax_t)(u1),(uintmax_t)(u2))
#define cl_assert_gt_u_(u1,u2,description,...) cl_assert_compare_u(u1,u2,CLAR_COMPARISON_GT,"Expected comparison to hold: " #u1 " > " #u2,description,__VA_ARGS__)
#define cl_assert_gt_u(u1,u2) cl_assert_gt_u_(u1,u2,"%"PRIuMAX " <= %"PRIuMAX,(uintmax_t)(u1),(uintmax_t)(u2))
#define cl_assert_ge_u_(u1,u2,description,...) cl_assert_compare_u(u1,u2,CLAR_COMPARISON_GE,"Expected comparison to hold: " #u1 " >= " #u2,description,__VA_ARGS__)
#define cl_assert_ge_u(u1,u2) cl_assert_ge_u_(u1,u2,"%"PRIuMAX " < %"PRIuMAX,(uintmax_t)(u1),(uintmax_t)(u2))
#define cl_assert_compare_i_(i1, i2, cmp, error, ...) clar__assert_compare_i(CLAR_CURRENT_FILE, CLAR_CURRENT_FUNC, CLAR_CURRENT_LINE, 1, cmp, \
(i1), (i2), "Expected comparison to hold: " error, __VA_ARGS__)
#define cl_assert_compare_i(i1, i2, cmp, error, fmt) do { \
intmax_t v1 = (i1), v2 = (i2); \
clar__assert_compare_i(CLAR_CURRENT_FILE, CLAR_CURRENT_FUNC, CLAR_CURRENT_LINE, 1, cmp, \
v1, v2, "Expected comparison to hold: " error, fmt, v1, v2); \
} while (0)
#define cl_assert_equal_i_(i1, i2, ...) cl_assert_compare_i_(i1, i2, CLAR_COMPARISON_EQ, #i1 " == " #i2, __VA_ARGS__)
#define cl_assert_equal_i(i1, i2) cl_assert_compare_i (i1, i2, CLAR_COMPARISON_EQ, #i1 " == " #i2, "%"PRIdMAX " != %"PRIdMAX)
#define cl_assert_equal_i_fmt(i1, i2, fmt) cl_assert_compare_i_(i1, i2, CLAR_COMPARISON_EQ, #i1 " == " #i2, fmt " != " fmt, (int)(i1), (int)(i2))
#define cl_assert_lt_i_(i1, i2, ...) cl_assert_compare_i_(i1, i2, CLAR_COMPARISON_LT, #i1 " < " #i2, __VA_ARGS__)
#define cl_assert_lt_i(i1, i2) cl_assert_compare_i (i1, i2, CLAR_COMPARISON_LT, #i1 " < " #i2, "%"PRIdMAX " >= %"PRIdMAX)
#define cl_assert_le_i_(i1, i2, ...) cl_assert_compare_i_(i1, i2, CLAR_COMPARISON_LE, #i1 " <= " #i2, __VA_ARGS__)
#define cl_assert_le_i(i1, i2) cl_assert_compare_i (i1, i2, CLAR_COMPARISON_LE, #i1 " <= " #i2, "%"PRIdMAX " > %"PRIdMAX)
#define cl_assert_gt_i_(i1, i2, ...) cl_assert_compare_i_(i1, i2, CLAR_COMPARISON_GT, #i1 " > " #i2, __VA_ARGS__)
#define cl_assert_gt_i(i1, i2) cl_assert_compare_i (i1, i2, CLAR_COMPARISON_GT, #i1 " > " #i2, "%"PRIdMAX " <= %"PRIdMAX)
#define cl_assert_ge_i_(i1, i2, ...) cl_assert_compare_i_(i1, i2, CLAR_COMPARISON_GE, #i1 " >= " #i2, __VA_ARGS__)
#define cl_assert_ge_i(i1, i2) cl_assert_compare_i (i1, i2, CLAR_COMPARISON_GE, #i1 " >= " #i2, "%"PRIdMAX " < %"PRIdMAX)

#define cl_assert_compare_u_(u1, u2, cmp, error, ...) clar__assert_compare_u(CLAR_CURRENT_FILE, CLAR_CURRENT_FUNC, CLAR_CURRENT_LINE, 1, cmp, \
(u1), (u2), "Expected comparison to hold: " error, __VA_ARGS__)
#define cl_assert_compare_u(u1, u2, cmp, error, fmt) do { \
uintmax_t v1 = (u1), v2 = (u2); \
clar__assert_compare_u(CLAR_CURRENT_FILE, CLAR_CURRENT_FUNC, CLAR_CURRENT_LINE, 1, cmp, \
v1, v2, "Expected comparison to hold: " error, fmt, v1, v2); \
} while (0)
#define cl_assert_equal_u_(u1, u2, ...) cl_assert_compare_u_(u1, u2, CLAR_COMPARISON_EQ, #u1 " == " #u2, __VA_ARGS__)
#define cl_assert_equal_u(u1, u2) cl_assert_compare_u (u1, u2, CLAR_COMPARISON_EQ, #u1 " == " #u2, "%"PRIuMAX " != %"PRIuMAX)
#define cl_assert_lt_u_(u1, u2, ...) cl_assert_compare_u_(u1, u2, CLAR_COMPARISON_LT, #u1 " < " #u2, __VA_ARGS__)
#define cl_assert_lt_u(u1, u2) cl_assert_compare_u (u1, u2, CLAR_COMPARISON_LT, #u1 " < " #u2, "%"PRIuMAX " >= %"PRIuMAX)
#define cl_assert_le_u_(u1, u2, ...) cl_assert_compare_u_(u1, u2, CLAR_COMPARISON_LE, #u1 " <= " #u2, __VA_ARGS__)
#define cl_assert_le_u(u1, u2) cl_assert_compare_u (u1, u2, CLAR_COMPARISON_LE, #u1 " <= " #u2, "%"PRIuMAX " > %"PRIuMAX)
#define cl_assert_gt_u_(u1, u2, ...) cl_assert_compare_u_(u1, u2, CLAR_COMPARISON_GT, #u1 " > " #u2, __VA_ARGS__)
#define cl_assert_gt_u(u1, u2) cl_assert_compare_u (u1, u2, CLAR_COMPARISON_GT, #u1 " > " #u2, "%"PRIuMAX " <= %"PRIuMAX)
#define cl_assert_ge_u_(u1, u2, ...) cl_assert_compare_u_(u1, u2, CLAR_COMPARISON_GE, #u1 " >= " #u2, __VA_ARGS__)
#define cl_assert_ge_u(u1, u2) cl_assert_compare_u (u1, u2, CLAR_COMPARISON_GE, #u1 " >= " #u2, "%"PRIuMAX " < %"PRIuMAX)

#define cl_assert_equal_b(b1,b2) clar__assert_equal(CLAR_CURRENT_FILE,CLAR_CURRENT_FUNC,CLAR_CURRENT_LINE,#b1 " != " #b2, 1, "%d", (int)((b1) != 0),(int)((b2) != 0))

Expand Down
31 changes: 23 additions & 8 deletions test/expected/quiet
Original file line number Diff line number Diff line change
Expand Up @@ -18,42 +18,57 @@ combined::strings_with_length [file:42]

5) Failure:
combined::int [file:42]
101 != value ("extra note on failing test")
Expected comparison to hold: 101 == value
101 != 100

6) Failure:
combined::int_note [file:42]
Expected comparison to hold: 101 == value
extra note on failing test

7) Failure:
combined::int_fmt [file:42]
022 != value
Expected comparison to hold: 022 == value
0022 != 0144

7) Failure:
8) Failure:
combined::bool [file:42]
0 != value
0 != 1

8) Failure:
9) Failure:
combined::multiline_description [file:42]
Function call failed: -1
description line 1
description line 2

9) Failure:
10) Failure:
combined::null_string [file:42]
String mismatch: "expected" != actual ("this one fails")
'expected' != NULL

10) Failure:
11) Failure:
combined::failf [file:42]
Test failed.
some reason: foo

11) Failure:
12) Failure:
combined::compare_i [file:42]
Expected comparison to hold: two < 1
2 >= 1

12) Failure:
13) Failure:
combined::compare_i_with_format [file:42]
Expected comparison to hold: two < 1
foo: bar

14) Failure:
combined::compare_u [file:42]
Expected comparison to hold: two < 1
2 >= 1

15) Failure:
combined::compare_u_with_format [file:42]
Expected comparison to hold: two < 1
foo: bar

33 changes: 24 additions & 9 deletions test/expected/summary_with_filename
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Loaded 1 suites:
Started (test status codes: OK='.' FAILURE='F' SKIPPED='S')
FFFFFFFFFFFF
FFFFFFFFFFFFFFF

1) Failure:
combined::1 [file:42]
Expand All @@ -22,43 +22,58 @@ combined::strings_with_length [file:42]

5) Failure:
combined::int [file:42]
101 != value ("extra note on failing test")
Expected comparison to hold: 101 == value
101 != 100

6) Failure:
combined::int_note [file:42]
Expected comparison to hold: 101 == value
extra note on failing test

7) Failure:
combined::int_fmt [file:42]
022 != value
Expected comparison to hold: 022 == value
0022 != 0144

7) Failure:
8) Failure:
combined::bool [file:42]
0 != value
0 != 1

8) Failure:
9) Failure:
combined::multiline_description [file:42]
Function call failed: -1
description line 1
description line 2

9) Failure:
10) Failure:
combined::null_string [file:42]
String mismatch: "expected" != actual ("this one fails")
'expected' != NULL

10) Failure:
11) Failure:
combined::failf [file:42]
Test failed.
some reason: foo

11) Failure:
12) Failure:
combined::compare_i [file:42]
Expected comparison to hold: two < 1
2 >= 1

12) Failure:
13) Failure:
combined::compare_i_with_format [file:42]
Expected comparison to hold: two < 1
foo: bar

14) Failure:
combined::compare_u [file:42]
Expected comparison to hold: two < 1
2 >= 1

15) Failure:
combined::compare_u_with_format [file:42]
Expected comparison to hold: two < 1
foo: bar

written summary file to different.xml
33 changes: 24 additions & 9 deletions test/expected/summary_without_filename
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Loaded 1 suites:
Started (test status codes: OK='.' FAILURE='F' SKIPPED='S')
FFFFFFFFFFFF
FFFFFFFFFFFFFFF

1) Failure:
combined::1 [file:42]
Expand All @@ -22,43 +22,58 @@ combined::strings_with_length [file:42]

5) Failure:
combined::int [file:42]
101 != value ("extra note on failing test")
Expected comparison to hold: 101 == value
101 != 100

6) Failure:
combined::int_note [file:42]
Expected comparison to hold: 101 == value
extra note on failing test

7) Failure:
combined::int_fmt [file:42]
022 != value
Expected comparison to hold: 022 == value
0022 != 0144

7) Failure:
8) Failure:
combined::bool [file:42]
0 != value
0 != 1

8) Failure:
9) Failure:
combined::multiline_description [file:42]
Function call failed: -1
description line 1
description line 2

9) Failure:
10) Failure:
combined::null_string [file:42]
String mismatch: "expected" != actual ("this one fails")
'expected' != NULL

10) Failure:
11) Failure:
combined::failf [file:42]
Test failed.
some reason: foo

11) Failure:
12) Failure:
combined::compare_i [file:42]
Expected comparison to hold: two < 1
2 >= 1

12) Failure:
13) Failure:
combined::compare_i_with_format [file:42]
Expected comparison to hold: two < 1
foo: bar

14) Failure:
combined::compare_u [file:42]
Expected comparison to hold: two < 1
2 >= 1

15) Failure:
combined::compare_u_with_format [file:42]
Expected comparison to hold: two < 1
foo: bar

written summary file to summary.xml
50 changes: 40 additions & 10 deletions test/expected/tap
Original file line number Diff line number Diff line change
Expand Up @@ -41,24 +41,34 @@ not ok 4 - combined::strings_with_length
not ok 5 - combined::int
---
reason: |
101 != value ("extra note on failing test")
Expected comparison to hold: 101 == value
101 != 100
at:
file: 'file'
line: 42
function: 'func'
...
not ok 6 - combined::int_fmt
not ok 6 - combined::int_note
---
reason: |
022 != value
Expected comparison to hold: 101 == value
extra note on failing test
at:
file: 'file'
line: 42
function: 'func'
...
not ok 7 - combined::int_fmt
---
reason: |
Expected comparison to hold: 022 == value
0022 != 0144
at:
file: 'file'
line: 42
function: 'func'
...
not ok 7 - combined::bool
not ok 8 - combined::bool
---
reason: |
0 != value
Expand All @@ -68,7 +78,7 @@ not ok 7 - combined::bool
line: 42
function: 'func'
...
not ok 8 - combined::multiline_description
not ok 9 - combined::multiline_description
---
reason: |
Function call failed: -1
Expand All @@ -79,7 +89,7 @@ not ok 8 - combined::multiline_description
line: 42
function: 'func'
...
not ok 9 - combined::null_string
not ok 10 - combined::null_string
---
reason: |
String mismatch: "expected" != actual ("this one fails")
Expand All @@ -89,7 +99,7 @@ not ok 9 - combined::null_string
line: 42
function: 'func'
...
not ok 10 - combined::failf
not ok 11 - combined::failf
---
reason: |
Test failed.
Expand All @@ -99,7 +109,7 @@ not ok 10 - combined::failf
line: 42
function: 'func'
...
not ok 11 - combined::compare_i
not ok 12 - combined::compare_i
---
reason: |
Expected comparison to hold: two < 1
Expand All @@ -109,7 +119,17 @@ not ok 11 - combined::compare_i
line: 42
function: 'func'
...
not ok 12 - combined::compare_u
not ok 13 - combined::compare_i_with_format
---
reason: |
Expected comparison to hold: two < 1
foo: bar
at:
file: 'file'
line: 42
function: 'func'
...
not ok 14 - combined::compare_u
---
reason: |
Expected comparison to hold: two < 1
Expand All @@ -119,4 +139,14 @@ not ok 12 - combined::compare_u
line: 42
function: 'func'
...
1..12
not ok 15 - combined::compare_u_with_format
---
reason: |
Expected comparison to hold: two < 1
foo: bar
at:
file: 'file'
line: 42
function: 'func'
...
1..15
Loading