trackler 2.0.8.34 → 2.0.8.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/c/exercises/phone-number/src/example.c +6 -6
  4. data/tracks/c/exercises/phone-number/test/test_phone_number.c +50 -5
  5. data/tracks/csharp/exercises/beer-song/BeerSong.cs +2 -2
  6. data/tracks/csharp/exercises/beer-song/BeerSongTest.cs +390 -0
  7. data/tracks/csharp/exercises/beer-song/Example.cs +3 -8
  8. data/tracks/csharp/exercises/wordy/Example.cs +3 -3
  9. data/tracks/csharp/exercises/wordy/Wordy.cs +2 -2
  10. data/tracks/csharp/exercises/wordy/WordyTest.cs +35 -35
  11. data/tracks/csharp/generators/Data/CanonicalDataValue.cs +17 -3
  12. data/tracks/csharp/generators/Exercises/BeerSongExercise.cs +33 -0
  13. data/tracks/csharp/generators/Exercises/EqualityExercise.cs +6 -1
  14. data/tracks/csharp/generators/Exercises/FoodChainExercise.cs +1 -1
  15. data/tracks/csharp/generators/Exercises/HelloWorldExercise.cs +9 -0
  16. data/tracks/csharp/generators/Exercises/NthPrimeExercise.cs +7 -8
  17. data/tracks/csharp/generators/Exercises/WordyExercise.cs +20 -0
  18. data/tracks/csharp/generators/Methods/TestMethodOptions.cs +1 -0
  19. data/tracks/elixir/README.md +1 -1
  20. data/tracks/go/config.json +9 -0
  21. data/tracks/go/exercises/accumulate/accumulate.go +5 -0
  22. data/tracks/go/exercises/change/cases_test.go +83 -0
  23. data/tracks/go/exercises/change/change_test.go +48 -0
  24. data/tracks/go/exercises/change/example.go +153 -0
  25. data/tracks/go/exercises/change/example_gen.go +96 -0
  26. data/tracks/java/exercises/beer-song/src/example/java/BeerSong.java +4 -7
  27. data/tracks/java/exercises/beer-song/src/test/java/BeerSongTest.java +15 -7
  28. data/tracks/julia/img/icon.png +0 -0
  29. data/tracks/julia/img/icon.svg +49 -11
  30. data/tracks/objective-c/exercises/bracket-push/BracketPushExample.h +0 -1
  31. data/tracks/objective-c/exercises/bracket-push/BracketPushExample.m +41 -379
  32. data/tracks/objective-c/exercises/bracket-push/BracketPushTest.m +12 -32
  33. data/tracks/objective-c/exercises/sublist/SublistExample.h +8 -1
  34. data/tracks/objective-c/exercises/sublist/SublistExample.m +27 -42
  35. data/tracks/objective-c/exercises/sublist/SublistTest.m +17 -20
  36. data/tracks/python/exercises/say/say_test.py +16 -11
  37. data/tracks/scala/exercises/pangram/src/test/scala/PangramTest.scala +6 -5
  38. data/tracks/swift/exercises/bob/Sources/BobExample.swift +2 -2
  39. data/tracks/swift/exercises/bob/Tests/BobTests/BobTests.swift +8 -8
  40. metadata +11 -3
  41. data/tracks/csharp/exercises/beer-song/BeerTest.cs +0 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 467e8b1c3c1e08aa0d2a39ab3da213a0d3887255
4
- data.tar.gz: 4ccd48c1a3f3cb53a0cc24d007f192237918ffa1
3
+ metadata.gz: 054faf35a16a669389adcb9bc30f2534bb094f29
4
+ data.tar.gz: 25f6a0ee7eef086e1602b81992e373d413ea6a3c
5
5
  SHA512:
6
- metadata.gz: 64dd3dca50f78d5bcd3986c94dad46d5f0e82769c06d1489295a5c3bae081178c1f77758e197937a704b5041345604df5cd3f2e8ea61dceded2f1f3f8414214e
7
- data.tar.gz: d67de57f391f6180ddbff1fb9086ede70aa7155b51f94942d294c805af4b7bb0783a675d2c8f1cc66d82514e6e3b323d70f993f6d81565e043f8ade560dae4a2
6
+ metadata.gz: 0a576c089311d4e93506f3482dbefa4ce87dda1791c05a1e657ff010f94acc30a2cf711c2d32b7d64f6c3370402771096555d08673926e98bab8a28f311e2f89
7
+ data.tar.gz: 726ca1d529eec0a0977cd87f41c497aa627811f6f15c1b54ae06a5b191df96269debf4e9b4530624ae2a277ed9fc064774b0c7c6db6091ab515da5c2d7b677a6
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.0.8.34"
2
+ VERSION = "2.0.8.35"
3
3
  end
