trackler 2.2.1.46 → 2.2.1.47

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 (224) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/nucleotide-count/canonical-data.json +7 -7
  4. data/tracks/c/README.md +1 -1
  5. data/tracks/c/docs/SNIPPET.txt +2 -3
  6. data/tracks/c/exercises/acronym/test/test_acronym.c +8 -0
  7. data/tracks/c/exercises/all-your-base/test/test_all_your_base.c +8 -0
  8. data/tracks/c/exercises/allergies/test/test_allergies.c +8 -0
  9. data/tracks/c/exercises/anagram/test/test_anagram.c +8 -0
  10. data/tracks/c/exercises/atbash-cipher/test/test_atbash_cipher.c +8 -0
  11. data/tracks/c/exercises/beer-song/src/example.c +23 -22
  12. data/tracks/c/exercises/beer-song/src/example.h +3 -3
  13. data/tracks/c/exercises/beer-song/test/test_beer_song.c +8 -0
  14. data/tracks/c/exercises/binary-search/test/test_binary_search.c +8 -0
  15. data/tracks/c/exercises/binary/test/test_binary.c +8 -0
  16. data/tracks/c/exercises/bob/test/test_bob.c +8 -0
  17. data/tracks/c/exercises/clock/test/test_clock.c +8 -0
  18. data/tracks/c/exercises/difference-of-squares/test/test_difference_of_squares.c +8 -0
  19. data/tracks/c/exercises/gigasecond/test/test_gigasecond.c +8 -0
  20. data/tracks/c/exercises/grains/test/test_grains.c +8 -0
  21. data/tracks/c/exercises/hamming/test/test_hamming.c +8 -0
  22. data/tracks/c/exercises/hello-world/src/example.c +0 -2
  23. data/tracks/c/exercises/hello-world/test/test_hello_world.c +8 -0
  24. data/tracks/c/exercises/isogram/test/test_isogram.c +8 -0
  25. data/tracks/c/exercises/largest-series-product/test/test_largest_series_product.c +8 -0
  26. data/tracks/c/exercises/leap/test/test_leap.c +8 -0
  27. data/tracks/c/exercises/meetup/test/test_meetup.c +8 -0
  28. data/tracks/c/exercises/nth-prime/test/test_nth_prime.c +8 -0
  29. data/tracks/c/exercises/nucleotide-count/test/test_nucleotide_count.c +8 -0
  30. data/tracks/c/exercises/palindrome-products/test/test_palindrome_products.c +8 -0
  31. data/tracks/c/exercises/pangram/test/test_pangram.c +8 -0
  32. data/tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c +8 -0
  33. data/tracks/c/exercises/perfect-numbers/src/example.c +4 -4
  34. data/tracks/c/exercises/perfect-numbers/src/example.h +4 -4
  35. data/tracks/c/exercises/perfect-numbers/src/perfect_numbers.h +4 -4
  36. data/tracks/c/exercises/perfect-numbers/test/test_perfect_numbers.c +23 -13
  37. data/tracks/c/exercises/phone-number/test/test_phone_number.c +8 -0
  38. data/tracks/c/exercises/raindrops/test/test_raindrops.c +5 -1
  39. data/tracks/c/exercises/react/src/example.c +8 -8
  40. data/tracks/c/exercises/react/test/test_react.c +8 -0
  41. data/tracks/c/exercises/rna-transcription/test/test_rna_transcription.c +8 -0
  42. data/tracks/c/exercises/robot-simulator/src/example.c +12 -12
  43. data/tracks/c/exercises/robot-simulator/src/robot_simulator.h +11 -11
  44. data/tracks/c/exercises/robot-simulator/test/test_robot_simulator.c +33 -25
  45. data/tracks/c/exercises/roman-numerals/test/test_roman_numerals.c +8 -0
  46. data/tracks/c/exercises/scrabble-score/test/test_scrabble_score.c +8 -0
  47. data/tracks/c/exercises/series/test/test_series.c +8 -0
  48. data/tracks/c/exercises/sieve/test/test_sieve.c +8 -0
  49. data/tracks/c/exercises/space-age/src/example.h +8 -8
  50. data/tracks/c/exercises/space-age/test/test_space_age.c +16 -8
  51. data/tracks/c/exercises/sum-of-multiples/test/test_sum_of_multiples.c +8 -0
  52. data/tracks/c/exercises/triangle/test/test_triangle.c +8 -0
  53. data/tracks/c/exercises/word-count/test/test_word_count.c +8 -0
  54. data/tracks/cfml/config.json +8 -0
  55. data/tracks/cfml/exercises/anagram/.meta/HINTS.md +0 -0
  56. data/tracks/cfml/exercises/anagram/Anagram.cfc +13 -0
  57. data/tracks/cfml/exercises/anagram/AnagramTest.cfc +79 -0
  58. data/tracks/cfml/exercises/anagram/README.md +29 -0
  59. data/tracks/cfml/exercises/anagram/Solution.cfc +42 -0
  60. data/tracks/cfml/exercises/anagram/SolutionTest.cfc +7 -0
  61. data/tracks/cfml/exercises/anagram/TestRunner.cfc +103 -0
  62. data/tracks/cfml/exercises/anagram/box.json +8 -0
  63. data/tracks/cfml/exercises/anagram/index.cfm +37 -0
  64. data/tracks/common-lisp/config.json +5 -5
  65. data/tracks/csharp/exercises/two-bucket/Example.cs +53 -79
  66. data/tracks/csharp/exercises/two-bucket/TwoBucketTest.cs +2 -2
  67. data/tracks/csharp/generators/Exercises/QueenAttack.cs +3 -3
  68. data/tracks/dart/exercises/leap/test/leap_test.dart +1 -1
  69. data/tracks/delphi/exercises/hamming/uHammingTests.pas +2 -2
  70. data/tracks/delphi/exercises/leap/uLeapTests.pas +11 -38
  71. data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountExample.pas +1 -1
  72. data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountTest.pas +31 -55
  73. data/tracks/ecmascript/config.json +31 -0
  74. data/tracks/ecmascript/config/maintainers.json +5 -5
  75. data/tracks/ecmascript/exercises/accumulate/package.json +1 -1
  76. data/tracks/ecmascript/exercises/acronym/package.json +1 -1
  77. data/tracks/ecmascript/exercises/all-your-base/package.json +1 -1
  78. data/tracks/ecmascript/exercises/allergies/package.json +1 -1
  79. data/tracks/ecmascript/exercises/alphametics/package.json +1 -1
  80. data/tracks/ecmascript/exercises/anagram/package.json +1 -1
  81. data/tracks/ecmascript/exercises/atbash-cipher/package.json +1 -1
  82. data/tracks/ecmascript/exercises/beer-song/package.json +1 -1
  83. data/tracks/ecmascript/exercises/binary-search-tree/package.json +1 -1
  84. data/tracks/ecmascript/exercises/binary-search/package.json +1 -1
  85. data/tracks/ecmascript/exercises/binary/package.json +1 -1
  86. data/tracks/ecmascript/exercises/bob/package.json +1 -1
  87. data/tracks/ecmascript/exercises/bracket-push/package.json +1 -1
  88. data/tracks/ecmascript/exercises/circular-buffer/package.json +1 -1
  89. data/tracks/ecmascript/exercises/clock/package.json +1 -1
  90. data/tracks/ecmascript/exercises/collatz-conjecture/README.md +59 -0
  91. data/tracks/ecmascript/exercises/collatz-conjecture/collatz-conjecture.spec.js +31 -0
  92. data/tracks/ecmascript/exercises/collatz-conjecture/example.js +14 -0
  93. data/tracks/ecmascript/exercises/collatz-conjecture/package.json +69 -0
  94. data/tracks/ecmascript/exercises/connect/package.json +1 -1
  95. data/tracks/ecmascript/exercises/crypto-square/package.json +1 -1
  96. data/tracks/ecmascript/exercises/custom-set/package.json +1 -1
  97. data/tracks/ecmascript/exercises/diamond/package.json +1 -1
  98. data/tracks/ecmascript/exercises/difference-of-squares/package.json +1 -1
  99. data/tracks/ecmascript/exercises/diffie-hellman/package.json +1 -1
  100. data/tracks/ecmascript/exercises/etl/package.json +1 -1
  101. data/tracks/ecmascript/exercises/flatten-array/package.json +1 -1
  102. data/tracks/ecmascript/exercises/food-chain/package.json +1 -1
  103. data/tracks/ecmascript/exercises/gigasecond/package.json +1 -1
  104. data/tracks/ecmascript/exercises/grade-school/package.json +1 -1
  105. data/tracks/ecmascript/exercises/grains/package.json +1 -1
  106. data/tracks/ecmascript/exercises/hamming/package.json +1 -1
  107. data/tracks/ecmascript/exercises/hello-world/package.json +1 -1
  108. data/tracks/ecmascript/exercises/hexadecimal/package.json +1 -1
  109. data/tracks/ecmascript/exercises/isogram/package.json +1 -1
  110. data/tracks/ecmascript/exercises/kindergarten-garden/package.json +1 -1
  111. data/tracks/ecmascript/exercises/largest-series-product/package.json +1 -1
  112. data/tracks/ecmascript/exercises/leap/package.json +1 -1
  113. data/tracks/ecmascript/exercises/linked-list/package.json +1 -1
  114. data/tracks/ecmascript/exercises/list-ops/package.json +1 -1
  115. data/tracks/ecmascript/exercises/luhn/package.json +1 -1
  116. data/tracks/ecmascript/exercises/matrix/package.json +1 -1
  117. data/tracks/ecmascript/exercises/meetup/package.json +1 -1
  118. data/tracks/ecmascript/exercises/minesweeper/package.json +1 -1
  119. data/tracks/ecmascript/exercises/nth-prime/package.json +1 -1
  120. data/tracks/ecmascript/exercises/ocr-numbers/package.json +1 -1
  121. data/tracks/ecmascript/exercises/octal/package.json +1 -1
  122. data/tracks/ecmascript/exercises/palindrome-products/package.json +1 -1
  123. data/tracks/ecmascript/exercises/pangram/package.json +1 -1
  124. data/tracks/ecmascript/exercises/pascals-triangle/package.json +1 -1
  125. data/tracks/ecmascript/exercises/perfect-numbers/package.json +1 -1
  126. data/tracks/ecmascript/exercises/phone-number/package.json +1 -1
  127. data/tracks/ecmascript/exercises/pig-latin/package.json +1 -1
  128. data/tracks/ecmascript/exercises/prime-factors/package.json +1 -1
  129. data/tracks/ecmascript/exercises/proverb/package.json +1 -1
  130. data/tracks/ecmascript/exercises/pythagorean-triplet/package.json +1 -1
  131. data/tracks/ecmascript/exercises/queen-attack/package.json +1 -1
  132. data/tracks/ecmascript/exercises/raindrops/package.json +1 -1
  133. data/tracks/ecmascript/exercises/rna-transcription/package.json +1 -1
  134. data/tracks/ecmascript/exercises/robot-name/package.json +1 -1
  135. data/tracks/ecmascript/exercises/robot-simulator/package.json +1 -1
  136. data/tracks/ecmascript/exercises/roman-numerals/package.json +1 -1
  137. data/tracks/ecmascript/exercises/run-length-encoding/package.json +1 -1
  138. data/tracks/ecmascript/exercises/saddle-points/package.json +1 -1
  139. data/tracks/ecmascript/exercises/say/package.json +1 -1
  140. data/tracks/ecmascript/exercises/scrabble-score/package.json +1 -1
  141. data/tracks/ecmascript/exercises/secret-handshake/package.json +1 -1
  142. data/tracks/ecmascript/exercises/series/package.json +1 -1
  143. data/tracks/ecmascript/exercises/sieve/package.json +1 -1
  144. data/tracks/ecmascript/exercises/simple-cipher/package.json +1 -1
  145. data/tracks/ecmascript/exercises/simple-linked-list/package.json +1 -1
  146. data/tracks/ecmascript/exercises/space-age/package.json +1 -1
  147. data/tracks/ecmascript/exercises/strain/package.json +1 -1
  148. data/tracks/ecmascript/exercises/sublist/package.json +1 -1
  149. data/tracks/ecmascript/exercises/sum-of-multiples/package.json +1 -1
  150. data/tracks/ecmascript/exercises/triangle/package.json +1 -1
  151. data/tracks/ecmascript/exercises/trinary/package.json +1 -1
  152. data/tracks/ecmascript/exercises/twelve-days/package.json +1 -1
  153. data/tracks/ecmascript/exercises/two-bucket/package.json +1 -1
  154. data/tracks/ecmascript/exercises/word-count/package.json +1 -1
  155. data/tracks/ecmascript/exercises/word-search/README.md +58 -0
  156. data/tracks/ecmascript/exercises/word-search/example.js +146 -0
  157. data/tracks/ecmascript/exercises/word-search/package.json +69 -0
  158. data/tracks/ecmascript/exercises/word-search/word-search.spec.js +626 -0
  159. data/tracks/ecmascript/exercises/wordy/package.json +1 -1
  160. data/tracks/ecmascript/package.json +1 -1
  161. data/tracks/elixir/config.json +11 -0
  162. data/tracks/elixir/exercises/luhn/example.exs +26 -46
  163. data/tracks/elixir/exercises/luhn/luhn.exs +0 -13
  164. data/tracks/elixir/exercises/luhn/luhn_test.exs +44 -14
  165. data/tracks/elixir/exercises/transpose/README.md +101 -0
  166. data/tracks/elixir/exercises/transpose/example.exs +46 -0
  167. data/tracks/elixir/exercises/transpose/transpose.exs +22 -0
  168. data/tracks/elixir/exercises/transpose/transpose_test.exs +248 -0
  169. data/tracks/fsharp/exercises/grains/Example.fs +10 -2
  170. data/tracks/fsharp/exercises/grains/Grains.fs +2 -4
  171. data/tracks/fsharp/exercises/grains/GrainsTest.fs +52 -25
  172. data/tracks/fsharp/exercises/phone-number/Example.fs +11 -3
  173. data/tracks/fsharp/exercises/phone-number/PhoneNumber.fs +1 -1
  174. data/tracks/fsharp/exercises/phone-number/PhoneNumberTest.fs +32 -21
  175. data/tracks/fsharp/exercises/prime-factors/Example.fs +6 -13
  176. data/tracks/fsharp/exercises/prime-factors/PrimeFactors.fs +1 -1
  177. data/tracks/fsharp/exercises/prime-factors/PrimeFactorsTest.fs +23 -32
  178. data/tracks/fsharp/exercises/rail-fence-cipher/RailFenceCipherTest.fs +22 -13
  179. data/tracks/fsharp/generators/Exercise.fs +3 -4
  180. data/tracks/fsharp/generators/Generators.fs +31 -0
  181. data/tracks/gnu-apl/bin/run-all-tests +5 -2
  182. data/tracks/java/CONTRIBUTING.md +8 -0
  183. data/tracks/java/POLICIES.md +2 -2
  184. data/tracks/java/config.json +26 -4
  185. data/tracks/java/exercises/triangle/.meta/.version +1 -0
  186. data/tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java +1 -1
  187. data/tracks/java/exercises/triangle/src/test/java/TriangleTest.java +59 -40
  188. data/tracks/javascript/config.json +30 -0
  189. data/tracks/javascript/config/maintainers.json +8 -8
  190. data/tracks/javascript/exercises/change/example.js +6 -22
  191. data/tracks/javascript/exercises/collatz-conjecture/README.md +57 -0
  192. data/tracks/javascript/exercises/collatz-conjecture/collatz-conjecture.spec.js +37 -0
  193. data/tracks/javascript/exercises/collatz-conjecture/example.js +20 -0
  194. data/tracks/javascript/exercises/protein-translation/example.js +30 -31
  195. data/tracks/javascript/exercises/protein-translation/protein-translation.spec.js +60 -60
  196. data/tracks/javascript/exercises/transpose/README.md +89 -0
  197. data/tracks/javascript/exercises/transpose/example.js +17 -0
  198. data/tracks/javascript/exercises/transpose/transpose.spec.js +67 -0
  199. data/tracks/objective-c/config.json +283 -263
  200. data/tracks/objective-c/exercises/grains/GrainsExample.h +6 -0
  201. data/tracks/objective-c/exercises/grains/GrainsExample.m +19 -0
  202. data/tracks/objective-c/exercises/grains/GrainsTest.m +85 -0
  203. data/tracks/objective-c/exercises/nth-prime/NthPrimeExample.h +6 -0
  204. data/tracks/objective-c/exercises/nth-prime/NthPrimeExample.m +39 -0
  205. data/tracks/objective-c/exercises/nth-prime/NthPrimeTest.m +53 -0
  206. data/tracks/python/config.json +42 -11
  207. data/tracks/python/exercises/change/README.md +34 -0
  208. data/tracks/python/exercises/two-bucket/README.md +47 -0
  209. data/tracks/ruby/README.md +4 -1
  210. data/tracks/ruby/lib/generator/command_line.rb +3 -3
  211. data/tracks/ruby/lib/generator/command_line/generator_optparser.rb +3 -3
  212. data/tracks/ruby/test/generator/command_line/generator_optparser_test.rb +4 -4
  213. data/tracks/ruby/test/generator/command_line_test.rb +5 -5
  214. data/tracks/typescript/config.json +15 -0
  215. data/tracks/typescript/exercises/strain/README.md +60 -0
  216. data/tracks/typescript/exercises/strain/package.json +36 -0
  217. data/tracks/typescript/exercises/strain/strain.example.ts +23 -0
  218. data/tracks/typescript/exercises/strain/strain.test.ts +76 -0
  219. data/tracks/typescript/exercises/strain/strain.ts +0 -0
  220. data/tracks/typescript/exercises/strain/tsconfig.json +22 -0
  221. data/tracks/typescript/exercises/strain/tslint.json +127 -0
  222. data/tracks/typescript/exercises/strain/yarn.lock +2305 -0
  223. metadata +46 -3
  224. data/tracks/ecmascript/package-lock.json +0 -2835
