Skip to content

Commit 77929e1

Browse files
committed
Centralize the trivia handling logic to ClassicModelAssertUsageCodeFix; add more tests
1 parent 97c8d51 commit 77929e1

File tree

53 files changed

+735
-92
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+735
-92
lines changed

src/nunit.analyzers.tests/ClassicModelAssertUsage/AreEqualClassicModelAssertUsageCodeFixTests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,5 +337,21 @@ public void CodeFixMaintainsReasonableTriviaWithNewLineClosingParen([Values] boo
337337

338338
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
339339
}
340+
341+
[Test]
342+
public void CodeFixMaintainsReasonableTriviaWithAllArgumentsOnSameLine([Values] bool newlineBeforeClosingParen)
343+
{
344+
var optionalNewline = newlineBeforeClosingParen ? @"
345+
" : string.Empty;
346+
var code = TestUtility.WrapInTestMethod($@"
347+
↓ClassicAssert.AreEqual(
348+
2d, 3d, 0.0000001d{optionalNewline});");
349+
350+
var fixedCode = TestUtility.WrapInTestMethod($@"
351+
Assert.That(
352+
3d, Is.EqualTo(2d).Within(0.0000001d){optionalNewline});");
353+
354+
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
355+
}
340356
}
341357
}

src/nunit.analyzers.tests/ClassicModelAssertUsage/AreNotEqualClassicModelAssertUsageCodeFixTests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,5 +145,21 @@ public void CodeFixMaintainsReasonableTriviaWithNewLineClosingParen([Values] boo
145145

146146
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
147147
}
148+
149+
[Test]
150+
public void CodeFixMaintainsReasonableTriviaWithAllArgumentsOnSameLine([Values] bool newlineBeforeClosingParen)
151+
{
152+
var optionalNewline = newlineBeforeClosingParen ? @"
153+
" : string.Empty;
154+
var code = TestUtility.WrapInTestMethod($@"
155+
↓ClassicAssert.AreNotEqual(
156+
2d, 3d{optionalNewline});");
157+
158+
var fixedCode = TestUtility.WrapInTestMethod($@"
159+
Assert.That(
160+
3d, Is.Not.EqualTo(2d){optionalNewline});");
161+
162+
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
163+
}
148164
}
149165
}

src/nunit.analyzers.tests/ClassicModelAssertUsage/AreNotSameClassicModelAssertUsageCodeFixTests.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,5 +195,33 @@ public void TestMethod()
195195
}}");
196196
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
197197
}
198+
199+
[Test]
200+
public void CodeFixMaintainsReasonableTriviaWithAllArgumentsOnSameLine([Values] bool newlineBeforeClosingParen)
201+
{
202+
var optionalNewline = newlineBeforeClosingParen ? @"
203+
" : string.Empty;
204+
var code = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
205+
public void TestMethod()
206+
{{
207+
var expected = new object();
208+
var actual = new object();
209+
210+
↓ClassicAssert.AreNotSame(
211+
expected, actual{optionalNewline});
212+
}}");
213+
214+
var fixedCode = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
215+
public void TestMethod()
216+
{{
217+
var expected = new object();
218+
var actual = new object();
219+
220+
Assert.That(
221+
actual, Is.Not.SameAs(expected){optionalNewline});
222+
}}");
223+
224+
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
225+
}
198226
}
199227
}

src/nunit.analyzers.tests/ClassicModelAssertUsage/AreSameClassicModelAssertUsageCodeFixTests.cs

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,7 @@ public void TestMethod()
179179
180180
↓ClassicAssert.AreSame(
181181
expected,
182-
actual,
183-
""message""
182+
actual{commaAndMessage}
184183
);
185184
}}");
186185
var fixedCode = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
@@ -191,11 +190,39 @@ public void TestMethod()
191190
192191
Assert.That(
193192
actual,
194-
Is.SameAs(expected),
195-
""message""
193+
Is.SameAs(expected){commaAndMessage}
196194
);
197195
}}");
198196
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
199197
}
198+
199+
[Test]
200+
public void CodeFixMaintainsReasonableTriviaWithAllArgumentsOnSameLine([Values] bool newlineBeforeClosingParen)
201+
{
202+
var optionalNewline = newlineBeforeClosingParen ? @"
203+
" : string.Empty;
204+
var code = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
205+
public void TestMethod()
206+
{{
207+
var expected = new object();
208+
var actual = new object();
209+
210+
↓ClassicAssert.AreSame(
211+
expected,
212+
actual{optionalNewline});
213+
}}");
214+
var fixedCode = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
215+
public void TestMethod()
216+
{{
217+
var expected = new object();
218+
var actual = new object();
219+
220+
Assert.That(
221+
actual,
222+
Is.SameAs(expected){optionalNewline});
223+
}}");
224+
225+
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
226+
}
200227
}
201228
}

