Skip to content

Commit 68c4d93

Browse files
authored
feat: add nunit Assert.That Is.AtMot & Is.AtLeast (#365)
1 parent d2f9954 commit 68c4d93

File tree

6 files changed

+82
-2
lines changed

6 files changed

+82
-2
lines changed

docs/Nunit3Analyzer.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,7 @@ var number = 2;
430430
// old assertion:
431431
Assert.GreaterOrEqual(number, 1);
432432
Assert.That(number, Is.GreaterThanOrEqualTo(1));
433+
Assert.That(number, Is.AtLeast(1));
433434

434435
// new assertion:
435436
number.Should().BeGreaterOrEqualTo(1);
@@ -447,6 +448,9 @@ Assert.GreaterOrEqual(number, 2); /* fail message: Expected: greater than or e
447448
Assert.That(number, Is.GreaterThanOrEqualTo(2)); /* fail message: Expected: greater than or equal to 2
448449
But was: 1
449450
*/
451+
Assert.That(number, Is.AtLeast(2)); /* fail message: Expected: greater than or equal to 2
452+
But was: 1
453+
*/
450454

451455
// new assertion:
452456
number.Should().BeGreaterOrEqualTo(2); /* fail message: Expected number to be greater than or equal to 2, but found 1. */
@@ -492,6 +496,7 @@ var number = 1;
492496
// old assertion:
493497
Assert.LessOrEqual(number, 2);
494498
Assert.That(number, Is.LessThanOrEqualTo(2));
499+
Assert.That(number, Is.AtMost(2));
495500

496501
// new assertion:
497502
number.Should().BeLessOrEqualTo(2);
@@ -509,6 +514,9 @@ Assert.LessOrEqual(number, 1); /* fail message: Expected: less than or equal t
509514
Assert.That(number, Is.LessThanOrEqualTo(1)); /* fail message: Expected: less than or equal to 1
510515
But was: 2
511516
*/
517+
Assert.That(number, Is.AtMost(1)); /* fail message: Expected: less than or equal to 1
518+
But was: 2
519+
*/
512520

513521
// new assertion:
514522
number.Should().BeLessOrEqualTo(1); /* fail message: Expected number to be less than or equal to 1, but found 2. */

docs/Nunit4Analyzer.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,7 @@ var number = 2;
463463
// old assertion:
464464
ClassicAssert.GreaterOrEqual(number, 1);
465465
Assert.That(number, Is.GreaterThanOrEqualTo(1));
466+
Assert.That(number, Is.AtLeast(1));
466467

467468
// new assertion:
468469
number.Should().BeGreaterOrEqualTo(1);
@@ -482,6 +483,10 @@ Assert.That(number, Is.GreaterThanOrEqualTo(2)); /* fail message: Assert.That(
482483
Expected: greater than or equal to 2
483484
But was: 1
484485
*/
486+
Assert.That(number, Is.AtLeast(2)); /* fail message: Assert.That(number, Is.AtLeast(2))
487+
Expected: greater than or equal to 2
488+
But was: 1
489+
*/
485490

486491
// new assertion:
487492
number.Should().BeGreaterOrEqualTo(2); /* fail message: Expected number to be greater than or equal to 2, but found 1. */
@@ -529,6 +534,7 @@ var number = 1;
529534
// old assertion:
530535
ClassicAssert.LessOrEqual(number, 2);
531536
Assert.That(number, Is.LessThanOrEqualTo(2));
537+
Assert.That(number, Is.AtMost(2));
532538

533539
// new assertion:
534540
number.Should().BeLessOrEqualTo(2);
@@ -548,6 +554,10 @@ Assert.That(number, Is.LessThanOrEqualTo(1)); /* fail message: Assert.That(num
548554
Expected: less than or equal to 1
549555
But was: 2
550556
*/
557+
Assert.That(number, Is.AtMost(1)); /* fail message: Assert.That(number, Is.AtMost(1))
558+
Expected: less than or equal to 1
559+
But was: 2
560+
*/
551561

552562
// new assertion:
553563
number.Should().BeLessOrEqualTo(1); /* fail message: Expected number to be less than or equal to 1, but found 2. */

src/FluentAssertions.Analyzers.FluentAssertionAnalyzerDocs.Nunit3/Nunit3AnalyzerTests.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,7 @@ public void AssertGreaterOrEqual()
627627
// old assertion:
628628
Assert.GreaterOrEqual(number, 1);
629629
Assert.That(number, Is.GreaterThanOrEqualTo(1));
630+
Assert.That(number, Is.AtLeast(1));
630631

631632
// new assertion:
632633
number.Should().BeGreaterOrEqualTo(1);
@@ -651,6 +652,16 @@ public void AssertGreaterOrEqual_Failure_OldAssertion_1()
651652
// old assertion:
652653
Assert.That(number, Is.GreaterThanOrEqualTo(2));
653654
}
655+
656+
[Test, ExpectedAssertionException]
657+
public void AssertGreaterOrEqual_Failure_OldAssertion_2()
658+
{
659+
// arrange
660+
var number = 1;
661+
662+
// old assertion:
663+
Assert.That(number, Is.AtLeast(2));
664+
}
654665