@@ -48,10 +48,10 @@ private static string RenderCanAttackAssert(TestMethodBody testMethodBody)
48
48
 
49
49
  private static Tuple<int, int> GetCoordinatesFromPosition(dynamic expected)
50
50
  {
51
- var coordinates = expected["position"].Split(',');
51
+ var coordinates = expected["position"];
52
52
 
53
- var positionX = int.Parse(coordinates[0].TrimStart('('));
54
- var positionY = int.Parse(coordinates[1].TrimEnd(')'));
53
+ var positionX = (int)coordinates["row"];
54
+ var positionY = (int)coordinates["column"];
55
55
 
56
56
  return Tuple.Create(positionX, positionY);
57
57
  }
@@ -10,7 +10,7 @@ void main() {
10
10
  });
11
11
 
12
12
  test("is introduced every 4 years to adjust about a day", () {
13
- final year = new Year(2016);
13
+ final year = new Year(2020);
14
14
 
15
15
  expect(year.isLeap(), equals(true));
16
16
  }, skip: true);
@@ -115,12 +115,12 @@ end;
115
115
 
116
116
  procedure HammingTests.non_unique_character_in_first_strand;
117
117
  begin
118
- Assert.AreEqual(1, THamming.Distance('AGA', 'AGG'));
118
+ Assert.AreEqual(1, THamming.Distance('AAG', 'AAA'));
119
119
  end;
