trackler 2.2.1.13 → 2.2.1.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/change/canonical-data.json +8 -1
  4. data/tracks/csharp/config.json +25 -26
  5. data/tracks/csharp/docs/SNIPPET.txt +7 -0
  6. data/tracks/csharp/exercises/house/Example.cs +5 -5
  7. data/tracks/csharp/exercises/house/House.cs +6 -1
  8. data/tracks/csharp/exercises/house/HouseTest.cs +208 -5
  9. data/tracks/csharp/exercises/phone-number/Example.cs +2 -1
  10. data/tracks/csharp/exercises/phone-number/PhoneNumberTest.cs +8 -7
  11. data/tracks/csharp/exercises/rna-transcription/Example.cs +2 -1
  12. data/tracks/csharp/exercises/rna-transcription/RnaTranscriptionTest.cs +4 -3
  13. data/tracks/csharp/exercises/say/SayTest.cs +20 -24
  14. data/tracks/csharp/exercises/sieve/Example.cs +6 -0
  15. data/tracks/csharp/exercises/sieve/SieveTest.cs +25 -17
  16. data/tracks/csharp/exercises/space-age/SpaceAgeTest.cs +19 -24
  17. data/tracks/csharp/exercises/sum-of-multiples/Example.cs +1 -1
  18. data/tracks/csharp/exercises/sum-of-multiples/SumOfMultiples.cs +1 -1
  19. data/tracks/csharp/exercises/sum-of-multiples/SumOfMultiplesTest.cs +48 -16
  20. data/tracks/csharp/generators/Exercises/House.cs +16 -0
  21. data/tracks/csharp/generators/Exercises/PhoneNumber.cs +3 -1
  22. data/tracks/csharp/generators/Exercises/RnaTranscription.cs +11 -1
  23. data/tracks/csharp/generators/Exercises/Say.cs +22 -0
  24. data/tracks/csharp/generators/Exercises/Sieve.cs +17 -0
  25. data/tracks/csharp/generators/Exercises/SpaceAge.cs +25 -0
  26. data/tracks/csharp/generators/Exercises/SumOfMultiples.cs +22 -0
  27. data/tracks/csharp/generators/Output/ValueFormatter.cs +4 -0
  28. data/tracks/dart/docs/ABOUT.md +21 -0
  29. data/tracks/ecmascript/README.md +1 -1
  30. data/tracks/ecmascript/config.json +15 -0
  31. data/tracks/ecmascript/exercises/proverb/README.md +63 -0
  32. data/tracks/ecmascript/exercises/proverb/example.js +23 -0
  33. data/tracks/ecmascript/exercises/proverb/package.json +69 -0
  34. data/tracks/ecmascript/exercises/proverb/proverb.spec.js +70 -0
  35. data/tracks/go/config.json +226 -226
  36. data/tracks/groovy/config.json +11 -0
  37. data/tracks/groovy/exercises/two-fer/Example.groovy +6 -0
  38. data/tracks/groovy/exercises/two-fer/README.md +62 -0
  39. data/tracks/groovy/exercises/two-fer/TwoFer.groovy +6 -0
  40. data/tracks/groovy/exercises/two-fer/TwoFerSpec.groovy +24 -0
  41. data/tracks/java/.travis.yml +2 -2
  42. data/tracks/java/bin/journey-test.sh +44 -1
  43. data/tracks/java/bin/run-journey-test-from-ci.sh +28 -0
  44. data/tracks/java/{docs/EXERCISE_README_INSERT.md → config/exercise-readme-insert.md} +0 -0
  45. data/tracks/java/exercises/bank-account/{HINTS.md → .meta/hints.md} +0 -0
  46. data/tracks/java/exercises/change/src/test/java/ChangeCalculatorTest.java +27 -2
  47. data/tracks/java/exercises/clock/{HINTS.md → .meta/hints.md} +0 -0
  48. data/tracks/java/exercises/hamming/{HINTS.md → .meta/hints.md} +0 -0
  49. data/tracks/java/exercises/hello-world/{HINTS.md → .meta/hints.md} +0 -0
  50. data/tracks/java/exercises/isogram/{HINTS.md → .meta/hints.md} +0 -0
  51. data/tracks/java/exercises/list-ops/{HINTS.md → .meta/hints.md} +0 -0
  52. data/tracks/java/exercises/pig-latin/src/example/java/PigLatinTranslator.java +17 -20
  53. data/tracks/java/exercises/simple-cipher/{HINTS.md → .meta/hints.md} +0 -0
  54. data/tracks/java/exercises/two-fer/{HINTS.md → .meta/hints.md} +0 -0
  55. data/tracks/kotlin/{docs/EXERCISE_README_INSERT.md → config/exercise-readme-insert.md} +0 -0
  56. data/tracks/kotlin/exercises/accumulate/README.md +1 -4
  57. data/tracks/kotlin/exercises/acronym/README.md +1 -1
  58. data/tracks/kotlin/exercises/all-your-base/README.md +1 -1
  59. data/tracks/kotlin/exercises/allergies/README.md +1 -1
  60. data/tracks/kotlin/exercises/anagram/README.md +1 -1
  61. data/tracks/kotlin/exercises/atbash-cipher/README.md +1 -1
  62. data/tracks/kotlin/exercises/bank-account/README.md +1 -1
  63. data/tracks/kotlin/exercises/beer-song/README.md +1 -1
  64. data/tracks/kotlin/exercises/binary-search/README.md +1 -1
  65. data/tracks/kotlin/exercises/binary/README.md +1 -1
  66. data/tracks/kotlin/exercises/bob/README.md +1 -1
  67. data/tracks/kotlin/exercises/bracket-push/README.md +1 -1
  68. data/tracks/kotlin/exercises/change/README.md +1 -1
  69. data/tracks/kotlin/exercises/clock/README.md +1 -1
  70. data/tracks/kotlin/exercises/collatz-conjecture/README.md +1 -1
  71. data/tracks/kotlin/exercises/complex-numbers/README.md +1 -1
  72. data/tracks/kotlin/exercises/diamond/README.md +1 -1
  73. data/tracks/kotlin/exercises/difference-of-squares/README.md +1 -1
  74. data/tracks/kotlin/exercises/etl/README.md +1 -1
  75. data/tracks/kotlin/exercises/flatten-array/README.md +1 -1
  76. data/tracks/kotlin/exercises/gigasecond/README.md +1 -1
  77. data/tracks/kotlin/exercises/grade-school/README.md +1 -1
  78. data/tracks/kotlin/exercises/grains/README.md +1 -1
  79. data/tracks/kotlin/exercises/hamming/README.md +1 -1
  80. data/tracks/kotlin/exercises/hello-world/README.md +1 -1
  81. data/tracks/kotlin/exercises/hexadecimal/README.md +1 -1
  82. data/tracks/kotlin/exercises/isogram/README.md +1 -1
  83. data/tracks/kotlin/exercises/largest-series-product/README.md +1 -1
  84. data/tracks/kotlin/exercises/leap/README.md +1 -1
  85. data/tracks/kotlin/exercises/linked-list/README.md +1 -1
  86. data/tracks/kotlin/exercises/list-ops/{HINTS.md → .meta/hints.md} +0 -0
  87. data/tracks/kotlin/exercises/list-ops/README.md +1 -1
  88. data/tracks/kotlin/exercises/luhn/README.md +1 -1
  89. data/tracks/kotlin/exercises/minesweeper/README.md +1 -1
  90. data/tracks/kotlin/exercises/nth-prime/README.md +1 -1
  91. data/tracks/kotlin/exercises/nucleotide-count/README.md +1 -1
  92. data/tracks/kotlin/exercises/pangram/README.md +1 -1
  93. data/tracks/kotlin/exercises/pascals-triangle/README.md +1 -1
  94. data/tracks/kotlin/exercises/perfect-numbers/README.md +1 -1
  95. data/tracks/kotlin/exercises/phone-number/README.md +1 -1
  96. data/tracks/kotlin/exercises/pig-latin/README.md +1 -1
  97. data/tracks/kotlin/exercises/prime-factors/README.md +1 -1
  98. data/tracks/kotlin/exercises/raindrops/README.md +1 -1
  99. data/tracks/kotlin/exercises/react/README.md +1 -1
  100. data/tracks/kotlin/exercises/rna-transcription/README.md +1 -1
  101. data/tracks/kotlin/exercises/robot-name/README.md +1 -1
  102. data/tracks/kotlin/exercises/robot-simulator/README.md +1 -1
  103. data/tracks/kotlin/exercises/roman-numerals/README.md +1 -1
  104. data/tracks/kotlin/exercises/saddle-points/README.md +1 -1
  105. data/tracks/kotlin/exercises/scrabble-score/README.md +1 -1
  106. data/tracks/kotlin/exercises/secret-handshake/README.md +1 -1
  107. data/tracks/kotlin/exercises/series/README.md +1 -1
  108. data/tracks/kotlin/exercises/sieve/README.md +1 -1
  109. data/tracks/kotlin/exercises/simple-cipher/README.md +2 -2
  110. data/tracks/kotlin/exercises/space-age/README.md +3 -2
  111. data/tracks/kotlin/exercises/spiral-matrix/README.md +1 -1
  112. data/tracks/kotlin/exercises/strain/README.md +1 -1
  113. data/tracks/kotlin/exercises/sublist/README.md +1 -1
  114. data/tracks/kotlin/exercises/sum-of-multiples/README.md +1 -1
  115. data/tracks/kotlin/exercises/triangle/README.md +1 -1
  116. data/tracks/kotlin/exercises/word-count/README.md +1 -1
  117. data/tracks/pony/exercises/atbash-cipher/example.pony +4 -3
  118. data/tracks/pony/exercises/beer-song/example.pony +10 -9
  119. data/tracks/pony/exercises/bob/example.pony +1 -1
  120. data/tracks/pony/exercises/difference-of-squares/example.pony +2 -2
  121. data/tracks/pony/exercises/hamming/example.pony +1 -1
  122. data/tracks/pony/exercises/hamming/test.pony +2 -2
  123. data/tracks/pony/exercises/leap/example.pony +1 -1
  124. data/tracks/pony/exercises/pascals-triangle/example.pony +2 -2
  125. data/tracks/pony/exercises/rna-transcription/test.pony +2 -2
  126. data/tracks/pony/exercises/roman-numerals/test.pony +2 -2
  127. data/tracks/python/config.json +22 -0
  128. data/tracks/python/docs/ABOUT.md +11 -3
  129. data/tracks/python/exercises/collatz-conjecture/README.md +61 -0
  130. data/tracks/python/exercises/collatz-conjecture/collatz_conjecture.py +2 -0
  131. data/tracks/python/exercises/collatz-conjecture/collatz_conjecture_test.py +32 -0
  132. data/tracks/python/exercises/collatz-conjecture/example.py +17 -0
  133. data/tracks/python/exercises/isogram/isogram.py +1 -1
  134. data/tracks/python/exercises/isogram/isogram_test.py +3 -0
  135. data/tracks/python/exercises/scale-generator/example.py +2 -0
  136. data/tracks/python/exercises/scale-generator/scale_generator_test.py +4 -0
  137. data/tracks/python/exercises/two-fer/README.md +29 -0
  138. data/tracks/python/exercises/two-fer/example.py +5 -0
  139. data/tracks/python/exercises/two-fer/two_fer.py +2 -0
  140. data/tracks/python/exercises/two-fer/two_fer_test.py +18 -0
  141. data/tracks/r/config/maintainers.json +2 -2
  142. data/tracks/ruby/config.json +2 -1
  143. data/tracks/scala/exercises/minesweeper/src/test/scala/MinesweeperTest.scala +85 -36
  144. data/tracks/scala/testgen/src/main/scala/MinesweeperTestGenerator.scala +15 -0
  145. data/tracks/vimscript/README.md +1 -1
  146. metadata +37 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a1cf9097a8b18d5488bf067290e769160b8fc19a
