Skip to content
This repository was archived by the owner on Jul 12, 2022. It is now read-only.

Commit 3b4d75c

Browse files
committed
Merge pull request #62 from YingP99/assertrule
Add new rule to convert Test Assert.True or False with redundant conditi...
2 parents 225a369 + 334304e commit 3b4d75c

File tree

5 files changed

+372
-1
lines changed

5 files changed

+372
-1
lines changed

src/Microsoft.DotNet.CodeFormatting.Tests/Microsoft.DotNet.CodeFormatting.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@
114114
<Compile Include="Rules\HasNewLineBeforeFirstUsingFormattingRuleTests.cs" />
115115
<Compile Include="Rules\PrivateFieldNamingRuleTests.cs" />
116116
<Compile Include="Rules\NonAsciiCharactersAreEscapedInLiteralsRuleTests.cs" />
117+
<Compile Include="Rules\TestAssertTrueOrFalseRuleTests.cs" />
117118
<Compile Include="Rules\UsesXunitForTestsFormattingRuleTests.cs" />
118119
</ItemGroup>
119120
<ItemGroup>
Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
// Copyright (c) Microsoft. All rights reserved.
2+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
3+
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Linq;
7+
using System.Text;
8+
using System.Threading.Tasks;
9+
using Microsoft.CodeAnalysis;
10+
using Xunit;
11+
12+
namespace Microsoft.DotNet.CodeFormatting.Tests
13+
{
14+
public class TestAssertTrueOrFalseRuleTests : SyntaxRuleTestBase
15+
{
16+
internal override ISyntaxFormattingRule Rule
17+
{
18+
get { return new Rules.TestAssertTrueOrFalseRule(); }
19+
}
20+
21+
[Fact]
22+
public void TestAssertEqualNotEqual()
23+
{
24+
var text = @"
25+
using System;
26+
using Xunit;
27+
28+
namespace System.UnitTests
29+
{
30+
public class Testing
31+
{
32+
[Fact]
33+
public void MyTest()
34+
{
35+
int x1 = 123, x2 = 456;
36+
Assert.True(x1 == x2);
37+
Assert.True(x2 != x1, ""Message"");
38+
39+
Assert.False(x2 == x1, ""Message"");
40+
Assert.False(x1 != x2);
41+
}
42+
}
43+
}
44+
";
45+
46+
var expected = @"
47+
using System;
48+
using Xunit;
49+
50+
namespace System.UnitTests
51+
{
52+
public class Testing
53+
{
54+
[Fact]
55+
public void MyTest()
56+
{
57+
int x1 = 123, x2 = 456;
58+
Assert.Equal(x1, x2);
59+
Assert.NotEqual(x2, x1);
60+
61+
Assert.NotEqual(x2, x1);
62+
Assert.Equal(x1, x2);
63+
}
64+
}
65+
}
66+
";
67+
Verify(text, expected);
68+
}
69+
70+
[Fact]
71+
public void TestAssertEqualNotEqualNull()
72+
{
73+
var text = @"
74+
using System;
75+
using Xunit;
76+
77+
public class Testing
78+
{
79+
[Fact]
80+
public void MyTest()
81+
{
82+
string s1 = ""A"", s2 = null;
83+
Assert.True(s1 == null);
84+
Assert.True(null != s2, ""Message"");
85+
86+
Assert.False(null == s1, ""Message"");
87+
Assert.False(s2 != null);
88+
}
89+
}
90+
";
91+
92+
var expected = @"
93+
using System;
94+
using Xunit;
95+
96+
public class Testing
97+
{
98+
[Fact]
99+
public void MyTest()
100+
{
101+
string s1 = ""A"", s2 = null;
102+
Assert.Null(s1);
103+
Assert.NotNull(s2);
104+
105+
Assert.NotNull(s1);
106+
Assert.Null(s2);
107+
}
108+
}
109+
";
110+
Verify(text, expected);
111+
}
112+
113+
[Fact]
114+
public void TestAssertEqualNotEqualTrueOrFalse()
115+
{
116+
var text = @"
117+
using System;
118+
using Xunit;
119+
120+
public class Testing
121+
{
122+
[Fact]
123+
public void MyTest()
124+
{
125+
bool b1 = true, b2 = false;
126+
Assert.True(b1 == true);
127+
Assert.True(true != b2);
128+
Assert.True(b2 == false);
129+
Assert.True(false != b1);
130+
131+
Assert.False(b1 == true);
132+
Assert.False(true != b2);
133+
Assert.False(b2 == false);
134+
Assert.False(false != b1);
135+
}
136+
}
137+
";
138+
139+
var expected = @"
140+
using System;
141+
using Xunit;
142+
143+
public class Testing
144+
{
145+
[Fact]
146+
public void MyTest()
147+
{
148+
bool b1 = true, b2 = false;
149+
Assert.True(b1);
150+
Assert.False(b2);
151+
Assert.False(b2);
152+
Assert.True(b1);
153+
154+
Assert.False(b1);
155+
Assert.True(b2);
156+
Assert.True(b2);
157+
Assert.False(b1);
158+
}
159+
}
160+
";
161+
Verify(text, expected);
162+
}
163+
164+
[Fact]
165+
public void TestAssertEqualNotEqualNegation()
166+
{
167+
var text = @"
168+
using System;
169+
using Xunit;
170+
171+
public class Testing
172+
{
173+
[Fact]
174+
public void MyTest()
175+
{
176+
bool b1 = true, b2 = false;
177+
Assert.True(!b1);
178+
Assert.False(!b2);
179+
}
180+
}
181+
";
182+
183+
var expected = @"
184+
using System;
185+
using Xunit;
186+
187+
public class Testing
188+
{
189+
[Fact]
190+
public void MyTest()
191+
{
192+
bool b1 = true, b2 = false;
193+
Assert.False(b1);
194+
Assert.True(b2);
195+
}
196+
}
197+
";
198+
Verify(text, expected);
199+
}
200+
}
201+
}

src/Microsoft.DotNet.CodeFormatting/Microsoft.DotNet.CodeFormatting.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
<Compile Include="Rules\NonAsciiCharactersAreEscapedInLiteralsRule.cs" />
100100
<Compile Include="Rules\ExplicitThisRule.cs" />
101101
<Compile Include="Rules\RuleOrder.cs" />
102+
<Compile Include="Rules\TestAssertTrueOrFalseRule.cs" />
102103
<Compile Include="Rules\UsesXunitForTestsFormattingRule.cs" />
103104
<Compile Include="RuleTypeConstants.cs" />
104105
</ItemGroup>
@@ -112,4 +113,4 @@
112113
</Target>
113114
<Target Name="AfterBuild">
114115
</Target>-->
115-
</Project>
116+
</Project>

src/Microsoft.DotNet.CodeFormatting/Rules/RuleOrder.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ internal static class SyntaxRuleOrder
1919
public const int HasNewLineBeforeFirstNamespaceFormattingRule = 5;
2020
public const int BraceNewLineRule = 6;
2121
public const int NonAsciiChractersAreEscapedInLiterals = 7;
22+
public const int TestAssertTrueOrFalseRule = 8;
2223
}
2324

2425
// Please keep these values sorted by number, not rule name.

0 commit comments

Comments
 (0)