src/nunit.analyzers.tests/ClassicModelAssertUsage/ContainsClassicModelAssertUsageCodeFixTests.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,5 +195,34 @@ public void TestMethod()
195195
}}");
196196
RoslynAssert.CodeFix(analyzer, fix, instanceDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
197197
}
198+
199+
[Test]
200+
public void CodeFixMaintainsReasonableTriviaWithAllArgumentsOnSameLine([Values] bool newlineBeforeClosingParen)
201+
{
202+
var optionalNewline = newlineBeforeClosingParen ? @"
203+
" : string.Empty;
204+
var code = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
205+
public void TestMethod()
206+
{{
207+
var instance = new object();
208+
var collection = Array.Empty<object>();
209+
210+
↓ClassicAssert.Contains(
211+
instance,
212+
collection{optionalNewline});
213+
}}");
214+
var fixedCode = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
215+
public void TestMethod()
216+
{{
217+
var instance = new object();
218+
var collection = Array.Empty<object>();
219+
220+
Assert.That(
221+
collection,
222+
Does.Contain(instance){optionalNewline});
223+
}}");
224+
225+
RoslynAssert.CodeFix(analyzer, fix, instanceDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
226+
}
198227
}
199228
}

src/nunit.analyzers.tests/ClassicModelAssertUsage/GreaterClassicModelAssertUsageCodeFixTests.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,5 +281,28 @@ public void TestMethod()
281281
}}");
282282
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
283283
}
284+
285+
[Test]
286+
public void CodeFixMaintainsReasonableTriviaWithAllArgumentsOnSameLine([Values] bool newlineBeforeClosingParen)
287+
{
288+
var optionalNewline = newlineBeforeClosingParen ? @"
289+
" : string.Empty;
290+
var code = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
291+
public void TestMethod()
292+
{{
293+
↓ClassicAssert.Greater(
294+
2d,
295+
3d{optionalNewline});
296+
}}");
297+
var fixedCode = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
298+
public void TestMethod()
299+
{{
300+
Assert.That(
301+
2d,
302+
Is.GreaterThan(3d){optionalNewline});
303+
}}");
304+
305+
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
306+
}
284307
}
285308
}

src/nunit.analyzers.tests/ClassicModelAssertUsage/GreaterOrEqualClassicModelAssertUsageCodeFixTests.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,5 +281,27 @@ public void TestMethod()
281281
}}");
282282
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
283283
}
284+
285+
[Test]
286+
public void CodeFixMaintainsReasonableTriviaWithAllArgumentsOnSameLine([Values] bool newlineBeforeClosingParen)
287+
{
288+
var optionalNewline = newlineBeforeClosingParen ? @"
289+
" : string.Empty;
290+
var code = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
291+
public void TestMethod()
292+
{{
293+
↓ClassicAssert.GreaterOrEqual(
294+
2d,
295+
3d{optionalNewline});
296+
}}");
297+
var fixedCode = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
298+
public void TestMethod()
299+
{{
300+
Assert.That(
301+
2d,
302+
Is.GreaterThanOrEqualTo(3d){optionalNewline});
303+
}}");
304+
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
305+
}
284306
}
285307
}

src/nunit.analyzers.tests/ClassicModelAssertUsage/IsEmptyClassicModelAssertUsageCodeFixTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,5 +215,29 @@ public void TestMethod()
215215
}}");
216216
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
217217
}
218+
219+
[Test]
220+
public void CodeFixMaintainsReasonableTriviaWithAllArgumentsOnSameLine([Values] bool newlineBeforeClosingParen)
221+
{
222+
var optionalNewline = newlineBeforeClosingParen ? @"
223+
" : string.Empty;
224+
var code = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
225+
public void TestMethod()
226+
{{
227+
var collection = Array.Empty<object>();
228+
229+
↓ClassicAssert.IsEmpty(
230+
collection, ""message""{optionalNewline});
231+
}}");
232+
var fixedCode = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
233+
public void TestMethod()
234+
{{
235+
var collection = Array.Empty<object>();
236+
237+
Assert.That(
238+
collection, Is.Empty, ""message""{optionalNewline});
239+
}}");
240+
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
241+
}
218242
}
219243
}