655666
[Test, ExpectedAssertionException]
656667
public void AssertGreaterOrEqual_Failure_NewAssertion()
@@ -715,6 +726,7 @@ public void AssertLessOrEqual()
715726
// old assertion:
716727
Assert.LessOrEqual(number, 2);
717728
Assert.That(number, Is.LessThanOrEqualTo(2));
729+
Assert.That(number, Is.AtMost(2));
718730

719731
// new assertion:
720732
number.Should().BeLessOrEqualTo(2);
@@ -740,6 +752,16 @@ public void AssertLessOrEqual_Failure_OldAssertion_1()
740752
Assert.That(number, Is.LessThanOrEqualTo(1));
741753
}
742754

755+
[Test, ExpectedAssertionException]
756+
public void AssertLessOrEqual_Failure_OldAssertion_2()
757+
{
758+
// arrange
759+
var number = 2;
760+
761+
// old assertion:
762+
Assert.That(number, Is.AtMost(1));
763+
}
764+
743765
[Test, ExpectedAssertionException]
744766
public void AssertLessOrEqual_Failure_NewAssertion()
745767
{

src/FluentAssertions.Analyzers.FluentAssertionAnalyzerDocs.Nunit4/Nunit4AnalyzerTests.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,7 @@ public void AssertGreaterOrEqual()
638638
// old assertion:
639639
ClassicAssert.GreaterOrEqual(number, 1);
640640
Assert.That(number, Is.GreaterThanOrEqualTo(1));
641+
Assert.That(number, Is.AtLeast(1));
641642

642643
// new assertion:
643644
number.Should().BeGreaterOrEqualTo(1);
@@ -662,6 +663,16 @@ public void AssertGreaterOrEqual_Failure_OldAssertion_1()
662663
// old assertion:
663664
Assert.That(number, Is.GreaterThanOrEqualTo(2));
664665
}
666+
667+
[Test, ExpectedAssertionException]
668+
public void AssertGreaterOrEqual_Failure_OldAssertion_2()
669+
{
670+
// arrange
671+
var number = 1;
672+
673+
// old assertion:
674+
Assert.That(number, Is.AtLeast(2));
675+
}
665676

666677
[Test, ExpectedAssertionException]
667678
public void AssertGreaterOrEqual_Failure_NewAssertion()
@@ -726,6 +737,7 @@ public void AssertLessOrEqual()
726737
// old assertion:
727738
ClassicAssert.LessOrEqual(number, 2);
728739
Assert.That(number, Is.LessThanOrEqualTo(2));
740+
Assert.That(number, Is.AtMost(2));
729741

730742
// new assertion:
731743
number.Should().BeLessOrEqualTo(2);
@@ -751,6 +763,16 @@ public void AssertLessOrEqual_Failure_OldAssertion_1()
751763
Assert.That(number, Is.LessThanOrEqualTo(1));
752764
}
753765

