Skip to content

Commit 39f11fe

Browse files
authored
Merge pull request #131 from pks-gitlab/pks-integer-double-evaluation
Fix integer double evaluation
2 parents 17bbac5 + db09c85 commit 39f11fe

File tree

8 files changed

+206
-81
lines changed

8 files changed

+206
-81
lines changed

clar.h

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -170,34 +170,42 @@ const char *cl_fixture_basename(const char *fixture_name);
170170
#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))
171171
#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))
172172

173-
/* The following three macros are essentially deprecated now in favor of the macros in subsequent blocks. */
174-
#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))
175-
#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))
176-
#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))
177-
178-
#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__)
179-
#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__)
180-
#define cl_assert_eq_i(i1,i2) cl_assert_eq_i_(i1,i2,"%"PRIdMAX " != %"PRIdMAX,(intmax_t)(i1),(intmax_t)(i2))
181-
#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__)
182-
#define cl_assert_lt_i(i1,i2) cl_assert_lt_i_(i1,i2,"%"PRIdMAX " >= %"PRIdMAX,(intmax_t)(i1),(intmax_t)(i2))
183-
#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__)
184-
#define cl_assert_le_i(i1,i2) cl_assert_le_i_(i1,i2,"%"PRIdMAX " > %"PRIdMAX,(intmax_t)(i1),(intmax_t)(i2))
185-
#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__)
186-
#define cl_assert_gt_i(i1,i2) cl_assert_gt_i_(i1,i2,"%"PRIdMAX " <= %"PRIdMAX,(intmax_t)(i1),(intmax_t)(i2))
187-
#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__)
188-
#define cl_assert_ge_i(i1,i2) cl_assert_ge_i_(i1,i2,"%"PRIdMAX " < %"PRIdMAX,(intmax_t)(i1),(intmax_t)(i2))
189-
190-
#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__)
191-
#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__)
192-
#define cl_assert_eq_u(u1,u2) cl_assert_eq_u_(u1,u2,"%"PRIuMAX " != %"PRIuMAX,(uintmax_t)(u1),(uintmax_t)(u2))
193-
#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__)
194-
#define cl_assert_lt_u(u1,u2) cl_assert_lt_u_(u1,u2,"%"PRIuMAX " >= %"PRIuMAX,(uintmax_t)(u1),(uintmax_t)(u2))
195-
#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__)
196-
#define cl_assert_le_u(u1,u2) cl_assert_le_u_(u1,u2,"%"PRIuMAX " > %"PRIuMAX,(uintmax_t)(u1),(uintmax_t)(u2))
197-
#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__)
198-
#define cl_assert_gt_u(u1,u2) cl_assert_gt_u_(u1,u2,"%"PRIuMAX " <= %"PRIuMAX,(uintmax_t)(u1),(uintmax_t)(u2))
199-
#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__)
200-
#define cl_assert_ge_u(u1,u2) cl_assert_ge_u_(u1,u2,"%"PRIuMAX " < %"PRIuMAX,(uintmax_t)(u1),(uintmax_t)(u2))
173+
#define cl_assert_compare_i_(i1, i2, cmp, error, ...) clar__assert_compare_i(CLAR_CURRENT_FILE, CLAR_CURRENT_FUNC, CLAR_CURRENT_LINE, 1, cmp, \
174+
(i1), (i2), "Expected comparison to hold: " error, __VA_ARGS__)
175+
#define cl_assert_compare_i(i1, i2, cmp, error, fmt) do { \
176+
intmax_t v1 = (i1), v2 = (i2); \
177+
clar__assert_compare_i(CLAR_CURRENT_FILE, CLAR_CURRENT_FUNC, CLAR_CURRENT_LINE, 1, cmp, \
178+
v1, v2, "Expected comparison to hold: " error, fmt, v1, v2); \
179+
} while (0)
180+
#define cl_assert_equal_i_(i1, i2, ...) cl_assert_compare_i_(i1, i2, CLAR_COMPARISON_EQ, #i1 " == " #i2, __VA_ARGS__)
181+
#define cl_assert_equal_i(i1, i2) cl_assert_compare_i (i1, i2, CLAR_COMPARISON_EQ, #i1 " == " #i2, "%"PRIdMAX " != %"PRIdMAX)
182+
#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))
183+
#define cl_assert_lt_i_(i1, i2, ...) cl_assert_compare_i_(i1, i2, CLAR_COMPARISON_LT, #i1 " < " #i2, __VA_ARGS__)
184+
#define cl_assert_lt_i(i1, i2) cl_assert_compare_i (i1, i2, CLAR_COMPARISON_LT, #i1 " < " #i2, "%"PRIdMAX " >= %"PRIdMAX)
185+
#define cl_assert_le_i_(i1, i2, ...) cl_assert_compare_i_(i1, i2, CLAR_COMPARISON_LE, #i1 " <= " #i2, __VA_ARGS__)
186+
#define cl_assert_le_i(i1, i2) cl_assert_compare_i (i1, i2, CLAR_COMPARISON_LE, #i1 " <= " #i2, "%"PRIdMAX " > %"PRIdMAX)
187+
#define cl_assert_gt_i_(i1, i2, ...) cl_assert_compare_i_(i1, i2, CLAR_COMPARISON_GT, #i1 " > " #i2, __VA_ARGS__)
188+
#define cl_assert_gt_i(i1, i2) cl_assert_compare_i (i1, i2, CLAR_COMPARISON_GT, #i1 " > " #i2, "%"PRIdMAX " <= %"PRIdMAX)
189+
#define cl_assert_ge_i_(i1, i2, ...) cl_assert_compare_i_(i1, i2, CLAR_COMPARISON_GE, #i1 " >= " #i2, __VA_ARGS__)
190+
#define cl_assert_ge_i(i1, i2) cl_assert_compare_i (i1, i2, CLAR_COMPARISON_GE, #i1 " >= " #i2, "%"PRIdMAX " < %"PRIdMAX)
191+
192+
#define cl_assert_compare_u_(u1, u2, cmp, error, ...) clar__assert_compare_u(CLAR_CURRENT_FILE, CLAR_CURRENT_FUNC, CLAR_CURRENT_LINE, 1, cmp, \
193+
(u1), (u2), "Expected comparison to hold: " error, __VA_ARGS__)
194+
#define cl_assert_compare_u(u1, u2, cmp, error, fmt) do { \
195+
uintmax_t v1 = (u1), v2 = (u2); \
196+
clar__assert_compare_u(CLAR_CURRENT_FILE, CLAR_CURRENT_FUNC, CLAR_CURRENT_LINE, 1, cmp, \
197+
v1, v2, "Expected comparison to hold: " error, fmt, v1, v2); \
198+
} while (0)
199+
#define cl_assert_equal_u_(u1, u2, ...) cl_assert_compare_u_(u1, u2, CLAR_COMPARISON_EQ, #u1 " == " #u2, __VA_ARGS__)
200+
#define cl_assert_equal_u(u1, u2) cl_assert_compare_u (u1, u2, CLAR_COMPARISON_EQ, #u1 " == " #u2, "%"PRIuMAX " != %"PRIuMAX)
201+
#define cl_assert_lt_u_(u1, u2, ...) cl_assert_compare_u_(u1, u2, CLAR_COMPARISON_LT, #u1 " < " #u2, __VA_ARGS__)
202+
#define cl_assert_lt_u(u1, u2) cl_assert_compare_u (u1, u2, CLAR_COMPARISON_LT, #u1 " < " #u2, "%"PRIuMAX " >= %"PRIuMAX)
203+
#define cl_assert_le_u_(u1, u2, ...) cl_assert_compare_u_(u1, u2, CLAR_COMPARISON_LE, #u1 " <= " #u2, __VA_ARGS__)
204+
#define cl_assert_le_u(u1, u2) cl_assert_compare_u (u1, u2, CLAR_COMPARISON_LE, #u1 " <= " #u2, "%"PRIuMAX " > %"PRIuMAX)
205+
#define cl_assert_gt_u_(u1, u2, ...) cl_assert_compare_u_(u1, u2, CLAR_COMPARISON_GT, #u1 " > " #u2, __VA_ARGS__)
206+
#define cl_assert_gt_u(u1, u2) cl_assert_compare_u (u1, u2, CLAR_COMPARISON_GT, #u1 " > " #u2, "%"PRIuMAX " <= %"PRIuMAX)
207+
#define cl_assert_ge_u_(u1, u2, ...) cl_assert_compare_u_(u1, u2, CLAR_COMPARISON_GE, #u1 " >= " #u2, __VA_ARGS__)
208+
#define cl_assert_ge_u(u1, u2) cl_assert_compare_u (u1, u2, CLAR_COMPARISON_GE, #u1 " >= " #u2, "%"PRIuMAX " < %"PRIuMAX)
201209