4
- data.tar.gz: 13c74e032073bdd9630e38743725eaef969ec419
3
+ metadata.gz: 69d8a0c223e95766003538ba5109943e8eef13db
4
+ data.tar.gz: '000541378abedc95ec41d12a7ce16572ec43b5f0'
5
5
  SHA512:
6
- metadata.gz: bea131b3c814916d7eef71efe54056fb5f8bb6a3d867bbd2e9be0246e2efa44169173867dc27400a2c397d475963a6774e983cfd7db1302dd2456776d22d32f9
7
- data.tar.gz: 0bbd95c1fb47c0d80820f4df59276dc53acf374e26bed9dc457d287ae4d0a25bf6f285150c73c503bc763d3e032918b52a0ca029d73b77817faa426232c4c44d
6
+ metadata.gz: eb37a920f2bd96e4628d637bb5c946c1ba06c806a6aa87e0e8975ea8cd05c3b3c3b11faf93ba2a8ac67ce2c60ba8bfdc461e825a2226c0fcc9072b1f6331b503
7
+ data.tar.gz: ee47479dcc5d58ed396281d1370c9c1e2bfac02716e8229c86ee353ba85576f90e119767176a39e841f26a51b4edca23119e167d184f64e515c6916320f5de4b
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.13"
2
+ VERSION = "2.2.1.14"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "change",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "comments": [
5
5
  "Given an infinite supply of coins with different values, ",
6
6
  "find the smallest number of coins needed to make a desired ",
@@ -51,6 +51,13 @@
51
51
  "target": 21,
52
52
  "expected": [2, 2, 2, 5, 10]
53
53
  },