766+
[Test, ExpectedAssertionException]
767+
public void AssertLessOrEqual_Failure_OldAssertion_2()
768+
{
769+
// arrange
770+
var number = 2;
771+
772+
// old assertion:
773+
Assert.That(number, Is.AtMost(1));
774+
}
775+
754776
[Test, ExpectedAssertionException]
755777
public void AssertLessOrEqual_Failure_NewAssertion()
756778
{

src/FluentAssertions.Analyzers.Tests/Tips/NunitTests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,7 @@ public void Nunit4_AssertGreater_TestCodeFix(string oldAssertion, string newAsse
730730
[DataTestMethod]
731731
[AssertionDiagnostic("Assert.GreaterOrEqual(arg1, arg2{0});")]
732732
[AssertionDiagnostic("Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2){0});")]
733+
[AssertionDiagnostic("Assert.That(arg1, Is.AtLeast(arg2){0});")]
733734
[Implemented]
734735
public void Nunit3_AssertGreaterOrEqual_TestAnalyzer(string assertion)
735736
{
@@ -742,6 +743,7 @@ public void Nunit3_AssertGreaterOrEqual_TestAnalyzer(string assertion)
742743
[DataTestMethod]
743744
[AssertionDiagnostic("ClassicAssert.GreaterOrEqual(arg1, arg2{0});")]
744745
[AssertionDiagnostic("Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2));")]
746+
[AssertionDiagnostic("Assert.That(arg1, Is.AtLeast(arg2));")]
745747
[Implemented]
746748
public void Nunit4_AssertGreaterOrEqual_TestAnalyzer(string assertion)
747749
{
@@ -758,6 +760,9 @@ public void Nunit4_AssertGreaterOrEqual_TestAnalyzer(string assertion)
758760
[AssertionCodeFix(
759761
oldAssertion: "Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2){0});",
760762
newAssertion: "arg1.Should().BeGreaterOrEqualTo(arg2{0});")]
763+
[AssertionCodeFix(
764+
oldAssertion: "Assert.That(arg1, Is.AtLeast(arg2){0});",
765+
newAssertion: "arg1.Should().BeGreaterOrEqualTo(arg2{0});")]
761766
[Implemented]
762767
public void Nunit3_AssertGreaterOrEqual_TestCodeFix(string oldAssertion, string newAssertion)
763768
{
@@ -774,6 +779,9 @@ public void Nunit3_AssertGreaterOrEqual_TestCodeFix(string oldAssertion, string
774779
[AssertionCodeFix(
775780
oldAssertion: "Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2));",
776781
newAssertion: "arg1.Should().BeGreaterOrEqualTo(arg2);")]
782+
[AssertionCodeFix(
783+
oldAssertion: "Assert.That(arg1, Is.AtLeast(arg2));",
784+
newAssertion: "arg1.Should().BeGreaterOrEqualTo(arg2);")]
777785
[Implemented]
778786
public void Nunit4_AssertGreaterOrEqual_TestCodeFix(string oldAssertion, string newAssertion)
779787
{
@@ -842,6 +850,7 @@ public void Nunit4_AssertLess_TestCodeFix(string oldAssertion, string newAsserti
842850
[DataTestMethod]
843851
[AssertionDiagnostic("Assert.LessOrEqual(arg1, arg2{0});")]
844852
[AssertionDiagnostic("Assert.That(arg1, Is.LessThanOrEqualTo(arg2){0});")]
853+
[AssertionDiagnostic("Assert.That(arg1, Is.AtMost(arg2){0});")]
845854
[Implemented]
846855
public void Nunit3_AssertLessOrEqual_TestAnalyzer(string assertion)
847856
{
@@ -854,6 +863,7 @@ public void Nunit3_AssertLessOrEqual_TestAnalyzer(string assertion)
854863
[DataTestMethod]
855864
[AssertionDiagnostic("ClassicAssert.LessOrEqual(arg1, arg2{0});")]
856865
[AssertionDiagnostic("Assert.That(arg1, Is.LessThanOrEqualTo(arg2));")]
866+
[AssertionDiagnostic("Assert.That(arg1, Is.AtMost(arg2));")]
857867
[Implemented]
858868
public void Nunit4_AssertLessOrEqual_TestAnalyzer(string assertion)
859869
{
@@ -870,6 +880,9 @@ public void Nunit4_AssertLessOrEqual_TestAnalyzer(string assertion)
870880
[AssertionCodeFix(
871881
oldAssertion: "Assert.That(arg1, Is.LessThanOrEqualTo(arg2){0});",
872882
newAssertion: "arg1.Should().BeLessOrEqualTo(arg2{0});")]
883+
[AssertionCodeFix(
884+
oldAssertion: "Assert.That(arg1, Is.AtMost(arg2){0});",
885+
newAssertion: "arg1.Should().BeLessOrEqualTo(arg2{0});")]
873886
[Implemented]
874887
public void Nunit3_AssertLessOrEqual_TestCodeFix(string oldAssertion, string newAssertion)
875888
{
@@ -886,6 +899,9 @@ public void Nunit3_AssertLessOrEqual_TestCodeFix(string oldAssertion, string new
886899
[AssertionCodeFix(
887900
oldAssertion: "Assert.That(arg1, Is.LessThanOrEqualTo(arg2));",
888901
newAssertion: "arg1.Should().BeLessOrEqualTo(arg2);")]
902+
[AssertionCodeFix(
903+
oldAssertion: "Assert.That(arg1, Is.AtMost(arg2));",
904+
newAssertion: "arg1.Should().BeLessOrEqualTo(arg2);")]
889905
[Implemented]
890906
public void Nunit4_AssertLessOrEqual_TestCodeFix(string oldAssertion, string newAssertion)
891907
{

src/FluentAssertions.Analyzers/Tips/NunitCodeFixProvider.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -497,11 +497,13 @@ private CreateChangedDocument TryComputeFixForNunitThat(IInvocationOperation inv
497497
return rewriter.Should("NotBe", g => g.LiteralExpression(0));
498498
else if (matcher.Is(Method("GreaterThan"), out var argument))
499499
return rewriter.Should("BeGreaterThan", argument);
500-
else if (matcher.Is(Method("GreaterThanOrEqualTo"), out argument))
500+
else if (matcher.Is(Method("GreaterThanOrEqualTo"), out argument)
501+
|| matcher.Is(Method("AtLeast"), out argument))
501502
return rewriter.Should("BeGreaterOrEqualTo", argument);
502503
else if (matcher.Is(Method("LessThan"), out argument))
503504
return rewriter.Should("BeLessThan", argument);
504-
else if (matcher.Is(Method("LessThanOrEqualTo"), out argument))
505+
else if (matcher.Is(Method("LessThanOrEqualTo"), out argument)
506+
|| matcher.Is(Method("AtMost"), out argument))
505507
return rewriter.Should("BeLessOrEqualTo", argument);
506508
else if (matcher.Has(Method("Member"), out argument)
507509
|| matcher.Does(Method("Contain"), out argument)

0 commit comments

Comments
 (0)