120
120
 
121
121
  procedure HammingTests.non_unique_character_in_second_strand;
122
122
  begin
123
- Assert.AreEqual(1, THamming.Distance('AGG', 'AGA'));
123
+ Assert.AreEqual(1, THamming.Distance('AAA', 'AAG'));
124
124
  end;
125
125
 
126
126
  procedure HammingTests.same_nucleotides_in_different_positions;
@@ -11,67 +11,40 @@ type
11
11
  public
12
12
  [Test]
13
13
  // [Ignore('Comment the "[Ignore]" statement to run the test')]
14
- procedure test_leap_year;
14
+ procedure year_not_divisible_by_4_common_year;
15
15
 
16
16
  [Test]
17
17
  [Ignore]
18
- procedure test_standard_and_odd_year;
18
+ procedure year_divisible_by_4_not_divisible_by_100_leap_year;
19
19
 
20
20
  [Test]
21
21
  [Ignore]
22
- procedure test_standard_even_year;
22
+ procedure year_divisible_by_100_not_divisible_by_400_common_year;
23
23
 
24
24
  [Test]
25
25
  [Ignore]
26
- procedure test_standard_nineteenth_century;
27
-
28
- [Test]
29
- [Ignore]
30
- procedure test_standard_eighteenth_century;
31
-
32
- [Test]
33
- [Ignore]
34
- procedure test_leap_twenty_fourth_century;
35
-
36
- [Test]
37
- [Ignore]
38
- procedure test_leap_y2k;
26
+ procedure year_divisible_by_400_leap_year;
39
27
  end;