202210
#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))
203211

test/expected/quiet

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,42 +18,57 @@ combined::strings_with_length [file:42]
1818

1919
5) Failure:
2020
combined::int [file:42]
21-
101 != value ("extra note on failing test")
21+
Expected comparison to hold: 101 == value
2222
101 != 100
2323

2424
6) Failure:
25+
combined::int_note [file:42]
26+
Expected comparison to hold: 101 == value
27+
extra note on failing test
28+
29+
7) Failure:
2530
combined::int_fmt [file:42]
26-
022 != value
31+
Expected comparison to hold: 022 == value
2732
0022 != 0144
2833

29-
7) Failure:
34+
8) Failure:
3035
combined::bool [file:42]
3136
0 != value
3237
0 != 1
3338

34-
8) Failure:
39+
9) Failure:
3540
combined::multiline_description [file:42]
3641
Function call failed: -1
3742
description line 1
3843
description line 2
3944

40-
9) Failure:
45+
10) Failure:
4146
combined::null_string [file:42]
4247
String mismatch: "expected" != actual ("this one fails")
4348
'expected' != NULL
4449

45-
10) Failure:
50+
11) Failure:
4651
combined::failf [file:42]
4752
Test failed.
4853
some reason: foo
4954

50-
11) Failure:
55+
12) Failure:
5156
combined::compare_i [file:42]
5257
Expected comparison to hold: two < 1
5358
2 >= 1
5459