54
+ {
55
+ "description": "another possible change without unit coins available",
56
+ "property": "findFewestCoins",
57
+ "coins": [4, 5],
58
+ "target": 27,
59
+ "expected": [4, 4, 4, 5, 5, 5]
60
+ },
54
61
  {
55
62
  "description": "no coins make 0 change",
56
63
  "property": "findFewestCoins",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "language": "C#",
3
3
  "active": true,
4
- "blurb": "C# is a modern, object-oriented language with lots of great features, such as type-inference and async/await. The official documentation is very extensive and well-written.",
4
+ "blurb": "C# is a modern, object-oriented language with lots of great features, such as type-inference and async/await. The tooling is excellent, and there is extensive, well-written documentation.",
5
5
  "exercises": [
6
6
  {
7
7
  "uuid": "6c88f46b-5acb-4fae-a6ec-b48ae3f8168f",
@@ -47,25 +47,25 @@
47
47
  ]
48
48
  },
49
49
  {
50
- "uuid": "57f02d0e-7b75-473b-892d-26a7d980c4ce",
51
- "slug": "two-fer",
50
+ "uuid": "29ae7f8e-a009-4175-9350-a8c684c89730",
51
+ "slug": "raindrops",
52
52
  "core": true,
53
- "unlocked_by": "null",
54
- "difficulty": 1,
53
+ "unlocked_by": null,
54
+ "difficulty": 2,
55
55
  "topics": [
56
56
  "Strings",
57
- "Optional values"
57
+ "Filtering"
58
58
  ]
59
59
  },
60
60
  {
61
- "uuid": "29ae7f8e-a009-4175-9350-a8c684c89730",
62
- "slug": "raindrops",
61
+ "uuid": "57f02d0e-7b75-473b-892d-26a7d980c4ce",
62
+ "slug": "two-fer",
63
63
  "core": true,
64
- "unlocked_by": null,
65
- "difficulty": 2,
64
+ "unlocked_by": "null",
65
+ "difficulty": 1,
66
66
  "topics": [
67
- "Text formatting",
68
- "Filtering"
67
+ "Strings",
68
+ "Optional values"
69
69
  ]
70
70
  },
71
71
  {
@@ -318,7 +318,7 @@
318
318
  "unlocked_by": "raindrops",
319
319
  "difficulty": 3,
320
320
  "topics": [
321
- "Text formatting",
321
+ "Strings",
322
322
  "Algorithms"
323
323
  ]
324
324
  },
@@ -338,7 +338,7 @@
338
338
  "uuid": "75a2d5f0-5f5e-46a3-9dd2-3da415690e18",
339
339
  "slug": "protein-translation",
340
340
  "core": false,
341
- "unlocked_by": "hello-world",
341
+ "unlocked_by": "two-fer",
342
342
  "difficulty": 3,
343
343
  "topics": [
344
344
  "Strings",
@@ -384,7 +384,7 @@
384
384
  "unlocked_by": "raindrops",
385
385
  "difficulty": 3,
386
386
  "topics": [
387
- "Text formatting",
387
+ "Strings",
388
388
  "Algorithms"
389
389
  ]
390
390
  },
@@ -424,7 +424,7 @@
424
424
  "uuid": "4b7b65be-f777-4f64-94a0-4f9832f17a52",
425
425
  "slug": "isogram",
426
426
  "core": false,
427
- "unlocked_by": "hello-world",
427
+ "unlocked_by": "two-fer",
428
428
  "difficulty": 3,
429
429
  "topics": [
430
430
  "Strings",
@@ -457,7 +457,7 @@
457
457
  "uuid": "ddfb0a0e-8c58-4b9e-ad62-57d06ef10f5f",
458
458
  "slug": "acronym",
459
459
  "core": false,
460
- "unlocked_by": "hello-world",
460
+ "unlocked_by": "two-fer",
461
461
  "difficulty": 4,
462
462
  "topics": [
463
463
  "Strings",
@@ -517,7 +517,7 @@
517
517
  "unlocked_by": "raindrops",
518
518
  "difficulty": 4,
519
519
  "topics": [
520
- "Text formatting",
520
+ "Strings",
521
521
  "Algorithms"
522
522
  ]
523
523
  },
@@ -552,7 +552,7 @@
552
552
  "unlocked_by": "bob",
553
553
  "difficulty": 4,
554
554
  "topics": [
555
- "Text formatting",
555
+ "Strings",
556
556
  "Algorithms"
557
557
  ]
558
558
  },
@@ -722,7 +722,7 @@
722
722
  "unlocked_by": "allergies",
723
723
  "difficulty": 5,
724
724
  "topics": [
725
- "Text formatting",
725
+ "Strings",
726
726
  "Algorithms"
727
727
  ]
728
728
  },