src/nunit.analyzers.tests/ClassicModelAssertUsage/IsFalseAndFalseClassicModelAssertUsageCodeFixTests.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,5 +226,30 @@ public void TestMethod()
226226
}}");
227227
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
228228
}
229+
230+
[Test]
231+
public void CodeFixMaintainsReasonableTriviaWithAllArgumentsOnSameLine(
232+
[ValueSource(nameof(diagnosticIds))] string diagnosticId,
233+
[Values] bool newlineBeforeClosingParen)
234+
{
235+
var optionalNewline = newlineBeforeClosingParen ? @"
236+
" : string.Empty;
237+
var assertion = diagnosticIdsToAssertions[diagnosticId];
238+
var expectedDiagnostic = ExpectedDiagnostic.Create(diagnosticId);
239+
240+
var code = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
241+
public void TestMethod()
242+
{{
243+
↓ClassicAssert.{assertion}(
244+
false, ""message""{optionalNewline});
245+
}}");
246+
var fixedCode = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
247+
public void TestMethod()
248+
{{
249+
Assert.That(
250+
false, Is.False, ""message""{optionalNewline});
251+
}}");
252+
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
253+
}
229254
}
230255
}

src/nunit.analyzers.tests/ClassicModelAssertUsage/IsInstanceOfClassicModelAssertUsageCodeFixTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,5 +415,29 @@ public void TestMethod()
415415
}}");
416416
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
417417
}
418+
419+
[Test]
420+
public void CodeFixMaintainsReasonableTriviaWithAllArgumentsOnSameLine([Values] bool newlineBeforeClosingParen)
421+
{
422+
var optionalNewline = newlineBeforeClosingParen ? @"
423+
" : string.Empty;
424+
var code = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
425+
public void TestMethod()
426+
{{
427+
var actual = 42;
428+
429+
↓ClassicAssert.IsInstanceOf<int>(
430+
actual, ""message""{optionalNewline});
431+
}}");
432+
var fixedCode = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
433+
public void TestMethod()
434+
{{
435+
var actual = 42;
436+
437+
Assert.That(
438+
actual, Is.InstanceOf<int>(), ""message""{optionalNewline});
439+
}}");
440+
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
441+
}
418442
}
419443
}

src/nunit.analyzers.tests/ClassicModelAssertUsage/IsNaNClassicModelAssertUsageCodeFixTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,5 +179,29 @@ public void TestMethod()
179179
}}");
180180
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
181181
}
182+
183+
[Test]
184+
public void CodeFixMaintainsReasonableTriviaWithAllArgumentsOnSameLine([Values] bool newlineBeforeClosingParen)
185+
{
186+
var optionalNewline = newlineBeforeClosingParen ? @"
187+
" : string.Empty;
188+
var code = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
189+
public void TestMethod()
190+
{{
191+
var expr = double.NaN;
192+
193+
↓ClassicAssert.IsNaN(
194+
expr, ""message""{optionalNewline});
195+
}}");
196+
var fixedCode = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
197+
public void TestMethod()
198+
{{
199+
var expr = double.NaN;
200+
201+
Assert.That(
202+
expr, Is.NaN, ""message""{optionalNewline});
203+
}}");
204+
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
205+
}
182206
}
183207
}

src/nunit.analyzers.tests/ClassicModelAssertUsage/IsNotEmptyClassicModelAssertUsageCodeFixTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,5 +251,29 @@ public void TestMethod()
251251
}}");
252252
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
253253
}
254+
255+
[Test]
256+
public void CodeFixMaintainsReasonableTriviaWithAllArgumentsOnSameLine([Values] bool newlineBeforeClosingParen)
257+
{
258+
var optionalNewline = newlineBeforeClosingParen ? @"
259+
" : string.Empty;
260+
var code = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
261+
public void TestMethod()
262+
{{
263+
var collection = Array.Empty<object>();
264+
265+
↓ClassicAssert.IsNotEmpty(
266+
collection, ""message""{optionalNewline});
267+
}}");
268+
var fixedCode = TestUtility.WrapMethodInClassNamespaceAndAddUsings($@"
269+
public void TestMethod()
270+
{{
271+
var collection = Array.Empty<object>();
272+
273+
Assert.That(
274+
collection, Is.Not.Empty, ""message""{optionalNewline});
275+
}}");
276+
RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, code, fixedCode, fixTitle: ClassicModelAssertUsageCodeFix.TransformToConstraintModelDescription);
277+
}
254278
}
255279
}

0 commit comments

Comments
 (0)