40
28
 
41
29
  implementation
42
30
  uses uLeap;
43
31
 
44
- procedure YearTest.test_leap_year;
45
- begin
46
- assert.IsTrue(TYear.IsLeap(1996), 'Expected ''true'', 1996 is a leap year.');
47
- end;
48
-
49
- procedure YearTest.test_standard_and_odd_year;
50
- begin
51
- assert.IsFalse(TYear.IsLeap(1997), 'Expected ''false'', 1997 is not a leap year.');
52
- end;
53
-
54
- procedure YearTest.test_standard_even_year;
55
- begin
56
- assert.IsFalse(TYear.IsLeap(1998), 'Expected ''false'', 1998 is not a leap year.');
57
- end;
58
-
59
- procedure YearTest.test_standard_nineteenth_century;
32
+ procedure YearTest.year_not_divisible_by_4_common_year;
60
33
  begin
61
- assert.IsFalse(TYear.IsLeap(1900), 'Expected ''false'', 1900 is not a leap year.');
34
+ assert.IsFalse(TYear.IsLeap(2015), 'Expected ''false'', 2015 is not a leap year.');
62
35
  end;
63
36
 
64
- procedure YearTest.test_standard_eighteenth_century;
37
+ procedure YearTest.year_divisible_by_4_not_divisible_by_100_leap_year;
65
38
  begin