@@ -733,7 +733,7 @@
733
733
  "unlocked_by": "markdown",
734
734
  "difficulty": 5,
735
735
  "topics": [
736
- "Text formatting",
736
+ "Strings",
737
737
  "Files",
738
738
  "Searching"
739
739
  ]
@@ -813,7 +813,7 @@
813
813
  "difficulty": 5,
814
814
  "topics": [
815
815
  "Globalization",
816
- "Text formatting",
816
+ "Strings",
817
817
  "Refactoring"
818
818
  ]
819
819
  },
@@ -902,7 +902,7 @@
902
902
  "unlocked_by": "kindergarten-garden",
903
903
  "difficulty": 6,
904
904
  "topics": [
905
- "Text formatting",
905
+ "Strings",
906
906
  "Parsing"
907
907
  ]
908
908
  },
@@ -1081,7 +1081,7 @@
1081
1081
  "unlocked_by": "saddle-points",
1082
1082
  "difficulty": 8,
1083
1083
  "topics": [
1084
- "Text formatting",
1084
+ "Strings",
1085
1085
  "Algorithms"
1086
1086
  ]
1087
1087
  },
@@ -1114,8 +1114,7 @@
1114
1114
  "difficulty": 8,
1115
1115
  "topics": [
1116
1116
  "Strings",
1117
- "Transforming",
1118
- "Text formatting"
1117
+ "Transforming"
1119
1118
  ]
