From 0a69d19edc92c3e5fd5fcb9e59fb2cf03012e56e Mon Sep 17 00:00:00 2001 From: Brandon Everett Date: Wed, 4 Oct 2017 16:53:37 -0400 Subject: [PATCH 1/3] add PascalsTriangle generator and modified example and code file to adhear to generation --- exercises/pascals-triangle/Example.cs | 11 +++- exercises/pascals-triangle/PascalsTriangle.cs | 10 +++ .../pascals-triangle/PascalsTriangleTest.cs | 65 ++++++------------- generators/Exercises/PascalsTriangle.cs | 23 +++++++ 4 files changed, 62 insertions(+), 47 deletions(-) create mode 100644 generators/Exercises/PascalsTriangle.cs diff --git a/exercises/pascals-triangle/Example.cs b/exercises/pascals-triangle/Example.cs index b2bfa7b103..45d0160b6e 100644 --- a/exercises/pascals-triangle/Example.cs +++ b/exercises/pascals-triangle/Example.cs @@ -1,15 +1,24 @@ using System.Collections.Generic; +using System; public static class PascalsTriangle { public static IEnumerable> Calculate(int rows) + { + if (rows < 0) + throw new ArgumentOutOfRangeException(); + + return ItterateRows(rows); + } + + private static IEnumerable> ItterateRows(int rows) { for (var i = 1; i <= rows; i++) { yield return Row(i); } } - + private static IEnumerable Row(int row) { yield return 1; diff --git a/exercises/pascals-triangle/PascalsTriangle.cs b/exercises/pascals-triangle/PascalsTriangle.cs index 2539674122..5f8fc6345e 100644 --- a/exercises/pascals-triangle/PascalsTriangle.cs +++ b/exercises/pascals-triangle/PascalsTriangle.cs @@ -7,4 +7,14 @@ public static IEnumerable> Calculate(int rows) { throw new NotImplementedException(); } + + private static IEnumerable Row(int row) + { + throw new NotImplementedException(); + } + + private static IEnumerable> ItterateRows(int rows) + { + throw new NotImplementedException(); + } } \ No newline at end of file diff --git a/exercises/pascals-triangle/PascalsTriangleTest.cs b/exercises/pascals-triangle/PascalsTriangleTest.cs index 216e859b92..4724097eef 100644 --- a/exercises/pascals-triangle/PascalsTriangleTest.cs +++ b/exercises/pascals-triangle/PascalsTriangleTest.cs @@ -1,80 +1,53 @@ -using System; -using System.Collections.Generic; -using System.Linq; +// This file was auto-generated based on version 1.0.0 of the canonical data. + using Xunit; +using System; public class PascalsTriangleTest { [Fact] - public void One_row() + public void Zero_rows() + { + Assert.Empty(PascalsTriangle.Calculate(0)); + } + + [Fact(Skip = "Remove to run test")] + public void Single_row() { - var actual = PascalsTriangle.Calculate(1); var expected = new[] { new[] { 1 } }; - Assert.Equal(expected, actual, NestedEnumerableEqualityComparer.Instance); + Assert.Equal(expected, PascalsTriangle.Calculate(1)); } - + [Fact(Skip = "Remove to run test")] public void Two_rows() { - var actual = PascalsTriangle.Calculate(2).ToArray(); var expected = new[] { new[] { 1 }, new[] { 1, 1 } }; - Assert.Equal(expected, actual, NestedEnumerableEqualityComparer.Instance); + Assert.Equal(expected, PascalsTriangle.Calculate(2)); } [Fact(Skip = "Remove to run test")] public void Three_rows() { - var actual = PascalsTriangle.Calculate(3); var expected = new[] { new[] { 1 }, new[] { 1, 1 }, new[] { 1, 2, 1 } }; - Assert.Equal(expected, actual, NestedEnumerableEqualityComparer.Instance); + Assert.Equal(expected, PascalsTriangle.Calculate(3)); } [Fact(Skip = "Remove to run test")] public void Four_rows() { - var actual = PascalsTriangle.Calculate(4); var expected = new[] { new[] { 1 }, new[] { 1, 1 }, new[] { 1, 2, 1 }, new[] { 1, 3, 3, 1 } }; - Assert.Equal(expected, actual, NestedEnumerableEqualityComparer.Instance); + Assert.Equal(expected, PascalsTriangle.Calculate(4)); } [Fact(Skip = "Remove to run test")] - public void Five_rows() + public void Negative_rows() { - var actual = PascalsTriangle.Calculate(5); - var expected = new[] { new[] { 1 }, new[] { 1, 1 }, new[] { 1, 2, 1 }, new[] { 1, 3, 3, 1 }, new[] { 1, 4, 6, 4, 1 } }; - Assert.Equal(expected, actual, NestedEnumerableEqualityComparer.Instance); + Assert.Throws(() => PascalsTriangle.Calculate(-1)); } [Fact(Skip = "Remove to run test")] - public void Twenty_rows() - { - var actual = PascalsTriangle.Calculate(20).Last(); - var expected = new[] { 1, 19, 171, 969, 3876, 11628, 27132, 50388, 75582, 92378, 92378, 75582, 50388, 27132, 11628, 3876, 969, 171, 19, 1 }; - Assert.Equal(expected, actual); - } - - private class EnumerableEqualityComparer : IEqualityComparer> - { - public static readonly EnumerableEqualityComparer Instance = new EnumerableEqualityComparer(); - - public bool Equals(IEnumerable x, IEnumerable y) => x.SequenceEqual(y); - - public int GetHashCode(IEnumerable obj) - { - throw new NotImplementedException(); - } - } - - private class NestedEnumerableEqualityComparer : IEqualityComparer>> + public void Null_no_rows() { - public static readonly NestedEnumerableEqualityComparer Instance = new NestedEnumerableEqualityComparer(); - - public bool Equals(IEnumerable> x, IEnumerable> y) - => x.SequenceEqual(y, EnumerableEqualityComparer.Instance); - - public int GetHashCode(IEnumerable> obj) - { - throw new NotImplementedException(); - } + Assert.Throws(() => PascalsTriangle.Calculate(-1)); } } \ No newline at end of file diff --git a/generators/Exercises/PascalsTriangle.cs b/generators/Exercises/PascalsTriangle.cs new file mode 100644 index 0000000000..bdd1f84e3d --- /dev/null +++ b/generators/Exercises/PascalsTriangle.cs @@ -0,0 +1,23 @@ +using System; +using Generators.Input; +using Generators.Output; +using Newtonsoft.Json.Linq; + +namespace Generators.Exercises +{ + public class PascalsTriangle : Exercise + { + protected override void UpdateCanonicalData(CanonicalData canonicalData) + { + foreach (var dataCases in canonicalData.Cases) + { + dataCases.UseVariableForExpected = true; + dataCases.Property = "calculate"; + if (!(dataCases.Expected is JArray)) + dataCases.ExceptionThrown = typeof(ArgumentOutOfRangeException); + if (dataCases.Properties["count"] == null) + dataCases.Properties["count"] = -1; + } + } + } +} \ No newline at end of file From 2d00aaf4944a37011499e8433ba8646d7d661d71 Mon Sep 17 00:00:00 2001 From: Brandon Everett Date: Thu, 5 Oct 2017 07:31:00 -0400 Subject: [PATCH 2/3] remove null case for now and minor fixes --- exercises/pascals-triangle/Example.cs | 4 ++-- exercises/pascals-triangle/PascalsTriangle.cs | 2 +- .../pascals-triangle/PascalsTriangleTest.cs | 6 ------ generators/Exercises/PascalsTriangle.cs | 21 ++++++++++++------- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/exercises/pascals-triangle/Example.cs b/exercises/pascals-triangle/Example.cs index 45d0160b6e..75d551c0b4 100644 --- a/exercises/pascals-triangle/Example.cs +++ b/exercises/pascals-triangle/Example.cs @@ -8,10 +8,10 @@ public static IEnumerable> Calculate(int rows) if (rows < 0) throw new ArgumentOutOfRangeException(); - return ItterateRows(rows); + return IterateRows(rows); } - private static IEnumerable> ItterateRows(int rows) + private static IEnumerable> IterateRows(int rows) { for (var i = 1; i <= rows; i++) { diff --git a/exercises/pascals-triangle/PascalsTriangle.cs b/exercises/pascals-triangle/PascalsTriangle.cs index 5f8fc6345e..9e5eccbf99 100644 --- a/exercises/pascals-triangle/PascalsTriangle.cs +++ b/exercises/pascals-triangle/PascalsTriangle.cs @@ -13,7 +13,7 @@ private static IEnumerable Row(int row) throw new NotImplementedException(); } - private static IEnumerable> ItterateRows(int rows) + private static IEnumerable> IterateRows(int rows) { throw new NotImplementedException(); } diff --git a/exercises/pascals-triangle/PascalsTriangleTest.cs b/exercises/pascals-triangle/PascalsTriangleTest.cs index 4724097eef..684580ba77 100644 --- a/exercises/pascals-triangle/PascalsTriangleTest.cs +++ b/exercises/pascals-triangle/PascalsTriangleTest.cs @@ -44,10 +44,4 @@ public void Negative_rows() { Assert.Throws(() => PascalsTriangle.Calculate(-1)); } - - [Fact(Skip = "Remove to run test")] - public void Null_no_rows() - { - Assert.Throws(() => PascalsTriangle.Calculate(-1)); - } } \ No newline at end of file diff --git a/generators/Exercises/PascalsTriangle.cs b/generators/Exercises/PascalsTriangle.cs index bdd1f84e3d..69cde4ade8 100644 --- a/generators/Exercises/PascalsTriangle.cs +++ b/generators/Exercises/PascalsTriangle.cs @@ -1,6 +1,6 @@ using System; +using System.Linq; using Generators.Input; -using Generators.Output; using Newtonsoft.Json.Linq; namespace Generators.Exercises @@ -9,14 +9,19 @@ public class PascalsTriangle : Exercise { protected override void UpdateCanonicalData(CanonicalData canonicalData) { - foreach (var dataCases in canonicalData.Cases) + //remove null case until canonical data is updated + var cases = canonicalData.Cases.ToList(); + cases.RemoveAll(x => x.Properties["count"] == null); + canonicalData.Cases = cases.ToArray(); + + foreach (var canonicalDataCase in canonicalData.Cases) { - dataCases.UseVariableForExpected = true; - dataCases.Property = "calculate"; - if (!(dataCases.Expected is JArray)) - dataCases.ExceptionThrown = typeof(ArgumentOutOfRangeException); - if (dataCases.Properties["count"] == null) - dataCases.Properties["count"] = -1; + canonicalDataCase.UseVariableForExpected = true; + canonicalDataCase.Property = "calculate"; + if (!(canonicalDataCase.Expected is JArray)) + canonicalDataCase.ExceptionThrown = typeof(ArgumentOutOfRangeException); + if (canonicalDataCase.Properties["count"] == null) + canonicalDataCase.Properties["count"] = -1; } } } From d6e2e0128304325eeb5797d27740f3f92b172e38 Mon Sep 17 00:00:00 2001 From: Brandon Everett Date: Thu, 5 Oct 2017 07:48:02 -0400 Subject: [PATCH 3/3] remove unnecessary methods --- exercises/pascals-triangle/PascalsTriangle.cs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/exercises/pascals-triangle/PascalsTriangle.cs b/exercises/pascals-triangle/PascalsTriangle.cs index 9e5eccbf99..5d2235d607 100644 --- a/exercises/pascals-triangle/PascalsTriangle.cs +++ b/exercises/pascals-triangle/PascalsTriangle.cs @@ -8,13 +8,4 @@ public static IEnumerable> Calculate(int rows) throw new NotImplementedException(); } - private static IEnumerable Row(int row) - { - throw new NotImplementedException(); - } - - private static IEnumerable> IterateRows(int rows) - { - throw new NotImplementedException(); - } } \ No newline at end of file