66
- assert.IsFalse(TYear.IsLeap(1800), 'Expected ''false'', 1800 is not a leap year.');
39
+ assert.IsTrue(TYear.IsLeap(2020), 'Expected ''true'', 2020 is a leap year.');
67
40
  end;
68
41
 
69
- procedure YearTest.test_leap_twenty_fourth_century;
42
+ procedure YearTest.year_divisible_by_100_not_divisible_by_400_common_year;
70
43
  begin
71
- assert.IsTrue(TYear.IsLeap(2400), 'Expected ''true'', 2400 is a leap year.');
44
+ assert.IsFalse(TYear.IsLeap(2100), 'Expected ''false'', 2100 is not a leap year.');
72
45
  end;
73
46
 
74
- procedure YearTest.test_leap_y2k;
47
+ procedure YearTest.year_divisible_by_400_leap_year;
75
48
  begin
76
49
  assert.IsTrue(TYear.IsLeap(2000), 'Expected ''true'', 2000 is a leap year.');
77
50
  end;
@@ -57,7 +57,7 @@ function TDNA.Count(aChar: Char): integer;
57
57
  begin
58
58
  result := 0;
59
59
  if not fNucleotideCounts.TryGetValue(aChar, result) then
60
- raise EInvalidNucleotideException.Create('Invalid Nucleotide');
60
+ raise EInvalidNucleotideException.Create('Invalid nucleotide in strand');
61
61
  end;