@@ -14,6 +14,7 @@
14
14
  #define EXTENSION_OFFSET (AREA_CODE_LENGTH + EXCHANGE_LENGTH)
15
15
 
16
16
  #define INVALID_NUMBER_RESULT "0000000000"
17
+ #define VALID_NON_DIGIT_CHARS " .-()"
17
18
 
18
19
  static void remove_leading_digit(char *phone_number)
19
20
  {
@@ -25,14 +26,17 @@ static void remove_leading_digit(char *phone_number)
25
26
  char *phone_number_clean(const char *input)
26
27
  {
27
28
  char *output = calloc(VALID_NUMBER_LENGTH + 2, sizeof(char));
28
-
29
29
  size_t j = 0;
30
+
30
31
  for (size_t i = 0; i < strlen(input); i++) {
31
32
  if (isdigit(input[i])) {
32
- if (j > VALID_NUMBER_LENGTH) {
33
+ if (j > VALID_NUMBER_LENGTH + 1) {
33
34
  break;
34
35
  }
35
36
  output[j++] = input[i];
37
+ } else if (strchr(VALID_NON_DIGIT_CHARS, input[i]) == NULL) {
38
+ strcpy(output, INVALID_NUMBER_RESULT);
39
+ return output;
36
40
  }
37
41
  }
38
42
 
@@ -45,7 +49,6 @@ char *phone_number_clean(const char *input)
45
49
  strcpy(output, INVALID_NUMBER_RESULT);
46
50
  }
47
51
  }
48
-
49
52
  return output;
50
53
  }
51
54
 
@@ -53,7 +56,6 @@ char *phone_number_get_area_code(const char *input)
53
56
  {
54
57
  char *output = phone_number_clean(input);
55
58
  output[3] = '\0';
56
-
57
59
  return output;
58
60
  }
59
61
 
@@ -64,8 +66,6 @@ char *phone_number_format(const char *input)
64
66
 
65
67
  sprintf(output, "(%.3s) %.3s-%.4s", cleaned_input,
66
68
  &cleaned_input[AREA_CODE_LENGTH], &cleaned_input[EXTENSION_OFFSET]);
67
-
68
69
  free(cleaned_input);
69
-
70
70
  return output;
71
71
  }
@@ -27,6 +27,22 @@ void test_cleans_numbers_with_dots(void)
27
27
  test_phone_number_clean(input, expected);
28
28
  }
29
29
 
30
+ void test_cleans_numbers_with_multiple_spaces(void)
31
+ {
32
+ const char input[] = "123 456 7890 ";
33
+ const char expected[] = "1234567890";
34
+
35
+ test_phone_number_clean(input, expected);
36
+ }
37
+
38
+ void test_invalid_when_9_digits(void)
39
+ {
40
+ const char input[] = "123456789";
41
+ const char expected[] = "0000000000";
42
+
43
+ test_phone_number_clean(input, expected);
44
+ }
45
+
30
46
  void test_valid_when_11_digits_and_first_digit_is_1(void)
31
47
  {
32
48
  const char input[] = "11234567890";
@@ -35,7 +51,7 @@ void test_valid_when_11_digits_and_first_digit_is_1(void)
35
51
  test_phone_number_clean(input, expected);
36
52
  }
37
53
 
38
- void test_invalid_when_11_digits(void)
54
+ void test_invalid_when_11_digits_and_first_digit_not_1(void)
39
55
  {
40
56
  const char input[] = "21234567890";
41
57
  const char expected[] = "0000000000";
@@ -43,9 +59,33 @@ void test_invalid_when_11_digits(void)
43
59
  test_phone_number_clean(input, expected);
44
60
  }
45
61
 
