diff --git a/exercises/beer-song/BeerSong.cs b/exercises/beer-song/BeerSong.cs index 60636cbcdb..02b55bfc75 100644 --- a/exercises/beer-song/BeerSong.cs +++ b/exercises/beer-song/BeerSong.cs @@ -1,13 +1,13 @@ using System; -public static class Beer +public static class BeerSong { public static string Verse(int number) { throw new NotImplementedException("You need to implement this function."); } - public static string Sing(int start, int stop) + public static string Verses(int begin, int end) { throw new NotImplementedException("You need to implement this function."); } diff --git a/exercises/beer-song/BeerSongTest.cs b/exercises/beer-song/BeerSongTest.cs new file mode 100755 index 0000000000..aa0e30e669 --- /dev/null +++ b/exercises/beer-song/BeerSongTest.cs @@ -0,0 +1,390 @@ +using Xunit; + +public class BeerSongTest +{ + [Fact] + public void First_generic_verse() + { + var expected = + "99 bottles of beer on the wall, 99 bottles of beer.\n"+ + "Take one down and pass it around, 98 bottles of beer on the wall.\n"+ + ""; + Assert.Equal(expected, BeerSong.Verse(99)); + } + + [Fact] + public void Last_generic_verse() + { + var expected = + "3 bottles of beer on the wall, 3 bottles of beer.\n"+ + "Take one down and pass it around, 2 bottles of beer on the wall.\n"+ + ""; + Assert.Equal(expected, BeerSong.Verse(3)); + } + + [Fact] + public void Verse_2() + { + var expected = + "2 bottles of beer on the wall, 2 bottles of beer.\n"+ + "Take one down and pass it around, 1 bottle of beer on the wall.\n"+ + ""; + Assert.Equal(expected, BeerSong.Verse(2)); + } + + [Fact] + public void Verse_1() + { + var expected = + "1 bottle of beer on the wall, 1 bottle of beer.\n"+ + "Take it down and pass it around, no more bottles of beer on the wall.\n"+ + ""; + Assert.Equal(expected, BeerSong.Verse(1)); + } + + [Fact] + public void Verse_0() + { + var expected = + "No more bottles of beer on the wall, no more bottles of beer.\n"+ + "Go to the store and buy some more, 99 bottles of beer on the wall.\n"+ + ""; + Assert.Equal(expected, BeerSong.Verse(0)); + } + + [Fact] + public void First_two_verses() + { + var expected = + "99 bottles of beer on the wall, 99 bottles of beer.\n"+ + "Take one down and pass it around, 98 bottles of beer on the wall.\n"+ + "\n"+ + "98 bottles of beer on the wall, 98 bottles of beer.\n"+ + "Take one down and pass it around, 97 bottles of beer on the wall.\n"+ + ""; + Assert.Equal(expected, BeerSong.Verses(99, 98)); + } + + [Fact] + public void Last_three_verses() + { + var expected = + "2 bottles of beer on the wall, 2 bottles of beer.\n"+ + "Take one down and pass it around, 1 bottle of beer on the wall.\n"+ + "\n"+ + "1 bottle of beer on the wall, 1 bottle of beer.\n"+ + "Take it down and pass it around, no more bottles of beer on the wall.\n"+ + "\n"+ + "No more bottles of beer on the wall, no more bottles of beer.\n"+ + "Go to the store and buy some more, 99 bottles of beer on the wall.\n"+ + ""; + Assert.Equal(expected, BeerSong.Verses(2, 0)); + } + + [Fact] + public void All_verses() + { + var expected = + "99 bottles of beer on the wall, 99 bottles of beer.\n"+ + "Take one down and pass it around, 98 bottles of beer on the wall.\n"+ + "\n"+ + "98 bottles of beer on the wall, 98 bottles of beer.\n"+ + "Take one down and pass it around, 97 bottles of beer on the wall.\n"+ + "\n"+ + "97 bottles of beer on the wall, 97 bottles of beer.\n"+ + "Take one down and pass it around, 96 bottles of beer on the wall.\n"+ + "\n"+ + "96 bottles of beer on the wall, 96 bottles of beer.\n"+ + "Take one down and pass it around, 95 bottles of beer on the wall.\n"+ + "\n"+ + "95 bottles of beer on the wall, 95 bottles of beer.\n"+ + "Take one down and pass it around, 94 bottles of beer on the wall.\n"+ + "\n"+ + "94 bottles of beer on the wall, 94 bottles of beer.\n"+ + "Take one down and pass it around, 93 bottles of beer on the wall.\n"+ + "\n"+ + "93 bottles of beer on the wall, 93 bottles of beer.\n"+ + "Take one down and pass it around, 92 bottles of beer on the wall.\n"+ + "\n"+ + "92 bottles of beer on the wall, 92 bottles of beer.\n"+ + "Take one down and pass it around, 91 bottles of beer on the wall.\n"+ + "\n"+ + "91 bottles of beer on the wall, 91 bottles of beer.\n"+ + "Take one down and pass it around, 90 bottles of beer on the wall.\n"+ + "\n"+ + "90 bottles of beer on the wall, 90 bottles of beer.\n"+ + "Take one down and pass it around, 89 bottles of beer on the wall.\n"+ + "\n"+ + "89 bottles of beer on the wall, 89 bottles of beer.\n"+ + "Take one down and pass it around, 88 bottles of beer on the wall.\n"+ + "\n"+ + "88 bottles of beer on the wall, 88 bottles of beer.\n"+ + "Take one down and pass it around, 87 bottles of beer on the wall.\n"+ + "\n"+ + "87 bottles of beer on the wall, 87 bottles of beer.\n"+ + "Take one down and pass it around, 86 bottles of beer on the wall.\n"+ + "\n"+ + "86 bottles of beer on the wall, 86 bottles of beer.\n"+ + "Take one down and pass it around, 85 bottles of beer on the wall.\n"+ + "\n"+ + "85 bottles of beer on the wall, 85 bottles of beer.\n"+ + "Take one down and pass it around, 84 bottles of beer on the wall.\n"+ + "\n"+ + "84 bottles of beer on the wall, 84 bottles of beer.\n"+ + "Take one down and pass it around, 83 bottles of beer on the wall.\n"+ + "\n"+ + "83 bottles of beer on the wall, 83 bottles of beer.\n"+ + "Take one down and pass it around, 82 bottles of beer on the wall.\n"+ + "\n"+ + "82 bottles of beer on the wall, 82 bottles of beer.\n"+ + "Take one down and pass it around, 81 bottles of beer on the wall.\n"+ + "\n"+ + "81 bottles of beer on the wall, 81 bottles of beer.\n"+ + "Take one down and pass it around, 80 bottles of beer on the wall.\n"+ + "\n"+ + "80 bottles of beer on the wall, 80 bottles of beer.\n"+ + "Take one down and pass it around, 79 bottles of beer on the wall.\n"+ + "\n"+ + "79 bottles of beer on the wall, 79 bottles of beer.\n"+ + "Take one down and pass it around, 78 bottles of beer on the wall.\n"+ + "\n"+ + "78 bottles of beer on the wall, 78 bottles of beer.\n"+ + "Take one down and pass it around, 77 bottles of beer on the wall.\n"+ + "\n"+ + "77 bottles of beer on the wall, 77 bottles of beer.\n"+ + "Take one down and pass it around, 76 bottles of beer on the wall.\n"+ + "\n"+ + "76 bottles of beer on the wall, 76 bottles of beer.\n"+ + "Take one down and pass it around, 75 bottles of beer on the wall.\n"+ + "\n"+ + "75 bottles of beer on the wall, 75 bottles of beer.\n"+ + "Take one down and pass it around, 74 bottles of beer on the wall.\n"+ + "\n"+ + "74 bottles of beer on the wall, 74 bottles of beer.\n"+ + "Take one down and pass it around, 73 bottles of beer on the wall.\n"+ + "\n"+ + "73 bottles of beer on the wall, 73 bottles of beer.\n"+ + "Take one down and pass it around, 72 bottles of beer on the wall.\n"+ + "\n"+ + "72 bottles of beer on the wall, 72 bottles of beer.\n"+ + "Take one down and pass it around, 71 bottles of beer on the wall.\n"+ + "\n"+ + "71 bottles of beer on the wall, 71 bottles of beer.\n"+ + "Take one down and pass it around, 70 bottles of beer on the wall.\n"+ + "\n"+ + "70 bottles of beer on the wall, 70 bottles of beer.\n"+ + "Take one down and pass it around, 69 bottles of beer on the wall.\n"+ + "\n"+ + "69 bottles of beer on the wall, 69 bottles of beer.\n"+ + "Take one down and pass it around, 68 bottles of beer on the wall.\n"+ + "\n"+ + "68 bottles of beer on the wall, 68 bottles of beer.\n"+ + "Take one down and pass it around, 67 bottles of beer on the wall.\n"+ + "\n"+ + "67 bottles of beer on the wall, 67 bottles of beer.\n"+ + "Take one down and pass it around, 66 bottles of beer on the wall.\n"+ + "\n"+ + "66 bottles of beer on the wall, 66 bottles of beer.\n"+ + "Take one down and pass it around, 65 bottles of beer on the wall.\n"+ + "\n"+ + "65 bottles of beer on the wall, 65 bottles of beer.\n"+ + "Take one down and pass it around, 64 bottles of beer on the wall.\n"+ + "\n"+ + "64 bottles of beer on the wall, 64 bottles of beer.\n"+ + "Take one down and pass it around, 63 bottles of beer on the wall.\n"+ + "\n"+ + "63 bottles of beer on the wall, 63 bottles of beer.\n"+ + "Take one down and pass it around, 62 bottles of beer on the wall.\n"+ + "\n"+ + "62 bottles of beer on the wall, 62 bottles of beer.\n"+ + "Take one down and pass it around, 61 bottles of beer on the wall.\n"+ + "\n"+ + "61 bottles of beer on the wall, 61 bottles of beer.\n"+ + "Take one down and pass it around, 60 bottles of beer on the wall.\n"+ + "\n"+ + "60 bottles of beer on the wall, 60 bottles of beer.\n"+ + "Take one down and pass it around, 59 bottles of beer on the wall.\n"+ + "\n"+ + "59 bottles of beer on the wall, 59 bottles of beer.\n"+ + "Take one down and pass it around, 58 bottles of beer on the wall.\n"+ + "\n"+ + "58 bottles of beer on the wall, 58 bottles of beer.\n"+ + "Take one down and pass it around, 57 bottles of beer on the wall.\n"+ + "\n"+ + "57 bottles of beer on the wall, 57 bottles of beer.\n"+ + "Take one down and pass it around, 56 bottles of beer on the wall.\n"+ + "\n"+ + "56 bottles of beer on the wall, 56 bottles of beer.\n"+ + "Take one down and pass it around, 55 bottles of beer on the wall.\n"+ + "\n"+ + "55 bottles of beer on the wall, 55 bottles of beer.\n"+ + "Take one down and pass it around, 54 bottles of beer on the wall.\n"+ + "\n"+ + "54 bottles of beer on the wall, 54 bottles of beer.\n"+ + "Take one down and pass it around, 53 bottles of beer on the wall.\n"+ + "\n"+ + "53 bottles of beer on the wall, 53 bottles of beer.\n"+ + "Take one down and pass it around, 52 bottles of beer on the wall.\n"+ + "\n"+ + "52 bottles of beer on the wall, 52 bottles of beer.\n"+ + "Take one down and pass it around, 51 bottles of beer on the wall.\n"+ + "\n"+ + "51 bottles of beer on the wall, 51 bottles of beer.\n"+ + "Take one down and pass it around, 50 bottles of beer on the wall.\n"+ + "\n"+ + "50 bottles of beer on the wall, 50 bottles of beer.\n"+ + "Take one down and pass it around, 49 bottles of beer on the wall.\n"+ + "\n"+ + "49 bottles of beer on the wall, 49 bottles of beer.\n"+ + "Take one down and pass it around, 48 bottles of beer on the wall.\n"+ + "\n"+ + "48 bottles of beer on the wall, 48 bottles of beer.\n"+ + "Take one down and pass it around, 47 bottles of beer on the wall.\n"+ + "\n"+ + "47 bottles of beer on the wall, 47 bottles of beer.\n"+ + "Take one down and pass it around, 46 bottles of beer on the wall.\n"+ + "\n"+ + "46 bottles of beer on the wall, 46 bottles of beer.\n"+ + "Take one down and pass it around, 45 bottles of beer on the wall.\n"+ + "\n"+ + "45 bottles of beer on the wall, 45 bottles of beer.\n"+ + "Take one down and pass it around, 44 bottles of beer on the wall.\n"+ + "\n"+ + "44 bottles of beer on the wall, 44 bottles of beer.\n"+ + "Take one down and pass it around, 43 bottles of beer on the wall.\n"+ + "\n"+ + "43 bottles of beer on the wall, 43 bottles of beer.\n"+ + "Take one down and pass it around, 42 bottles of beer on the wall.\n"+ + "\n"+ + "42 bottles of beer on the wall, 42 bottles of beer.\n"+ + "Take one down and pass it around, 41 bottles of beer on the wall.\n"+ + "\n"+ + "41 bottles of beer on the wall, 41 bottles of beer.\n"+ + "Take one down and pass it around, 40 bottles of beer on the wall.\n"+ + "\n"+ + "40 bottles of beer on the wall, 40 bottles of beer.\n"+ + "Take one down and pass it around, 39 bottles of beer on the wall.\n"+ + "\n"+ + "39 bottles of beer on the wall, 39 bottles of beer.\n"+ + "Take one down and pass it around, 38 bottles of beer on the wall.\n"+ + "\n"+ + "38 bottles of beer on the wall, 38 bottles of beer.\n"+ + "Take one down and pass it around, 37 bottles of beer on the wall.\n"+ + "\n"+ + "37 bottles of beer on the wall, 37 bottles of beer.\n"+ + "Take one down and pass it around, 36 bottles of beer on the wall.\n"+ + "\n"+ + "36 bottles of beer on the wall, 36 bottles of beer.\n"+ + "Take one down and pass it around, 35 bottles of beer on the wall.\n"+ + "\n"+ + "35 bottles of beer on the wall, 35 bottles of beer.\n"+ + "Take one down and pass it around, 34 bottles of beer on the wall.\n"+ + "\n"+ + "34 bottles of beer on the wall, 34 bottles of beer.\n"+ + "Take one down and pass it around, 33 bottles of beer on the wall.\n"+ + "\n"+ + "33 bottles of beer on the wall, 33 bottles of beer.\n"+ + "Take one down and pass it around, 32 bottles of beer on the wall.\n"+ + "\n"+ + "32 bottles of beer on the wall, 32 bottles of beer.\n"+ + "Take one down and pass it around, 31 bottles of beer on the wall.\n"+ + "\n"+ + "31 bottles of beer on the wall, 31 bottles of beer.\n"+ + "Take one down and pass it around, 30 bottles of beer on the wall.\n"+ + "\n"+ + "30 bottles of beer on the wall, 30 bottles of beer.\n"+ + "Take one down and pass it around, 29 bottles of beer on the wall.\n"+ + "\n"+ + "29 bottles of beer on the wall, 29 bottles of beer.\n"+ + "Take one down and pass it around, 28 bottles of beer on the wall.\n"+ + "\n"+ + "28 bottles of beer on the wall, 28 bottles of beer.\n"+ + "Take one down and pass it around, 27 bottles of beer on the wall.\n"+ + "\n"+ + "27 bottles of beer on the wall, 27 bottles of beer.\n"+ + "Take one down and pass it around, 26 bottles of beer on the wall.\n"+ + "\n"+ + "26 bottles of beer on the wall, 26 bottles of beer.\n"+ + "Take one down and pass it around, 25 bottles of beer on the wall.\n"+ + "\n"+ + "25 bottles of beer on the wall, 25 bottles of beer.\n"+ + "Take one down and pass it around, 24 bottles of beer on the wall.\n"+ + "\n"+ + "24 bottles of beer on the wall, 24 bottles of beer.\n"+ + "Take one down and pass it around, 23 bottles of beer on the wall.\n"+ + "\n"+ + "23 bottles of beer on the wall, 23 bottles of beer.\n"+ + "Take one down and pass it around, 22 bottles of beer on the wall.\n"+ + "\n"+ + "22 bottles of beer on the wall, 22 bottles of beer.\n"+ + "Take one down and pass it around, 21 bottles of beer on the wall.\n"+ + "\n"+ + "21 bottles of beer on the wall, 21 bottles of beer.\n"+ + "Take one down and pass it around, 20 bottles of beer on the wall.\n"+ + "\n"+ + "20 bottles of beer on the wall, 20 bottles of beer.\n"+ + "Take one down and pass it around, 19 bottles of beer on the wall.\n"+ + "\n"+ + "19 bottles of beer on the wall, 19 bottles of beer.\n"+ + "Take one down and pass it around, 18 bottles of beer on the wall.\n"+ + "\n"+ + "18 bottles of beer on the wall, 18 bottles of beer.\n"+ + "Take one down and pass it around, 17 bottles of beer on the wall.\n"+ + "\n"+ + "17 bottles of beer on the wall, 17 bottles of beer.\n"+ + "Take one down and pass it around, 16 bottles of beer on the wall.\n"+ + "\n"+ + "16 bottles of beer on the wall, 16 bottles of beer.\n"+ + "Take one down and pass it around, 15 bottles of beer on the wall.\n"+ + "\n"+ + "15 bottles of beer on the wall, 15 bottles of beer.\n"+ + "Take one down and pass it around, 14 bottles of beer on the wall.\n"+ + "\n"+ + "14 bottles of beer on the wall, 14 bottles of beer.\n"+ + "Take one down and pass it around, 13 bottles of beer on the wall.\n"+ + "\n"+ + "13 bottles of beer on the wall, 13 bottles of beer.\n"+ + "Take one down and pass it around, 12 bottles of beer on the wall.\n"+ + "\n"+ + "12 bottles of beer on the wall, 12 bottles of beer.\n"+ + "Take one down and pass it around, 11 bottles of beer on the wall.\n"+ + "\n"+ + "11 bottles of beer on the wall, 11 bottles of beer.\n"+ + "Take one down and pass it around, 10 bottles of beer on the wall.\n"+ + "\n"+ + "10 bottles of beer on the wall, 10 bottles of beer.\n"+ + "Take one down and pass it around, 9 bottles of beer on the wall.\n"+ + "\n"+ + "9 bottles of beer on the wall, 9 bottles of beer.\n"+ + "Take one down and pass it around, 8 bottles of beer on the wall.\n"+ + "\n"+ + "8 bottles of beer on the wall, 8 bottles of beer.\n"+ + "Take one down and pass it around, 7 bottles of beer on the wall.\n"+ + "\n"+ + "7 bottles of beer on the wall, 7 bottles of beer.\n"+ + "Take one down and pass it around, 6 bottles of beer on the wall.\n"+ + "\n"+ + "6 bottles of beer on the wall, 6 bottles of beer.\n"+ + "Take one down and pass it around, 5 bottles of beer on the wall.\n"+ + "\n"+ + "5 bottles of beer on the wall, 5 bottles of beer.\n"+ + "Take one down and pass it around, 4 bottles of beer on the wall.\n"+ + "\n"+ + "4 bottles of beer on the wall, 4 bottles of beer.\n"+ + "Take one down and pass it around, 3 bottles of beer on the wall.\n"+ + "\n"+ + "3 bottles of beer on the wall, 3 bottles of beer.\n"+ + "Take one down and pass it around, 2 bottles of beer on the wall.\n"+ + "\n"+ + "2 bottles of beer on the wall, 2 bottles of beer.\n"+ + "Take one down and pass it around, 1 bottle of beer on the wall.\n"+ + "\n"+ + "1 bottle of beer on the wall, 1 bottle of beer.\n"+ + "Take it down and pass it around, no more bottles of beer on the wall.\n"+ + "\n"+ + "No more bottles of beer on the wall, no more bottles of beer.\n"+ + "Go to the store and buy some more, 99 bottles of beer on the wall.\n"+ + ""; + Assert.Equal(expected, BeerSong.Verses(99, 0)); + } +} \ No newline at end of file diff --git a/exercises/beer-song/BeerTest.cs b/exercises/beer-song/BeerTest.cs deleted file mode 100644 index cbdb2d6f29..0000000000 --- a/exercises/beer-song/BeerTest.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Xunit; - -public class BeerTests -{ - [Theory] - [InlineData(8, "8 bottles of beer on the wall, 8 bottles of beer.\nTake one down and pass it around, 7 bottles of beer on the wall.\n")] - [InlineData(2, "2 bottles of beer on the wall, 2 bottles of beer.\nTake one down and pass it around, 1 bottle of beer on the wall.\n")] - [InlineData(1, "1 bottle of beer on the wall, 1 bottle of beer.\nTake it down and pass it around, no more bottles of beer on the wall.\n")] - [InlineData(0, "No more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottles of beer on the wall.\n")] - public void Verse(int number, string expected) - { - Assert.Equal(expected, Beer.Verse(number)); - } - - [Theory(Skip = "Remove to run test")] - [InlineData(8, 6, "8 bottles of beer on the wall, 8 bottles of beer.\nTake one down and pass it around, 7 bottles of beer on the wall.\n\n7 bottles of beer on the wall, 7 bottles of beer.\nTake one down and pass it around, 6 bottles of beer on the wall.\n\n6 bottles of beer on the wall, 6 bottles of beer.\nTake one down and pass it around, 5 bottles of beer on the wall.\n\n")] - [InlineData(3, 0, "3 bottles of beer on the wall, 3 bottles of beer.\nTake one down and pass it around, 2 bottles of beer on the wall.\n\n2 bottles of beer on the wall, 2 bottles of beer.\nTake one down and pass it around, 1 bottle of beer on the wall.\n\n1 bottle of beer on the wall, 1 bottle of beer.\nTake it down and pass it around, no more bottles of beer on the wall.\n\nNo more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottles of beer on the wall.\n\n")] - public void Sing(int start, int stop, string expected) - { - Assert.Equal(expected, Beer.Sing(start, stop)); - } -} \ No newline at end of file diff --git a/exercises/beer-song/Example.cs b/exercises/beer-song/Example.cs index dc189d838e..80bf7a78e1 100644 --- a/exercises/beer-song/Example.cs +++ b/exercises/beer-song/Example.cs @@ -1,6 +1,6 @@ using System.Linq; -public static class Beer +public static class BeerSong { public static string Verse(int number) { @@ -17,11 +17,6 @@ public static string Verse(int number) } } - public static string Sing(int start, int stop) - { - return Enumerable.Range(stop, start - stop + 1) - .Reverse() - .Select(Verse) - .Aggregate("", (acc, verse) => acc + verse + "\n"); - } + public static string Verses(int begin, int end) + => string.Join("\n", Enumerable.Range(end, begin - end + 1).Reverse().Select(Verse)); } \ No newline at end of file diff --git a/generators/Data/CanonicalDataValue.cs b/generators/Data/CanonicalDataValue.cs index 83fcffa6dd..fa04423b55 100644 --- a/generators/Data/CanonicalDataValue.cs +++ b/generators/Data/CanonicalDataValue.cs @@ -1,10 +1,24 @@ -using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using Newtonsoft.Json.Linq; namespace Generators.Data { public static class CanonicalDataValue { - public static string StringArrayToString(object expected) - => string.Join("\\n\"+\n\"", ((JArray) expected).Values()); + public static string ExpectedToMultiLineString(object expected) + { + switch (expected) + { + case IEnumerable enumerable: + return string.Join("\\n\"+\n\"", enumerable); + case JArray jarray: + return ExpectedToMultiLineString(((JArray) expected).Values()); + case string str: + return ExpectedToMultiLineString(str.Split('\n')); + default: + throw new ArgumentException("Cannot convert expected value to multil-ine string."); + } + } } } diff --git a/generators/Exercises/BeerSongExercise.cs b/generators/Exercises/BeerSongExercise.cs new file mode 100644 index 0000000000..2d8e3a8b61 --- /dev/null +++ b/generators/Exercises/BeerSongExercise.cs @@ -0,0 +1,33 @@ +using Generators.Data; +using Generators.Methods; + +namespace Generators.Exercises +{ + public class BeerSongExercise : EqualityExercise + { + public BeerSongExercise() : base("beer-song") + { + } + + protected override TestMethodData CreateTestMethodData(CanonicalData canonicalData, CanonicalDataCase canonicalDataCase, int index) + { + var testMethodData = base.CreateTestMethodData(canonicalData, canonicalDataCase, index); + + testMethodData.Options.UseVariableForExpected = true; + testMethodData.Options.FormatExpected = true; + + testMethodData.CanonicalDataCase.Expected = CanonicalDataValue.ExpectedToMultiLineString(testMethodData.CanonicalDataCase.Expected); + + if (testMethodData.CanonicalDataCase.Property == "verse") + testMethodData.Options.InputProperty = "number"; + else + testMethodData.CanonicalDataCase.Input = new[] + { + testMethodData.CanonicalDataCase.Data["beginning"], + testMethodData.CanonicalDataCase.Data["end"] + }; + + return testMethodData; + } + } +} \ No newline at end of file diff --git a/generators/Exercises/FoodChainExercise.cs b/generators/Exercises/FoodChainExercise.cs index be8c10b823..0e3e1800cd 100644 --- a/generators/Exercises/FoodChainExercise.cs +++ b/generators/Exercises/FoodChainExercise.cs @@ -14,7 +14,7 @@ protected override TestMethodData CreateTestMethodData(CanonicalData canonicalDa var testMethodData = base.CreateTestMethodData(canonicalData, canonicalDataCase, index); testMethodData.Options.UseVariableForExpected = true; - testMethodData.CanonicalDataCase.Expected = CanonicalDataValue.StringArrayToString(canonicalDataCase.Expected); + testMethodData.CanonicalDataCase.Expected = CanonicalDataValue.ExpectedToMultiLineString(testMethodData.CanonicalDataCase.Expected); if (testMethodData.CanonicalDataCase.Data.ContainsKey("end verse")) testMethodData.CanonicalDataCase.Input = new[] { testMethodData.CanonicalDataCase.Data["start verse"], testMethodData.CanonicalDataCase.Data["end verse"] };