55-
12) Failure:
60+
13) Failure:
61+
combined::compare_i_with_format [file:42]
62+
Expected comparison to hold: two < 1
63+
foo: bar
64+
65+
14) Failure:
5666
combined::compare_u [file:42]
5767
Expected comparison to hold: two < 1
5868
2 >= 1
5969

70+
15) Failure:
71+
combined::compare_u_with_format [file:42]
72+
Expected comparison to hold: two < 1
73+
foo: bar
74+

test/expected/summary_with_filename

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Loaded 1 suites:
22
Started (test status codes: OK='.' FAILURE='F' SKIPPED='S')
3-
FFFFFFFFFFFF
3+
FFFFFFFFFFFFFFF
44

55
1) Failure:
66
combined::1 [file:42]
@@ -22,43 +22,58 @@ combined::strings_with_length [file:42]
2222

2323
5) Failure:
2424
combined::int [file:42]
25-
101 != value ("extra note on failing test")
25+
Expected comparison to hold: 101 == value
2626
101 != 100
2727

2828
6) Failure:
29+
combined::int_note [file:42]
30+
Expected comparison to hold: 101 == value
31+
extra note on failing test
32+
33+
7) Failure:
2934
combined::int_fmt [file:42]
30-
022 != value
35+
Expected comparison to hold: 022 == value
3136
0022 != 0144
3237

33-
7) Failure:
38+
8) Failure:
3439
combined::bool [file:42]
3540
0 != value
3641
0 != 1
3742

38-
8) Failure:
43+
9) Failure:
3944
combined::multiline_description [file:42]
4045
Function call failed: -1
4146
description line 1
4247
description line 2
4348

44-
9) Failure:
49+
10) Failure:
4550
combined::null_string [file:42]
4651
String mismatch: "expected" != actual ("this one fails")
4752
'expected' != NULL
4853

49-
10) Failure:
54+
11) Failure:
5055
combined::failf [file:42]
5156
Test failed.
5257
some reason: foo
5358

54-
11) Failure:
59+
12) Failure:
5560
combined::compare_i [file:42]
5661
Expected comparison to hold: two < 1
5762
2 >= 1
5863

59-
12) Failure:
64+
13) Failure:
65+
combined::compare_i_with_format [file:42]
66+
Expected comparison to hold: two < 1
67+
foo: bar
68+
69+
14) Failure:
6070
combined::compare_u [file:42]
6171
Expected comparison to hold: two < 1
6272
2 >= 1
6373

74+
15) Failure:
75+
combined::compare_u_with_format [file:42]
76+
Expected comparison to hold: two < 1
77+
foo: bar
78+
6479
written summary file to different.xml

test/expected/summary_without_filename

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Loaded 1 suites:
22
Started (test status codes: OK='.' FAILURE='F' SKIPPED='S')
3-
FFFFFFFFFFFF
3+
FFFFFFFFFFFFFFF
44

55
1) Failure:
66
combined::1 [file:42]
@@ -22,43 +22,58 @@ combined::strings_with_length [file:42]
2222

2323
5) Failure:
2424
combined::int [file:42]
25-
101 != value ("extra note on failing test")
25+
Expected comparison to hold: 101 == value
2626
101 != 100
2727

2828
6) Failure:
29+
combined::int_note [file:42]
30+
Expected comparison to hold: 101 == value
31+
extra note on failing test
32+
33+
7) Failure:
2934
combined::int_fmt [file:42]
30-
022 != value
35+
Expected comparison to hold: 022 == value
3136
0022 != 0144
3237

