Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0fb7ddc

Browse files
committed
C#: Add assertion guard tests
1 parent 1a5d462 commit 0fb7ddc

3 files changed

Lines changed: 145 additions & 0 deletions

File tree

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
using System;
2+
using System.Diagnostics;
3+
using Microsoft.VisualStudio.TestTools.UnitTesting;
4+
5+
class AssertTests
6+
{
7+
void M1(bool b)
8+
{
9+
string s = b ? null : "";
10+
Debug.Assert(s != null);
11+
Console.WriteLine(s.Length);
12+
}
13+
14+
void M2(bool b)
15+
{
16+
string s = b ? null : "";
17+
Assert.IsNull(s);
18+
Console.WriteLine(s.Length);
19+
}
20+
21+
void M3(bool b)
22+
{
23+
string s = b ? null : "";
24+
Assert.IsNotNull(s);
25+
Console.WriteLine(s.Length);
26+
}
27+
28+
void M4(bool b)
29+
{
30+
string s = b ? null : "";
31+
Assert.IsTrue(s == null);
32+
Console.WriteLine(s.Length);
33+
}
34+
35+
void M5(bool b)
36+
{
37+
string s = b ? null : "";
38+
Assert.IsTrue(s != null);
39+
Console.WriteLine(s.Length);
40+
}
41+
42+
void M6(bool b)
43+
{
44+
string s = b ? null : "";
45+
Assert.IsFalse(s != null);
46+
Console.WriteLine(s.Length);
47+
}
48+
49+
void M7(bool b)
50+
{
51+
string s = b ? null : "";
52+
Assert.IsFalse(s == null);
53+
Console.WriteLine(s.Length);
54+
}
55+
56+
void M8(bool b)
57+
{
58+
string s = b ? null : "";
59+
Assert.IsTrue(s != null && b);
60+
Console.WriteLine(s.Length);
61+
}
62+
63+
void M9(bool b)
64+
{
65+
string s = b ? null : "";
66+
Assert.IsFalse(s == null || b);
67+
Console.WriteLine(s.Length);
68+
}
69+
70+
void M10(bool b)
71+
{
72+
string s = b ? null : "";
73+
Assert.IsTrue(s == null && b);
74+
Console.WriteLine(s.Length);
75+
}
76+
77+
void M11(bool b)
78+
{
79+
string s = b ? null : "";
80+
Assert.IsFalse(s != null || b);
81+
Console.WriteLine(s.Length);
82+
}
83+
}
84+
85+
// semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs

csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:20 | access to parameter b | non-null |
2+
| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:20 | access to parameter b | non-null |
3+
| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:20 | access to parameter b | null |
4+
| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:20 | access to parameter b | null |
15
| Guards.cs:12:13:12:13 | access to parameter s | Guards.cs:10:13:10:25 | !... | Guards.cs:10:16:10:16 | access to parameter s | false |
26
| Guards.cs:12:13:12:13 | access to parameter s | Guards.cs:10:14:10:25 | !... | Guards.cs:10:16:10:16 | access to parameter s | true |
37
| Guards.cs:12:13:12:13 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | non-null |