46
- void test_invalid_when_9_digits(void)
62
+ void test_invalid_when_more_than_11_digits(void)
47
63
  {
48
- const char input[] = "123456789";
64
+ const char input[] = "121234567890";
65
+ const char expected[] = "0000000000";
66
+
67
+ test_phone_number_clean(input, expected);
68
+ }
69
+
70
+ void test_invalid_with_letters(void)
71
+ {
72
+ const char input[] = "123-abc-7890";
73
+ const char expected[] = "0000000000";
74
+
75
+ test_phone_number_clean(input, expected);
76
+ }
77
+
78
+ void test_invalid_with_punctuations(void)
79
+ {
80
+ const char input[] = "123-@:!-7890";
81
+ const char expected[] = "0000000000";
82
+
83
+ test_phone_number_clean(input, expected);
84
+ }
85
+
86
+ void test_invalid_with_right_number_of_digits_but_letters_mixed_in(void)
87
+ {
88
+ const char input[] = "1a2b3c4d5e6f7g8h9i0j";
49
89
  const char expected[] = "0000000000";
50
90
 
51
91
  test_phone_number_clean(input, expected);
@@ -96,9 +136,14 @@ int main(void)
96
136
 
97
137
  RUN_TEST(test_cleans_parens_dashes_and_spaces_from_the_number);
98
138
  RUN_TEST(test_cleans_numbers_with_dots);
99
- RUN_TEST(test_valid_when_11_digits_and_first_digit_is_1);
100
- RUN_TEST(test_invalid_when_11_digits);
139
+ RUN_TEST(test_cleans_numbers_with_multiple_spaces);
101
140
  RUN_TEST(test_invalid_when_9_digits);
141
+ RUN_TEST(test_valid_when_11_digits_and_first_digit_is_1);
142
+ RUN_TEST(test_invalid_when_11_digits_and_first_digit_not_1);
143
+ RUN_TEST(test_invalid_when_more_than_11_digits);
144
+ RUN_TEST(test_invalid_with_letters);
145
+ RUN_TEST(test_invalid_with_punctuations);
146
+ RUN_TEST(test_invalid_with_right_number_of_digits_but_letters_mixed_in);
102
147
  RUN_TEST(test_returns_area_code);
103
148
  RUN_TEST(test_formats_a_number);
104
149
  RUN_TEST(test_cleans_number_before_formatting);
@@ -1,13 +1,13 @@
1
1
  using System;
2
2
 
3
- public static class Beer
3
+ public static class BeerSong
4
4
  {
5
5
  public static string Verse(int number)
6
6
  {
7
7
  throw new NotImplementedException("You need to implement this function.");
8
8
  }
9
9
 
10
- public static string Sing(int start, int stop)
10
+ public static string Verses(int begin, int end)
11
11
  {
12
12
  throw new NotImplementedException("You need to implement this function.");
13
13
  }
@@ -0,0 +1,390 @@
1
+ using Xunit;
2
+
3
+ public class BeerSongTest
4
+ {
5
+ [Fact]
6
+ public void First_generic_verse()
7
+ {
8
+ var expected =
9
+ "99 bottles of beer on the wall, 99 bottles of beer.\n"+
10
+ "Take one down and pass it around, 98 bottles of beer on the wall.\n"+
11
+ "";
12
+ Assert.Equal(expected, BeerSong.Verse(99));
13
+ }
14
+
15
+ [Fact]
16
+ public void Last_generic_verse()
17
+ {
18
+ var expected =
19
+ "3 bottles of beer on the wall, 3 bottles of beer.\n"+
20
+ "Take one down and pass it around, 2 bottles of beer on the wall.\n"+
21
+ "";
22
+ Assert.Equal(expected, BeerSong.Verse(3));
23
+ }
24
+
25
+ [Fact]
26
+ public void Verse_2()
27
+ {
28
+ var expected =
29
+ "2 bottles of beer on the wall, 2 bottles of beer.\n"+
30
+ "Take one down and pass it around, 1 bottle of beer on the wall.\n"+
31
+ "";
32
+ Assert.Equal(expected, BeerSong.Verse(2));
33
+ }
34
+
35
+ [Fact]
36
+ public void Verse_1()
37
+ {
38
+ var expected =
39
+ "1 bottle of beer on the wall, 1 bottle of beer.\n"+
40
+ "Take it down and pass it around, no more bottles of beer on the wall.\n"+
41
+ "";
42
+ Assert.Equal(expected, BeerSong.Verse(1));
43
+ }
44
+
45
+ [Fact]
46
+ public void Verse_0()
47
+ {
48
+ var expected =
49
+ "No more bottles of beer on the wall, no more bottles of beer.\n"+
50
+ "Go to the store and buy some more, 99 bottles of beer on the wall.\n"+
51
+ "";
52
+ Assert.Equal(expected, BeerSong.Verse(0));
53
+ }
54
+
55
+ [Fact]
56
+ public void First_two_verses()
57
+ {
58
+ var expected =
59
+ "99 bottles of beer on the wall, 99 bottles of beer.\n"+
60
+ "Take one down and pass it around, 98 bottles of beer on the wall.\n"+
61
+ "\n"+
62
+ "98 bottles of beer on the wall, 98 bottles of beer.\n"+
63
+ "Take one down and pass it around, 97 bottles of beer on the wall.\n"+
64
+ "";
65
+ Assert.Equal(expected, BeerSong.Verses(99, 98));
66
+ }
67
+
68
+ [Fact]
69
+ public void Last_three_verses()
70
+ {
71
+ var expected =
72
+ "2 bottles of beer on the wall, 2 bottles of beer.\n"+
73
+ "Take one down and pass it around, 1 bottle of beer on the wall.\n"+
74
+ "\n"+
75
+ "1 bottle of beer on the wall, 1 bottle of beer.\n"+
76
+ "Take it down and pass it around, no more bottles of beer on the wall.\n"+
77
+ "\n"+
78
+ "No more bottles of beer on the wall, no more bottles of beer.\n"+
79
+ "Go to the store and buy some more, 99 bottles of beer on the wall.\n"+
80
+ "";
81
+ Assert.Equal(expected, BeerSong.Verses(2, 0));
82
+ }
83
+
84
+ [Fact]
85
+ public void All_verses()
86
+ {
87
+ var expected =
88
+ "99 bottles of beer on the wall, 99 bottles of beer.\n"+
89
+ "Take one down and pass it around, 98 bottles of beer on the wall.\n"+
90
+ "\n"+
91
+ "98 bottles of beer on the wall, 98 bottles of beer.\n"+
92
+ "Take one down and pass it around, 97 bottles of beer on the wall.\n"+
93
+ "\n"+
94
+ "97 bottles of beer on the wall, 97 bottles of beer.\n"+
95
+ "Take one down and pass it around, 96 bottles of beer on the wall.\n"+
96
+ "\n"+
97
+ "96 bottles of beer on the wall, 96 bottles of beer.\n"+
98
+ "Take one down and pass it around, 95 bottles of beer on the wall.\n"+
99
+ "\n"+
100
+ "95 bottles of beer on the wall, 95 bottles of beer.\n"+
101
+ "Take one down and pass it around, 94 bottles of beer on the wall.\n"+
102
+ "\n"+
103
+ "94 bottles of beer on the wall, 94 bottles of beer.\n"+
104
+ "Take one down and pass it around, 93 bottles of beer on the wall.\n"+
105
+ "\n"+
106
+ "93 bottles of beer on the wall, 93 bottles of beer.\n"+
107
+ "Take one down and pass it around, 92 bottles of beer on the wall.\n"+
108
+ "\n"+
109
+ "92 bottles of beer on the wall, 92 bottles of beer.\n"+
110
+ "Take one down and pass it around, 91 bottles of beer on the wall.\n"+
111
+ "\n"+
112
+ "91 bottles of beer on the wall, 91 bottles of beer.\n"+
113
+ "Take one down and pass it around, 90 bottles of beer on the wall.\n"+
114
+ "\n"+
115
+ "90 bottles of beer on the wall, 90 bottles of beer.\n"+
116
+ "Take one down and pass it around, 89 bottles of beer on the wall.\n"+
117
+ "\n"+
118
+ "89 bottles of beer on the wall, 89 bottles of beer.\n"+
119
+ "Take one down and pass it around, 88 bottles of beer on the wall.\n"+
120
+ "\n"+
121
+ "88 bottles of beer on the wall, 88 bottles of beer.\n"+
122
+ "Take one down and pass it around, 87 bottles of beer on the wall.\n"+
123
+ "\n"+
124
+ "87 bottles of beer on the wall, 87 bottles of beer.\n"+
125
+ "Take one down and pass it around, 86 bottles of beer on the wall.\n"+
126
+ "\n"+
127
+ "86 bottles of beer on the wall, 86 bottles of beer.\n"+
128
+ "Take one down and pass it around, 85 bottles of beer on the wall.\n"+
129
+ "\n"+
130
+ "85 bottles of beer on the wall, 85 bottles of beer.\n"+
131
+ "Take one down and pass it around, 84 bottles of beer on the wall.\n"+
132
+ "\n"+
133
+ "84 bottles of beer on the wall, 84 bottles of beer.\n"+
134
+ "Take one down and pass it around, 83 bottles of beer on the wall.\n"+
135
+ "\n"+
136
+ "83 bottles of beer on the wall, 83 bottles of beer.\n"+
137
+ "Take one down and pass it around, 82 bottles of beer on the wall.\n"+
138
+ "\n"+
139
+ "82 bottles of beer on the wall, 82 bottles of beer.\n"+
140
+ "Take one down and pass it around, 81 bottles of beer on the wall.\n"+
141
+ "\n"+
142
+ "81 bottles of beer on the wall, 81 bottles of beer.\n"+
143
+ "Take one down and pass it around, 80 bottles of beer on the wall.\n"+
144
+ "\n"+
145
+ "80 bottles of beer on the wall, 80 bottles of beer.\n"+
146
+ "Take one down and pass it around, 79 bottles of beer on the wall.\n"+
147
+ "\n"+
148
+ "79 bottles of beer on the wall, 79 bottles of beer.\n"+
149
+ "Take one down and pass it around, 78 bottles of beer on the wall.\n"+
150
+ "\n"+
151
+ "78 bottles of beer on the wall, 78 bottles of beer.\n"+
152
+ "Take one down and pass it around, 77 bottles of beer on the wall.\n"+
153
+ "\n"+
154
+ "77 bottles of beer on the wall, 77 bottles of beer.\n"+
155
+ "Take one down and pass it around, 76 bottles of beer on the wall.\n"+
156
+ "\n"+
157
+ "76 bottles of beer on the wall, 76 bottles of beer.\n"+
158
+ "Take one down and pass it around, 75 bottles of beer on the wall.\n"+
159
+ "\n"+
160
+ "75 bottles of beer on the wall, 75 bottles of beer.\n"+
161
+ "Take one down and pass it around, 74 bottles of beer on the wall.\n"+
162
+ "\n"+
163
+ "74 bottles of beer on the wall, 74 bottles of beer.\n"+
164
+ "Take one down and pass it around, 73 bottles of beer on the wall.\n"+
165
+ "\n"+
166
+ "73 bottles of beer on the wall, 73 bottles of beer.\n"+
167
+ "Take one down and pass it around, 72 bottles of beer on the wall.\n"+
168
+ "\n"+
169
+ "72 bottles of beer on the wall, 72 bottles of beer.\n"+
170
+ "Take one down and pass it around, 71 bottles of beer on the wall.\n"+
171
+ "\n"+
172
+ "71 bottles of beer on the wall, 71 bottles of beer.\n"+
173
+ "Take one down and pass it around, 70 bottles of beer on the wall.\n"+
174
+ "\n"+
175
+ "70 bottles of beer on the wall, 70 bottles of beer.\n"+
176
+ "Take one down and pass it around, 69 bottles of beer on the wall.\n"+
177
+ "\n"+
178
+ "69 bottles of beer on the wall, 69 bottles of beer.\n"+
179
+ "Take one down and pass it around, 68 bottles of beer on the wall.\n"+
180
+ "\n"+
181
+ "68 bottles of beer on the wall, 68 bottles of beer.\n"+
182
+ "Take one down and pass it around, 67 bottles of beer on the wall.\n"+
183
+ "\n"+
184
+ "67 bottles of beer on the wall, 67 bottles of beer.\n"+
185
+ "Take one down and pass it around, 66 bottles of beer on the wall.\n"+
186
+ "\n"+
187
+ "66 bottles of beer on the wall, 66 bottles of beer.\n"+
188
+ "Take one down and pass it around, 65 bottles of beer on the wall.\n"+
189
+ "\n"+
190
+ "65 bottles of beer on the wall, 65 bottles of beer.\n"+
191
+ "Take one down and pass it around, 64 bottles of beer on the wall.\n"+
192
+ "\n"+
193
+ "64 bottles of beer on the wall, 64 bottles of beer.\n"+
194
+ "Take one down and pass it around, 63 bottles of beer on the wall.\n"+
195
+ "\n"+
196
+ "63 bottles of beer on the wall, 63 bottles of beer.\n"+
197
+ "Take one down and pass it around, 62 bottles of beer on the wall.\n"+
198
+ "\n"+
199
+ "62 bottles of beer on the wall, 62 bottles of beer.\n"+
200
+ "Take one down and pass it around, 61 bottles of beer on the wall.\n"+
201
+ "\n"+
202
+ "61 bottles of beer on the wall, 61 bottles of beer.\n"+
203
+ "Take one down and pass it around, 60 bottles of beer on the wall.\n"+
204
+ "\n"+
205
+ "60 bottles of beer on the wall, 60 bottles of beer.\n"+
206
+ "Take one down and pass it around, 59 bottles of beer on the wall.\n"+
207
+ "\n"+
208
+ "59 bottles of beer on the wall, 59 bottles of beer.\n"+
209
+ "Take one down and pass it around, 58 bottles of beer on the wall.\n"+
210
+ "\n"+
211
+ "58 bottles of beer on the wall, 58 bottles of beer.\n"+
212
+ "Take one down and pass it around, 57 bottles of beer on the wall.\n"+
213
+ "\n"+
214
+ "57 bottles of beer on the wall, 57 bottles of beer.\n"+
215
+ "Take one down and pass it around, 56 bottles of beer on the wall.\n"+
216
+ "\n"+
217
+ "56 bottles of beer on the wall, 56 bottles of beer.\n"+
218
+ "Take one down and pass it around, 55 bottles of beer on the wall.\n"+
219
+ "\n"+
220
+ "55 bottles of beer on the wall, 55 bottles of beer.\n"+
221
+ "Take one down and pass it around, 54 bottles of beer on the wall.\n"+
222
+ "\n"+
223
+ "54 bottles of beer on the wall, 54 bottles of beer.\n"+
224
+ "Take one down and pass it around, 53 bottles of beer on the wall.\n"+
225
+ "\n"+
226
+ "53 bottles of beer on the wall, 53 bottles of beer.\n"+
227
+ "Take one down and pass it around, 52 bottles of beer on the wall.\n"+
228
+ "\n"+
229
+ "52 bottles of beer on the wall, 52 bottles of beer.\n"+
230
+ "Take one down and pass it around, 51 bottles of beer on the wall.\n"+
231
+ "\n"+
232
+ "51 bottles of beer on the wall, 51 bottles of beer.\n"+
233
+ "Take one down and pass it around, 50 bottles of beer on the wall.\n"+
234
+ "\n"+
235
+ "50 bottles of beer on the wall, 50 bottles of beer.\n"+
236
+ "Take one down and pass it around, 49 bottles of beer on the wall.\n"+
237
+ "\n"+
238
+ "49 bottles of beer on the wall, 49 bottles of beer.\n"+
239
+ "Take one down and pass it around, 48 bottles of beer on the wall.\n"+
240
+ "\n"+
241
+ "48 bottles of beer on the wall, 48 bottles of beer.\n"+
242
+ "Take one down and pass it around, 47 bottles of beer on the wall.\n"+
243
+ "\n"+
244
+ "47 bottles of beer on the wall, 47 bottles of beer.\n"+
245
+ "Take one down and pass it around, 46 bottles of beer on the wall.\n"+
246
+ "\n"+
247
+ "46 bottles of beer on the wall, 46 bottles of beer.\n"+
248
+ "Take one down and pass it around, 45 bottles of beer on the wall.\n"+
249
+ "\n"+
250
+ "45 bottles of beer on the wall, 45 bottles of beer.\n"+
251
+ "Take one down and pass it around, 44 bottles of beer on the wall.\n"+
252
+ "\n"+
253
+ "44 bottles of beer on the wall, 44 bottles of beer.\n"+
254
+ "Take one down and pass it around, 43 bottles of beer on the wall.\n"+
255
+ "\n"+
256
+ "43 bottles of beer on the wall, 43 bottles of beer.\n"+
257
+ "Take one down and pass it around, 42 bottles of beer on the wall.\n"+
258
+ "\n"+
259
+ "42 bottles of beer on the wall, 42 bottles of beer.\n"+
260
+ "Take one down and pass it around, 41 bottles of beer on the wall.\n"+
261
+ "\n"+
262
+ "41 bottles of beer on the wall, 41 bottles of beer.\n"+
263
+ "Take one down and pass it around, 40 bottles of beer on the wall.\n"+
264
+ "\n"+
265
+ "40 bottles of beer on the wall, 40 bottles of beer.\n"+
266
+ "Take one down and pass it around, 39 bottles of beer on the wall.\n"+
267
+ "\n"+
268
+ "39 bottles of beer on the wall, 39 bottles of beer.\n"+
269
+ "Take one down and pass it around, 38 bottles of beer on the wall.\n"+
270
+ "\n"+
271
+ "38 bottles of beer on the wall, 38 bottles of beer.\n"+
272
+ "Take one down and pass it around, 37 bottles of beer on the wall.\n"+
273
+ "\n"+
274
+ "37 bottles of beer on the wall, 37 bottles of beer.\n"+
275
+ "Take one down and pass it around, 36 bottles of beer on the wall.\n"+
276
+ "\n"+
277
+ "36 bottles of beer on the wall, 36 bottles of beer.\n"+
278
+ "Take one down and pass it around, 35 bottles of beer on the wall.\n"+
279
+ "\n"+
280
+ "35 bottles of beer on the wall, 35 bottles of beer.\n"+
281
+ "Take one down and pass it around, 34 bottles of beer on the wall.\n"+
282
+ "\n"+
283
+ "34 bottles of beer on the wall, 34 bottles of beer.\n"+
284
+ "Take one down and pass it around, 33 bottles of beer on the wall.\n"+
285
+ "\n"+
286
+ "33 bottles of beer on the wall, 33 bottles of beer.\n"+
287
+ "Take one down and pass it around, 32 bottles of beer on the wall.\n"+
288
+ "\n"+
289
+ "32 bottles of beer on the wall, 32 bottles of beer.\n"+
290
+ "Take one down and pass it around, 31 bottles of beer on the wall.\n"+
291
+ "\n"+
292
+ "31 bottles of beer on the wall, 31 bottles of beer.\n"+
293
+ "Take one down and pass it around, 30 bottles of beer on the wall.\n"+
294
+ "\n"+
295
+ "30 bottles of beer on the wall, 30 bottles of beer.\n"+
296
+ "Take one down and pass it around, 29 bottles of beer on the wall.\n"+
297
+ "\n"+
298
+ "29 bottles of beer on the wall, 29 bottles of beer.\n"+
299
+ "Take one down and pass it around, 28 bottles of beer on the wall.\n"+
300
+ "\n"+
301
+ "28 bottles of beer on the wall, 28 bottles of beer.\n"+
302
+ "Take one down and pass it around, 27 bottles of beer on the wall.\n"+
303
+ "\n"+
304
+ "27 bottles of beer on the wall, 27 bottles of beer.\n"+
305
+ "Take one down and pass it around, 26 bottles of beer on the wall.\n"+
306
+ "\n"+
307
+ "26 bottles of beer on the wall, 26 bottles of beer.\n"+
308
+ "Take one down and pass it around, 25 bottles of beer on the wall.\n"+
309
+ "\n"+
310
+ "25 bottles of beer on the wall, 25 bottles of beer.\n"+
311
+ "Take one down and pass it around, 24 bottles of beer on the wall.\n"+
312
+ "\n"+
313
+ "24 bottles of beer on the wall, 24 bottles of beer.\n"+
314
+ "Take one down and pass it around, 23 bottles of beer on the wall.\n"+
315
+ "\n"+
316
+ "23 bottles of beer on the wall, 23 bottles of beer.\n"+
317
+ "Take one down and pass it around, 22 bottles of beer on the wall.\n"+
318
+ "\n"+
319
+ "22 bottles of beer on the wall, 22 bottles of beer.\n"+
320
+ "Take one down and pass it around, 21 bottles of beer on the wall.\n"+
321
+ "\n"+
322
+ "21 bottles of beer on the wall, 21 bottles of beer.\n"+
323
+ "Take one down and pass it around, 20 bottles of beer on the wall.\n"+
324
+ "\n"+
325
+ "20 bottles of beer on the wall, 20 bottles of beer.\n"+
326
+ "Take one down and pass it around, 19 bottles of beer on the wall.\n"+
327
+ "\n"+
328
+ "19 bottles of beer on the wall, 19 bottles of beer.\n"+
329
+ "Take one down and pass it around, 18 bottles of beer on the wall.\n"+
330
+ "\n"+
331
+ "18 bottles of beer on the wall, 18 bottles of beer.\n"+
332
+ "Take one down and pass it around, 17 bottles of beer on the wall.\n"+
333
+ "\n"+
334
+ "17 bottles of beer on the wall, 17 bottles of beer.\n"+
335
+ "Take one down and pass it around, 16 bottles of beer on the wall.\n"+
336
+ "\n"+
337
+ "16 bottles of beer on the wall, 16 bottles of beer.\n"+
338
+ "Take one down and pass it around, 15 bottles of beer on the wall.\n"+
339
+ "\n"+
340
+ "15 bottles of beer on the wall, 15 bottles of beer.\n"+
341
+ "Take one down and pass it around, 14 bottles of beer on the wall.\n"+
342
+ "\n"+
343
+ "14 bottles of beer on the wall, 14 bottles of beer.\n"+
344
+ "Take one down and pass it around, 13 bottles of beer on the wall.\n"+
345
+ "\n"+
346
+ "13 bottles of beer on the wall, 13 bottles of beer.\n"+
347
+ "Take one down and pass it around, 12 bottles of beer on the wall.\n"+
348
+ "\n"+
349
+ "12 bottles of beer on the wall, 12 bottles of beer.\n"+
350
+ "Take one down and pass it around, 11 bottles of beer on the wall.\n"+
351
+ "\n"+
352
+ "11 bottles of beer on the wall, 11 bottles of beer.\n"+
353
+ "Take one down and pass it around, 10 bottles of beer on the wall.\n"+
354
+ "\n"+
355
+ "10 bottles of beer on the wall, 10 bottles of beer.\n"+
356
+ "Take one down and pass it around, 9 bottles of beer on the wall.\n"+
357
+ "\n"+
358
+ "9 bottles of beer on the wall, 9 bottles of beer.\n"+
359
+ "Take one down and pass it around, 8 bottles of beer on the wall.\n"+
360
+ "\n"+
361
+ "8 bottles of beer on the wall, 8 bottles of beer.\n"+
362
+ "Take one down and pass it around, 7 bottles of beer on the wall.\n"+
363
+ "\n"+
364
+ "7 bottles of beer on the wall, 7 bottles of beer.\n"+
365
+ "Take one down and pass it around, 6 bottles of beer on the wall.\n"+
366
+ "\n"+
367
+ "6 bottles of beer on the wall, 6 bottles of beer.\n"+
368
+ "Take one down and pass it around, 5 bottles of beer on the wall.\n"+
369
+ "\n"+
370
+ "5 bottles of beer on the wall, 5 bottles of beer.\n"+
371
+ "Take one down and pass it around, 4 bottles of beer on the wall.\n"+
372
+ "\n"+
373
+ "4 bottles of beer on the wall, 4 bottles of beer.\n"+
374
+ "Take one down and pass it around, 3 bottles of beer on the wall.\n"+
375
+ "\n"+
376
+ "3 bottles of beer on the wall, 3 bottles of beer.\n"+
377
+ "Take one down and pass it around, 2 bottles of beer on the wall.\n"+
378
+ "\n"+
379
+ "2 bottles of beer on the wall, 2 bottles of beer.\n"+
380
+ "Take one down and pass it around, 1 bottle of beer on the wall.\n"+
381
+ "\n"+
382
+ "1 bottle of beer on the wall, 1 bottle of beer.\n"+
383
+ "Take it down and pass it around, no more bottles of beer on the wall.\n"+
384
+ "\n"+
385
+ "No more bottles of beer on the wall, no more bottles of beer.\n"+
386
+ "Go to the store and buy some more, 99 bottles of beer on the wall.\n"+
387
+ "";
388
+ Assert.Equal(expected, BeerSong.Verses(99, 0));
389
+ }
390
+ }