1120
1119
  },
1121
1120
  {
@@ -0,0 +1,7 @@
1
+ class HelloWorld
2
+ {
3
+ string Hello()
4
+ {
5
+ return "Hello, world!";
6
+ }
7
+ }
@@ -33,14 +33,14 @@ public static class House
33
33
  "belonged to",
34
34
  ""
35
35
  };
36
-
37
- public static string Rhyme()
36
+
37
+ public static string Verses(int first, int last)
38
38
  {
39
- var numberOfBlocks = Subjects.Length;
40
- return string.Join("\n\n", Enumerable.Range(1, numberOfBlocks).Select(Block));
39
+ var numberOfVerses = last - first + 1;
40
+ return string.Join("\n\n", Enumerable.Range(first, numberOfVerses).Select(Verse));
41
41
  }
42
42
 
43
- private static string Block(int number)
43
+ public static string Verse(int number)
44
44
  {
45
45
  return string.Join("\n", Enumerable.Range(1, number).Reverse().Select(index => Line(number, index)));
46
46
  }
@@ -2,7 +2,12 @@
2
2
 
3
3
  public static class House
4
4
  {
5
- public static string Rhyme()
5
+ public static string Verse(int number)
6
+ {
7
+ throw new NotImplementedException("You need to implement this function.");
8
+ }
9
+
10
+ public static string Verses(int first, int last)
6
11
  {
7
12
  throw new NotImplementedException("You need to implement this function.");
8
13
  }
@@ -1,11 +1,215 @@
1
- using Xunit;
1
+ // This file was auto-generated based on version 1.0.0 of the canonical data.
2
+
3
+ using Xunit;
2
4
 
3
5
  public class HouseTest
4
6
  {
5
7
  [Fact]
6
- public void Rhyme_is_correct()
8
+ public void Verse_one_the_house_that_jack_built()
9
+ {
10
+ var expected = "This is the house that Jack built.";
11
+ Assert.Equal(expected, House.Verse(1));
12
+ }
13
+
14
+ [Fact(Skip = "Remove to run test")]
15
+ public void Verse_two_the_malt_that_lay()
16
+ {
17
+ var expected =
18
+ "This is the malt\n" +
19
+ "that lay in the house that Jack built.";
20
+ Assert.Equal(expected, House.Verse(2));
21
+ }
22
+
23
+ [Fact(Skip = "Remove to run test")]
24
+ public void Verse_three_the_rat_that_ate()
25
+ {
26
+ var expected =
27
+ "This is the rat\n" +
28
+ "that ate the malt\n" +
29
+ "that lay in the house that Jack built.";
30
+ Assert.Equal(expected, House.Verse(3));
31
+ }
32
+
33
+ [Fact(Skip = "Remove to run test")]
34
+ public void Verse_four_the_cat_that_killed()
35
+ {
36
+ var expected =
37
+ "This is the cat\n" +
38
+ "that killed the rat\n" +
39
+ "that ate the malt\n" +
40
+ "that lay in the house that Jack built.";
41
+ Assert.Equal(expected, House.Verse(4));
42
+ }
43
+
44
+ [Fact(Skip = "Remove to run test")]
45
+ public void Verse_five_the_dog_that_worried()
46
+ {
47
+ var expected =
48
+ "This is the dog\n" +
49
+ "that worried the cat\n" +
50
+ "that killed the rat\n" +
51
+ "that ate the malt\n" +
52
+ "that lay in the house that Jack built.";
53
+ Assert.Equal(expected, House.Verse(5));
54
+ }
55
+
56
+ [Fact(Skip = "Remove to run test")]
57
+ public void Verse_six_the_cow_with_the_crumpled_horn()
58
+ {
59
+ var expected =
60
+ "This is the cow with the crumpled horn\n" +
61
+ "that tossed the dog\n" +
62
+ "that worried the cat\n" +
63
+ "that killed the rat\n" +
64
+ "that ate the malt\n" +
65
+ "that lay in the house that Jack built.";
66
+ Assert.Equal(expected, House.Verse(6));
67
+ }
68
+
69
+ [Fact(Skip = "Remove to run test")]
70
+ public void Verse_seven_the_maiden_all_forlorn()
71
+ {
72
+ var expected =
73
+ "This is the maiden all forlorn\n" +
74
+ "that milked the cow with the crumpled horn\n" +
75
+ "that tossed the dog\n" +
76
+ "that worried the cat\n" +
77
+ "that killed the rat\n" +
78
+ "that ate the malt\n" +
79
+ "that lay in the house that Jack built.";
80
+ Assert.Equal(expected, House.Verse(7));
81
+ }
82
+
83
+ [Fact(Skip = "Remove to run test")]
84
+ public void Verse_eight_the_man_all_tattered_and_torn()
85
+ {
86
+ var expected =
87
+ "This is the man all tattered and torn\n" +
88
+ "that kissed the maiden all forlorn\n" +
89
+ "that milked the cow with the crumpled horn\n" +
90
+ "that tossed the dog\n" +
91
+ "that worried the cat\n" +
92
+ "that killed the rat\n" +
93
+ "that ate the malt\n" +
94
+ "that lay in the house that Jack built.";
95
+ Assert.Equal(expected, House.Verse(8));
96
+ }
97
+
98
+ [Fact(Skip = "Remove to run test")]
99
+ public void Verse_nine_the_priest_all_shaven_and_shorn()
100
+ {
101
+ var expected =
102
+ "This is the priest all shaven and shorn\n" +
103
+ "that married the man all tattered and torn\n" +
104
+ "that kissed the maiden all forlorn\n" +
105
+ "that milked the cow with the crumpled horn\n" +
106
+ "that tossed the dog\n" +
107
+ "that worried the cat\n" +
108
+ "that killed the rat\n" +
109
+ "that ate the malt\n" +
110
+ "that lay in the house that Jack built.";
111
+ Assert.Equal(expected, House.Verse(9));
112
+ }
113
+
114
+ [Fact(Skip = "Remove to run test")]
115
+ public void Verse_10_the_rooster_that_crowed_in_the_morn()
116
+ {
117
+ var expected =
118
+ "This is the rooster that crowed in the morn\n" +
119
+ "that woke the priest all shaven and shorn\n" +
120
+ "that married the man all tattered and torn\n" +
121
+ "that kissed the maiden all forlorn\n" +
122
+ "that milked the cow with the crumpled horn\n" +
123
+ "that tossed the dog\n" +
124
+ "that worried the cat\n" +
125
+ "that killed the rat\n" +
126
+ "that ate the malt\n" +
127
+ "that lay in the house that Jack built.";
128
+ Assert.Equal(expected, House.Verse(10));
129
+ }
130
+
131
+ [Fact(Skip = "Remove to run test")]
132
+ public void Verse_11_the_farmer_sowing_his_corn()
133
+ {
134
+ var expected =
135
+ "This is the farmer sowing his corn\n" +
136
+ "that kept the rooster that crowed in the morn\n" +
137
+ "that woke the priest all shaven and shorn\n" +
138
+ "that married the man all tattered and torn\n" +
139
+ "that kissed the maiden all forlorn\n" +
140
+ "that milked the cow with the crumpled horn\n" +
141
+ "that tossed the dog\n" +
142
+ "that worried the cat\n" +
143
+ "that killed the rat\n" +
144
+ "that ate the malt\n" +
145
+ "that lay in the house that Jack built.";
146
+ Assert.Equal(expected, House.Verse(11));
147
+ }
148
+
149
+ [Fact(Skip = "Remove to run test")]
150
+ public void Verse_12_the_horse_and_the_hound_and_the_horn()
151
+ {
152
+ var expected =
153
+ "This is the horse and the hound and the horn\n" +
154
+ "that belonged to the farmer sowing his corn\n" +
155
+ "that kept the rooster that crowed in the morn\n" +
156
+ "that woke the priest all shaven and shorn\n" +
157
+ "that married the man all tattered and torn\n" +
158
+ "that kissed the maiden all forlorn\n" +
159
+ "that milked the cow with the crumpled horn\n" +
160
+ "that tossed the dog\n" +
161
+ "that worried the cat\n" +
162
+ "that killed the rat\n" +
163
+ "that ate the malt\n" +
164
+ "that lay in the house that Jack built.";
165
+ Assert.Equal(expected, House.Verse(12));
166
+ }
167
+
168
+ [Fact(Skip = "Remove to run test")]
169
+ public void Multiple_verses()
7
170
  {
8
- const string expected =
171
+ var expected =
172
+ "This is the cat\n" +
173
+ "that killed the rat\n" +
174
+ "that ate the malt\n" +
175
+ "that lay in the house that Jack built.\n" +
176
+ "\n" +
177
+ "This is the dog\n" +
178
+ "that worried the cat\n" +
179
+ "that killed the rat\n" +
180
+ "that ate the malt\n" +
181
+ "that lay in the house that Jack built.\n" +
182
+ "\n" +
183
+ "This is the cow with the crumpled horn\n" +
184
+ "that tossed the dog\n" +
185
+ "that worried the cat\n" +
186
+ "that killed the rat\n" +
187
+ "that ate the malt\n" +
188
+ "that lay in the house that Jack built.\n" +
189
+ "\n" +
190
+ "This is the maiden all forlorn\n" +
191
+ "that milked the cow with the crumpled horn\n" +
192
+ "that tossed the dog\n" +
193
+ "that worried the cat\n" +
194
+ "that killed the rat\n" +
195
+ "that ate the malt\n" +
196
+ "that lay in the house that Jack built.\n" +
197
+ "\n" +
198
+ "This is the man all tattered and torn\n" +
199
+ "that kissed the maiden all forlorn\n" +
200
+ "that milked the cow with the crumpled horn\n" +
201
+ "that tossed the dog\n" +
202
+ "that worried the cat\n" +
203
+ "that killed the rat\n" +
204
+ "that ate the malt\n" +
205
+ "that lay in the house that Jack built.";
206
+ Assert.Equal(expected, House.Verses(4, 8));
207
+ }
208
+
209
+ [Fact(Skip = "Remove to run test")]
210
+ public void Full_rhyme()
211
+ {
212
+ var expected =
9
213
  "This is the house that Jack built.\n" +
10
214
  "\n" +
11
215
  "This is the malt\n" +
@@ -95,7 +299,6 @@ public void Rhyme_is_correct()
95
299
  "that killed the rat\n" +
96
300
  "that ate the malt\n" +
97
301
  "that lay in the house that Jack built.";
98
-
99
- Assert.Equal(expected, House.Rhyme());
302
+ Assert.Equal(expected, House.Verses(1, 12));
100
303
  }
101
304
  }