33-
7) Failure:
38+
8) Failure:
3439
combined::bool [file:42]
3540
0 != value
3641
0 != 1
3742

38-
8) Failure:
43+
9) Failure:
3944
combined::multiline_description [file:42]
4045
Function call failed: -1
4146
description line 1
4247
description line 2
4348

44-
9) Failure:
49+
10) Failure:
4550
combined::null_string [file:42]
4651
String mismatch: "expected" != actual ("this one fails")
4752
'expected' != NULL
4853

49-
10) Failure:
54+
11) Failure:
5055
combined::failf [file:42]
5156
Test failed.
5257
some reason: foo
5358

54-
11) Failure:
59+
12) Failure:
5560
combined::compare_i [file:42]
5661
Expected comparison to hold: two < 1
5762
2 >= 1
5863

59-
12) Failure:
64+
13) Failure:
65+
combined::compare_i_with_format [file:42]
66+
Expected comparison to hold: two < 1
67+
foo: bar
68+
69+
14) Failure:
6070
combined::compare_u [file:42]
6171
Expected comparison to hold: two < 1
6272
2 >= 1
6373

74+
15) Failure:
75+
combined::compare_u_with_format [file:42]
76+
Expected comparison to hold: two < 1
77+
foo: bar
78+
6479
written summary file to summary.xml

test/expected/tap

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,34 @@ not ok 4 - combined::strings_with_length
4141
not ok 5 - combined::int
4242
---
4343
reason: |
44-
101 != value ("extra note on failing test")
44+
Expected comparison to hold: 101 == value
4545
101 != 100
4646
at:
4747
file: 'file'
4848
line: 42
4949
function: 'func'
5050
...
51-
not ok 6 - combined::int_fmt
51+
not ok 6 - combined::int_note
5252
---
5353
reason: |
54-
022 != value
54+
Expected comparison to hold: 101 == value
55+
extra note on failing test
56+
at:
57+
file: 'file'
58+
line: 42
59+
function: 'func'
60+
...
61+
not ok 7 - combined::int_fmt
62+
---
63+
reason: |
64+
Expected comparison to hold: 022 == value
5565
0022 != 0144
5666
at:
5767
file: 'file'
5868
line: 42
5969
function: 'func'
6070
...
61-
not ok 7 - combined::bool
71+
not ok 8 - combined::bool
6272
---
6373
reason: |
6474
0 != value
@@ -68,7 +78,7 @@ not ok 7 - combined::bool
6878
line: 42
6979
function: 'func'
7080
...
71-
not ok 8 - combined::multiline_description
81+
not ok 9 - combined::multiline_description
7282
---
7383
reason: |
7484
Function call failed: -1
@@ -79,7 +89,7 @@ not ok 8 - combined::multiline_description
7989
line: 42
8090
function: 'func'
8191
...
82-
not ok 9 - combined::null_string
92+
not ok 10 - combined::null_string
8393
---
8494
reason: |
8595
String mismatch: "expected" != actual ("this one fails")
@@ -89,7 +99,7 @@ not ok 9 - combined::null_string
8999
line: 42
90100
function: 'func'
91101
...
92-
not ok 10 - combined::failf
102+
not ok 11 - combined::failf
93103
---
94104
reason: |
95105
Test failed.
@@ -99,7 +109,7 @@ not ok 10 - combined::failf
99109
line: 42
100110
function: 'func'
101111
...
102-
not ok 11 - combined::compare_i
112+
not ok 12 - combined::compare_i
103113
---
104114
reason: |
105115
Expected comparison to hold: two < 1
@@ -109,7 +119,17 @@ not ok 11 - combined::compare_i
109119
line: 42
110120
function: 'func'
111121
...
112-
not ok 12 - combined::compare_u
122+
not ok 13 - combined::compare_i_with_format
123+
---
124+
reason: |
125+
Expected comparison to hold: two < 1
126+
foo: bar
127+
at:
128+
file: 'file'
129+
line: 42
130+
function: 'func'
131+
...
132+
not ok 14 - combined::compare_u
113133
---
114134
reason: |
115135
Expected comparison to hold: two < 1
@@ -119,4 +139,14 @@ not ok 12 - combined::compare_u
119139
line: 42
120140
function: 'func'
121141
...
122-
1..12
142+
not ok 15 - combined::compare_u_with_format
143+
---
144+
reason: |
145+
Expected comparison to hold: two < 1
146+
foo: bar
147+
at:
148+
file: 'file'
149+
line: 42
150+
function: 'func'
151+
...
152+
1..15

0 commit comments

Comments
 (0)