From 5c8d057681310e7de574cf8045f4b0ad9d8bbe15 Mon Sep 17 00:00:00 2001 From: John Reese Date: Fri, 18 Aug 2017 19:07:46 -0400 Subject: [PATCH 1/2] Use Assert.Null when validating against null --- exercises/phone-number/PhoneNumberTest.cs | 14 +++++++------- generators/Exercise.cs | 9 +++++++++ generators/Exercises/PhoneNumber.cs | 2 -- generators/Output/Templates/_AssertNull.liquid | 1 + generators/Output/TestMethodBodyWithNullCheck.cs | 13 +++++++++++++ 5 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 generators/Output/Templates/_AssertNull.liquid create mode 100644 generators/Output/TestMethodBodyWithNullCheck.cs diff --git a/exercises/phone-number/PhoneNumberTest.cs b/exercises/phone-number/PhoneNumberTest.cs index 0a09e51e1b..de9e7634f3 100644 --- a/exercises/phone-number/PhoneNumberTest.cs +++ b/exercises/phone-number/PhoneNumberTest.cs @@ -29,14 +29,14 @@ public void Cleans_numbers_with_multiple_spaces() public void Invalid_when_9_digits() { var phrase = "123456789"; - Assert.Equal(null, PhoneNumber.Clean(phrase)); + Assert.Null(PhoneNumber.Clean(phrase)); } [Fact(Skip = "Remove to run test")] public void Invalid_when_11_digits_does_not_start_with_a_1() { var phrase = "22234567890"; - Assert.Equal(null, PhoneNumber.Clean(phrase)); + Assert.Null(PhoneNumber.Clean(phrase)); } [Fact(Skip = "Remove to run test")] @@ -57,34 +57,34 @@ public void Valid_when_11_digits_and_starting_with_1_even_with_punctuation() public void Invalid_when_more_than_11_digits() { var phrase = "321234567890"; - Assert.Equal(null, PhoneNumber.Clean(phrase)); + Assert.Null(PhoneNumber.Clean(phrase)); } [Fact(Skip = "Remove to run test")] public void Invalid_with_letters() { var phrase = "123-abc-7890"; - Assert.Equal(null, PhoneNumber.Clean(phrase)); + Assert.Null(PhoneNumber.Clean(phrase)); } [Fact(Skip = "Remove to run test")] public void Invalid_with_punctuations() { var phrase = "123-@:!-7890"; - Assert.Equal(null, PhoneNumber.Clean(phrase)); + Assert.Null(PhoneNumber.Clean(phrase)); } [Fact(Skip = "Remove to run test")] public void Invalid_if_area_code_does_not_start_with_2_9() { var phrase = "(123) 456-7890"; - Assert.Equal(null, PhoneNumber.Clean(phrase)); + Assert.Null(PhoneNumber.Clean(phrase)); } [Fact(Skip = "Remove to run test")] public void Invalid_if_exchange_code_does_not_start_with_2_9() { var phrase = "(223) 056-7890"; - Assert.Equal(null, PhoneNumber.Clean(phrase)); + Assert.Null(PhoneNumber.Clean(phrase)); } } \ No newline at end of file diff --git a/generators/Exercise.cs b/generators/Exercise.cs index 9c10e013ee..3db7f19b6c 100644 --- a/generators/Exercise.cs +++ b/generators/Exercise.cs @@ -69,10 +69,19 @@ protected virtual string RenderTestMethodBody(CanonicalDataCase canonicalDataCas protected virtual TestMethodBody CreateTestMethodBody(CanonicalDataCase canonicalDataCase) { if (canonicalDataCase.ExceptionThrown != null) + { return new TestMethodBodyWithExceptionCheck(canonicalDataCase, CanonicalData); + } if (canonicalDataCase.Expected is bool) + { return new TestMethodBodyWithBooleanCheck(canonicalDataCase, CanonicalData); + } + + if(canonicalDataCase.Expected is null) + { + return new TestMethodBodyWithNullCheck(canonicalDataCase, CanonicalData); + } return new TestMethodBodyWithEqualityCheck(canonicalDataCase, CanonicalData); } diff --git a/generators/Exercises/PhoneNumber.cs b/generators/Exercises/PhoneNumber.cs index feece6c61e..2d0605b72b 100644 --- a/generators/Exercises/PhoneNumber.cs +++ b/generators/Exercises/PhoneNumber.cs @@ -1,5 +1,4 @@ using Generators.Input; -using Generators.Output; namespace Generators.Exercises { @@ -10,7 +9,6 @@ protected override void UpdateCanonicalData(CanonicalData canonicalData) foreach (var canonicalDataCase in CanonicalData.Cases) { canonicalDataCase.UseVariablesForInput = true; - canonicalDataCase.Expected = canonicalDataCase.Expected ?? new UnescapedValue("null"); } } } diff --git a/generators/Output/Templates/_AssertNull.liquid b/generators/Output/Templates/_AssertNull.liquid new file mode 100644 index 0000000000..93d9af2a94 --- /dev/null +++ b/generators/Output/Templates/_AssertNull.liquid @@ -0,0 +1 @@ +Assert.Null({{ TestedValue }}); \ No newline at end of file diff --git a/generators/Output/TestMethodBodyWithNullCheck.cs b/generators/Output/TestMethodBodyWithNullCheck.cs new file mode 100644 index 0000000000..03f716f789 --- /dev/null +++ b/generators/Output/TestMethodBodyWithNullCheck.cs @@ -0,0 +1,13 @@ +using Generators.Input; + +namespace Generators.Output +{ + public class TestMethodBodyWithNullCheck : TestMethodBody + { + public TestMethodBodyWithNullCheck(CanonicalDataCase canonicalDataCase, CanonicalData canonicalData) : base(canonicalDataCase, canonicalData) + { + AssertTemplateName = "AssertNull"; + AssertTemplateParameters = new { Data.TestedValue }; + } + } +} \ No newline at end of file From 3ab86cf34a8e8c55ccc585611fdac024d8ccbcad Mon Sep 17 00:00:00 2001 From: Rob Keim Date: Sat, 19 Aug 2017 11:57:07 +0700 Subject: [PATCH 2/2] Fix missing whitespace --- generators/Exercise.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generators/Exercise.cs b/generators/Exercise.cs index 3db7f19b6c..73aaf1ced0 100644 --- a/generators/Exercise.cs +++ b/generators/Exercise.cs @@ -78,7 +78,7 @@ protected virtual TestMethodBody CreateTestMethodBody(CanonicalDataCase canonica return new TestMethodBodyWithBooleanCheck(canonicalDataCase, CanonicalData); } - if(canonicalDataCase.Expected is null) + if (canonicalDataCase.Expected is null) { return new TestMethodBodyWithNullCheck(canonicalDataCase, CanonicalData); } @@ -95,4 +95,4 @@ protected virtual string RenderTestMethodBodyAct(TestMethodBody testMethodBody) protected virtual string RenderTestMethodBodyAssert(TestMethodBody testMethodBody) => TemplateRenderer.RenderPartial(testMethodBody.AssertTemplateName, testMethodBody.AssertTemplateParameters); } -} \ No newline at end of file +}