62
62
 
63
63
  end.
@@ -6,33 +6,23 @@ uses
6
6
 
7
7
  type
8
8
 
9
- [TestFixture]
9
+ [TestFixture('count all nucleotides in a strand')]
10
10
  NucleoTideCountTest = class(TObject)
11
- private
12
- procedure CompareDictionaries(Expected, Actual: TDictionary<char, integer>);
13
11
  public
14
12
  [Test]
15
13
  procedure Validate_CompareDictionaries;
16
14
 
17
15
  [Test]
18
16
  // [Ignore('Comment the "[Ignore]" statement to run the test')]
19
- procedure Has_no_nucleotides;
17
+ procedure empty_strand;
20
18
 
21
19
  [Test]
22
20
  [Ignore]
23
- procedure Has_no_adenosine;
21
+ procedure strand_with_repeated_nucleotide;
24
22
 
25
23
  [Test]
26
24
  [Ignore]
27
- procedure Repetitive_cytidine_gets_counts;
28
-
29
- [Test]
30
- [Ignore]
31
- procedure Repetitive_sequence_has_only_guanosine;
32
-
33
- [Test]
34
- [Ignore]
35
- procedure Counts_only_thymidine;
25
+ procedure can_count_one_nucleotide_in_single_character_input;
36
26
 
37
27
  [Test]
38
28
  [Ignore]
@@ -40,17 +30,17 @@ type
40
30
 
41
31
  [Test]
42
32
  [Ignore]
43
- procedure Validates_nucleotides;
33
+ procedure strand_with_invalid_nucleotides;
44
34
 
45
35
  [Test]
46
36
  [Ignore]
47
- procedure Counts_all_nucleotides;
37
+ procedure strand_with_multiple_nucleotides;
48
38
  end;
49
39
 
50
40
  implementation
51
41
  uses SysUtils, uNucleotideCount;
52
42
 
53
- procedure NucleoTideCountTest.CompareDictionaries(Expected, Actual: TDictionary<Char, Integer>);
43
+ procedure CompareDictionaries(Expected, Actual: TDictionary<Char, Integer>);
54
44
  var expectedArray,
55
45
  actualArray: TArray<TPair<char, integer>>;