csharp/ql/test/library-tests/controlflow/guards/Implications.expected

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,38 @@
11
impliesStep
2+
| Assert.cs:10:22:10:30 | ... != ... | false | Assert.cs:10:22:10:22 | access to local variable s | null |
3+
| Assert.cs:10:22:10:30 | ... != ... | true | Assert.cs:10:22:10:22 | access to local variable s | non-null |
4+
| Assert.cs:31:23:31:31 | ... == ... | false | Assert.cs:31:23:31:23 | access to local variable s | non-null |
5+
| Assert.cs:31:23:31:31 | ... == ... | true | Assert.cs:31:23:31:23 | access to local variable s | null |
6+
| Assert.cs:38:23:38:31 | ... != ... | false | Assert.cs:38:23:38:23 | access to local variable s | null |
7+
| Assert.cs:38:23:38:31 | ... != ... | true | Assert.cs:38:23:38:23 | access to local variable s | non-null |
8+
| Assert.cs:45:24:45:32 | ... != ... | false | Assert.cs:45:24:45:24 | access to local variable s | null |
9+
| Assert.cs:45:24:45:32 | ... != ... | true | Assert.cs:45:24:45:24 | access to local variable s | non-null |
10+
| Assert.cs:52:24:52:32 | ... == ... | false | Assert.cs:52:24:52:24 | access to local variable s | non-null |
11+
| Assert.cs:52:24:52:32 | ... == ... | true | Assert.cs:52:24:52:24 | access to local variable s | null |
12+
| Assert.cs:59:23:59:31 | ... != ... | false | Assert.cs:59:23:59:23 | access to local variable s | null |
13+
| Assert.cs:59:23:59:31 | ... != ... | false | Assert.cs:59:23:59:36 | ... && ... | false |
14+
| Assert.cs:59:23:59:31 | ... != ... | true | Assert.cs:59:23:59:23 | access to local variable s | non-null |
15+
| Assert.cs:59:23:59:36 | ... && ... | true | Assert.cs:59:23:59:31 | ... != ... | true |
16+
| Assert.cs:59:23:59:36 | ... && ... | true | Assert.cs:59:36:59:36 | access to parameter b | true |
17+
| Assert.cs:59:36:59:36 | access to parameter b | false | Assert.cs:59:23:59:36 | ... && ... | false |
18+
| Assert.cs:66:24:66:32 | ... == ... | false | Assert.cs:66:24:66:24 | access to local variable s | non-null |
19+
| Assert.cs:66:24:66:32 | ... == ... | true | Assert.cs:66:24:66:24 | access to local variable s | null |
20+
| Assert.cs:66:24:66:32 | ... == ... | true | Assert.cs:66:24:66:37 | ... \|\| ... | true |
21+
| Assert.cs:66:24:66:37 | ... \|\| ... | false | Assert.cs:66:24:66:32 | ... == ... | false |
22+
| Assert.cs:66:24:66:37 | ... \|\| ... | false | Assert.cs:66:37:66:37 | access to parameter b | false |
23+
| Assert.cs:66:37:66:37 | access to parameter b | true | Assert.cs:66:24:66:37 | ... \|\| ... | true |
24+
| Assert.cs:73:23:73:31 | ... == ... | false | Assert.cs:73:23:73:23 | access to local variable s | non-null |
25+
| Assert.cs:73:23:73:31 | ... == ... | false | Assert.cs:73:23:73:36 | ... && ... | false |
26+
| Assert.cs:73:23:73:31 | ... == ... | true | Assert.cs:73:23:73:23 | access to local variable s | null |
27+
| Assert.cs:73:23:73:36 | ... && ... | true | Assert.cs:73:23:73:31 | ... == ... | true |
28+
| Assert.cs:73:23:73:36 | ... && ... | true | Assert.cs:73:36:73:36 | access to parameter b | true |
29+
| Assert.cs:73:36:73:36 | access to parameter b | false | Assert.cs:73:23:73:36 | ... && ... | false |
30+
| Assert.cs:80:24:80:32 | ... != ... | false | Assert.cs:80:24:80:24 | access to local variable s | null |
31+
| Assert.cs:80:24:80:32 | ... != ... | true | Assert.cs:80:24:80:24 | access to local variable s | non-null |
32+
| Assert.cs:80:24:80:32 | ... != ... | true | Assert.cs:80:24:80:37 | ... \|\| ... | true |
33+
| Assert.cs:80:24:80:37 | ... \|\| ... | false | Assert.cs:80:24:80:32 | ... != ... | false |
34+
| Assert.cs:80:24:80:37 | ... \|\| ... | false | Assert.cs:80:37:80:37 | access to parameter b | false |
35+
| Assert.cs:80:37:80:37 | access to parameter b | true | Assert.cs:80:24:80:37 | ... \|\| ... | true |
236
| Guards.cs:10:13:10:25 | !... | false | Guards.cs:10:14:10:25 | !... | true |
337
| Guards.cs:10:13:10:25 | !... | true | Guards.cs:10:14:10:25 | !... | false |
438
| Guards.cs:10:14:10:25 | !... | false | Guards.cs:10:13:10:25 | !... | true |
@@ -115,6 +149,28 @@ impliesStep
115149
| Guards.cs:151:17:151:17 | access to parameter o | match case Action<String> a: | Guards.cs:151:17:151:17 | access to parameter o | non-null |
116150
| Guards.cs:151:17:151:17 | access to parameter o | non-match case ...: | Guards.cs:151:17:151:17 | access to parameter o | non-null |
117151
impliesStepIdentity
152+
| Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:9:20:9:32 | ... ? ... : ... |
153+
| Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:9:20:9:32 | ... ? ... : ... |
154+
| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:16:20:16:32 | ... ? ... : ... |
155+
| Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:16:20:16:32 | ... ? ... : ... |
156+
| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:23:20:23:32 | ... ? ... : ... |
157+
| Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:23:20:23:32 | ... ? ... : ... |
158+
| Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:30:20:30:32 | ... ? ... : ... |
159+
| Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:30:20:30:32 | ... ? ... : ... |
160+
| Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:37:20:37:32 | ... ? ... : ... |
161+
| Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:37:20:37:32 | ... ? ... : ... |
162+
| Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:44:20:44:32 | ... ? ... : ... |
163+
| Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:44:20:44:32 | ... ? ... : ... |
164+
| Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:51:20:51:32 | ... ? ... : ... |
165+
| Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:51:20:51:32 | ... ? ... : ... |
166+
| Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:58:20:58:32 | ... ? ... : ... |
167+
| Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:58:20:58:32 | ... ? ... : ... |
168+
| Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:65:20:65:32 | ... ? ... : ... |
169+
| Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:65:20:65:32 | ... ? ... : ... |
170+
| Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:72:20:72:32 | ... ? ... : ... |
171+
| Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:72:20:72:32 | ... ? ... : ... |
172+
| Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:79:20:79:32 | ... ? ... : ... |
173+
| Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:79:20:79:32 | ... ? ... : ... |
118174
| Guards.cs:72:31:72:31 | access to parameter s | Guards.cs:71:17:71:20 | null |
119175
| Guards.cs:145:20:145:20 | access to local variable s | Guards.cs:144:13:144:13 | access to parameter o |
120176
| Guards.cs:156:24:156:24 | access to local variable a | Guards.cs:151:17:151:17 | access to parameter o |

0 commit comments

Comments
 (0)