Skip to content

Commit 1411ee5

Browse files
committed
C++: Extend tests to also test the new predicates and accept test changes.
1 parent a78080c commit 1411ee5

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ query predicate irGuardsCompare(int startLine, string msg) {
9696
)
9797
or
9898
exists(AbstractValue value |
99+
guard.comparesLt(left, k, true, value) and op = " < "
100+
or
101+
guard.comparesLt(left, k, false, value) and op = " >= "
102+
or
99103
guard.comparesEq(left, k, true, value) and op = " == "
100104
or
101105
guard.comparesEq(left, k, false, value) and op = " != "
@@ -138,6 +142,10 @@ query predicate irGuardsEnsure_const(
138142
IRGuardCondition guard, Instruction left, string op, int k, int start, int end
139143
) {
140144
exists(IRBlock block, Operand leftOp |
145+
guard.ensuresLt(leftOp, k, block, true) and op = "<"
146+
or
147+
guard.ensuresLt(leftOp, k, block, false) and op = ">="
148+
or
141149
guard.ensuresEq(leftOp, k, block, true) and op = "=="
142150
or
143151
guard.ensuresEq(leftOp, k, block, false) and op = "!="

cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,33 @@
11
| 7 | 0 < x+0 when ... > ... is true |
22
| 7 | 0 >= x+0 when ... > ... is false |
33
| 7 | x < 0+1 when ... > ... is false |
4+
| 7 | x < 1 when ... > ... is false |
45
| 7 | x >= 0+1 when ... > ... is true |
6+
| 7 | x >= 1 when ... > ... is true |
57
| 17 | 0 < x+1 when ... < ... is false |
68
| 17 | 0 >= x+1 when ... && ... is true |
79
| 17 | 0 >= x+1 when ... < ... is true |
810
| 17 | 1 < y+0 when ... && ... is true |
911
| 17 | 1 < y+0 when ... > ... is true |
1012
| 17 | 1 >= y+0 when ... > ... is false |
13+
| 17 | x < 0 when ... && ... is true |
14+
| 17 | x < 0 when ... < ... is true |
1115
| 17 | x < 0+0 when ... && ... is true |
1216
| 17 | x < 0+0 when ... < ... is true |
17+
| 17 | x >= 0 when ... < ... is false |
1318
| 17 | x >= 0+0 when ... < ... is false |
1419
| 17 | y < 1+1 when ... > ... is false |
20+
| 17 | y < 2 when ... > ... is false |
1521
| 17 | y >= 1+1 when ... && ... is true |
1622
| 17 | y >= 1+1 when ... > ... is true |
23+
| 17 | y >= 2 when ... && ... is true |
24+
| 17 | y >= 2 when ... > ... is true |
1725
| 26 | 0 < x+0 when ... > ... is true |
1826
| 26 | 0 >= x+0 when ... > ... is false |
1927
| 26 | x < 0+1 when ... > ... is false |
28+
| 26 | x < 1 when ... > ... is false |
2029
| 26 | x >= 0+1 when ... > ... is true |
30+
| 26 | x >= 1 when ... > ... is true |
2131
| 31 | - ... != x+0 when ... == ... is false |
2232
| 31 | - ... == x+0 when ... == ... is true |
2333
| 31 | x != -1 when ... == ... is false |
@@ -26,20 +36,28 @@
2636
| 31 | x == - ...+0 when ... == ... is true |
2737
| 34 | 10 < j+1 when ... < ... is false |
2838
| 34 | 10 >= j+1 when ... < ... is true |
39+
| 34 | j < 10 when ... < ... is true |
2940
| 34 | j < 10+0 when ... < ... is true |
41+
| 34 | j >= 10 when ... < ... is false |
3042
| 34 | j >= 10+0 when ... < ... is false |
3143
| 42 | 10 < j+1 when ... < ... is false |
3244
| 42 | 10 >= j+1 when ... < ... is true |
45+
| 42 | j < 10 when ... < ... is true |
3346
| 42 | j < 10+0 when ... < ... is true |
47+
| 42 | j >= 10 when ... < ... is false |
3448
| 42 | j >= 10+0 when ... < ... is false |
3549
| 44 | 0 < z+0 when ... > ... is true |
3650
| 44 | 0 >= z+0 when ... > ... is false |
3751
| 44 | z < 0+1 when ... > ... is false |
52+
| 44 | z < 1 when ... > ... is false |
3853
| 44 | z >= 0+1 when ... > ... is true |
54+
| 44 | z >= 1 when ... > ... is true |
3955
| 45 | 0 < y+0 when ... > ... is true |
4056
| 45 | 0 >= y+0 when ... > ... is false |
4157
| 45 | y < 0+1 when ... > ... is false |
58+
| 45 | y < 1 when ... > ... is false |
4259
| 45 | y >= 0+1 when ... > ... is true |
60+
| 45 | y >= 1 when ... > ... is true |
4361
| 58 | 0 != x+0 when ... == ... is false |
4462
| 58 | 0 != x+0 when ... \|\| ... is false |
4563
| 58 | 0 < y+1 when ... < ... is false |
@@ -52,12 +70,19 @@
5270
| 58 | x != 0+0 when ... \|\| ... is false |
5371
| 58 | x == 0 when ... == ... is true |
5472
| 58 | x == 0+0 when ... == ... is true |
73+
| 58 | y < 0 when ... < ... is true |
5574
| 58 | y < 0+0 when ... < ... is true |
75+
| 58 | y >= 0 when ... < ... is false |
76+
| 58 | y >= 0 when ... \|\| ... is false |
5677
| 58 | y >= 0+0 when ... < ... is false |
5778
| 58 | y >= 0+0 when ... \|\| ... is false |
5879
| 61 | i == 0 when i is Case[0] |
5980
| 61 | i == 1 when i is Case[1] |
6081
| 61 | i == 2 when i is Case[2] |
82+
| 74 | i < 11 when i is Case[0..10] |
83+
| 74 | i < 21 when i is Case[11..20] |
84+
| 74 | i >= 0 when i is Case[0..10] |
85+
| 74 | i >= 11 when i is Case[11..20] |
6186
| 75 | 0 != x+0 when ... == ... is false |
6287
| 75 | 0 == x+0 when ... == ... is true |
6388
| 75 | x != 0 when ... == ... is false |
@@ -90,7 +115,9 @@
90115
| 94 | x == 0+0 when ... != ... is false |
91116
| 102 | 10 < j+1 when ... < ... is false |
92117
| 102 | 10 >= j+1 when ... < ... is true |
118+
| 102 | j < 10 when ... < ... is true |
93119
| 102 | j < 10+0 when ... < ... is true |
120+
| 102 | j >= 10 when ... < ... is false |
94121
| 102 | j >= 10+0 when ... < ... is false |
95122
| 109 | 0 != x+0 when ... == ... is false |
96123
| 109 | 0 != x+0 when ... \|\| ... is false |
@@ -104,6 +131,9 @@
104131
| 109 | x != 0+0 when ... \|\| ... is false |
105132
| 109 | x == 0 when ... == ... is true |
106133
| 109 | x == 0+0 when ... == ... is true |
134+
| 109 | y < 0 when ... < ... is true |
107135
| 109 | y < 0+0 when ... < ... is true |
136+
| 109 | y >= 0 when ... < ... is false |
137+
| 109 | y >= 0 when ... \|\| ... is false |
108138
| 109 | y >= 0+0 when ... < ... is false |
109139
| 109 | y >= 0+0 when ... \|\| ... is false |

cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ where
2828
)
2929
or
3030
exists(AbstractValue value |
31+
guard.comparesLt(left, k, true, value) and op = " < "
32+
or
33+
guard.comparesLt(left, k, false, value) and op = " >= "
34+
or
3135
guard.comparesEq(left, k, true, value) and op = " == "
3236
or
3337
guard.comparesEq(left, k, false, value) and op = " != "

0 commit comments

Comments
 (0)