56
46
  i: integer;
@@ -81,7 +71,7 @@ begin
81
71
  CompareDictionaries(expected, actual);
82
72
  end;
83
73
 
84
- procedure NucleoTideCountTest.Has_no_nucleotides;
74
+ procedure NucleoTideCountTest.empty_strand;
85
75
  var dna: TDNA;
86
76
  expected: TDictionary<char, integer>;
87
77
  begin
@@ -96,27 +86,7 @@ begin
96
86
  CompareDictionaries(expected, dna.NucleotideCounts);
97
87
  end;
98
88
 
99
- procedure NucleoTideCountTest.Has_no_adenosine;
100
- var dna: TDNA;
101
- inStr: string;
102
- begin
103
- inStr := '';
104
- dna := TDNA.Create(inStr);
105
-
106
- Assert.AreEqual(length(inStr), dna.Count('A'));
107
- end;
108
-
109
- procedure NucleoTideCountTest.Repetitive_cytidine_gets_counts;
110
- var dna: TDNA;
111
- inStr: string;
112
- begin
113
- inStr := 'CCCCC';
114
- dna := TDNA.Create(inStr);
115
-
116
- Assert.AreEqual(length(inStr), dna.Count('C'));
117
- end;
118
-
119
- procedure NucleoTideCountTest.Repetitive_sequence_has_only_guanosine;
89
+ procedure NucleoTideCountTest.strand_with_repeated_nucleotide;
120
90
  var dna: TDNA;
121
91
  expected: TDictionary<char, integer>;
122
92
  inStr: string;
@@ -125,24 +95,14 @@ begin
125
95
  expected.Add('A',0);
126
96
  expected.Add('T',0);
127
97
  expected.Add('C',0);
128
- expected.Add('G',8);
129
- inStr := 'GGGGGGGG';
98
+ expected.Add('G',7);
99
+ inStr := 'GGGGGGG';
130
100
 
131
101
  dna := TDNA.Create(inStr);
132
102
 
133
103
  CompareDictionaries(expected, dna.NucleotideCounts);
134
104
  end;
135
105
 
136
- procedure NucleoTideCountTest.Counts_only_thymidine;
137
- var dna: TDNA;
138
- inStr: string;
139
- begin
140
- inStr := 'GGGGTAACCCGG';
141
- dna := TDNA.Create(inStr);
142
-
143
- Assert.AreEqual(length('T'), dna.Count('T'));
144
- end;
145
-
146
106
  procedure NucleoTideCountTest.Counts_a_nucleotide_only_once;
147
107
  var dna: TDNA;
148
108
  inStr: string;
@@ -154,22 +114,38 @@ begin
154
114
  Assert.AreEqual(2, dna.Count('T'));
155
115
  end;
156
116
 
157
- procedure NucleoTideCountTest.Validates_nucleotides;
117
+ procedure NucleoTideCountTest.strand_with_invalid_nucleotides;
158
118
  var MyProc: TTestLocalMethod;
159
119
  begin
160
120
  MyProc := procedure
161
121
  var dna: TDNA;
162
122
  inStr: string;
163
123
  begin
164
- inStr := 'GGTTGG';
124
+ inStr := 'AGXXACT';
165
125
  dna := TDNA.Create(inStr);
166
126
  dna.Count('X');
167
127
  end;
128
+ Assert.WillRaiseWithMessage(MyProc,EInvalidNucleotideException,'Invalid nucleotide in strand');
129
+ end;
130
+
131
+ procedure NucleoTideCountTest.can_count_one_nucleotide_in_single_character_input;
132
+ var dna: TDNA;
133
+ expected: TDictionary<char, integer>;
134
+ inStr: string;
135
+ begin
136
+ expected := TDictionary<char, integer>.Create;
137
+ expected.Add('A',0);
138
+ expected.Add('T',0);
139
+ expected.Add('C',0);
140
+ expected.Add('G',1);
141
+ inStr := 'G';
168
142
 
169
- Assert.WillRaise(MyProc, EInvalidNucleotideException);
143
+ dna := TDNA.Create(inStr);
144
+
145
+ CompareDictionaries(expected, dna.NucleotideCounts);
170
146
  end;
171
147
 
172
- procedure NucleoTideCountTest.Counts_all_nucleotides;
148
+ procedure NucleoTideCountTest.strand_with_multiple_nucleotides;
173
149
  var dna: TDNA;
174
150
  expected: TDictionary<char, integer>;
175
151
  inStr: string;
@@ -328,6 +328,22 @@
328
328
  "Arrays"
329
329
  ]
330
330
  },
331
+ {
332
+ "uuid": "0125f5a7-8883-4553-a6c1-45f19544af5e",
333
+ "slug": "word-search",
334
+ "core": false,
335
+ "unlocked_by": "linked-list",
336
+ "difficulty": 8,
337
+ "topics": [
338
+ "Control-flow (conditionals)",
339
+ "Control-flow (loops)",
340
+ "Optional values",
341
+ "Equality",
342
+ "Text formatting",
343
+ "Parsing",
344
+ "Arrays"
345
+ ]
346
+ },
331
347
  {
332
348
  "uuid": "d003975a-9045-4f03-9ad9-c15db584dc13",
333
349
  "slug": "grains",
@@ -354,6 +370,21 @@
354
370
  "Mathematics"
355
371
  ]
356
372
  },
373
+ {
374
+ "uuid": "363b8810-0bd1-c480-b23c-6b5f629975e7452b123",
375
+ "slug": "collatz-conjecture",
376
+ "core": false,
377
+ "unlocked_by": "leap",
378
+ "difficulty": 3,
379
+ "topics": [
380
+ "Control-flow (conditionals)",
381
+ "Control-flow (loops)",
382
+ "Recursion",
383
+ "Exception_handling",
384
+ "Integers",
385
+ "Mathematics"
386
+ ]
387
+ },
357
388
  {
358
389
  "uuid": "4e0e2c30-be33-49b6-b196-213888a93a0c",
359
390
  "slug": "clock",
@@ -2,12 +2,12 @@
2
2
  "maintainers": [
3
3
  {
4
4
  "github_username": "rchavarria",
5
- "show_on_website": false,
5
+ "show_on_website": true,
6
6
  "alumnus": false,
7
- "name": null,
8
- "bio": null,
9
- "link_text": null,
10
- "link_url": null,
7
+ "name": "Rubén Chavarría",
8
+ "bio": "I'm a Web Developer with a passion for taking code that is hard to maintain and cleaning, refactoring, and bringing it back into a manageable state",
9
+ "link_text": "Here is where I blog",
10
+ "link_url": "https://rchavarria.github.io/",
11
11
  "avatar_url": null
12
12
  },
13
13
  {
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  ["transform-regenerator"]
41
41
  ]
42
- },
42
+ },
43
43
  "scripts": {
44
44
  "test": "jest --no-cache ./*",
45
45
  "watch": "jest --no-cache --watch ./*",
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  ["transform-regenerator"]
41
41
  ]
42
- },
42
+ },
43
43
  "scripts": {
44
44
  "test": "jest --no-cache ./*",
45
45
  "watch": "jest --no-cache --watch ./*",
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  ["transform-regenerator"]
41
41
  ]
42
- },
42
+ },
43
43
  "scripts": {
44
44
  "test": "jest --no-cache ./*",
45
45
  "watch": "jest --no-cache --watch ./*",
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  ["transform-regenerator"]
41
41
  ]
42
- },
42
+ },
43
43
  "scripts": {
44
44
  "test": "jest --no-cache ./*",
45
45
  "watch": "jest --no-cache --watch ./*",
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  ["transform-regenerator"]
41
41
  ]
42
- },
42
+ },
43
43
  "scripts": {
44
44
  "test": "jest --no-cache ./*",
45
45
  "watch": "jest --no-cache --watch ./*",
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  ["transform-regenerator"]
41
41
  ]
42
- },
42
+ },
43
43
  "scripts": {
44
44
  "test": "jest --no-cache ./*",
45
45
  "watch": "jest --no-cache --watch ./*",
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  ["transform-regenerator"]
41
41
  ]
42
- },
42
+ },
43
43
  "scripts": {
44
44
  "test": "jest --no-cache ./*",
45
45
  "watch": "jest --no-cache --watch ./*",
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  ["transform-regenerator"]
41
41
  ]
42
- },
42
+ },
43
43
  "scripts": {
44
44
  "test": "jest --no-cache ./*",
45
45
  "watch": "jest --no-cache --watch ./*",
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  ["transform-regenerator"]
41
41
  ]
42
- },
42
+ },
43
43
  "scripts": {
44
44
  "test": "jest --no-cache ./*",
45
45
  "watch": "jest --no-cache --watch ./*",