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.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/nucleotide-count/canonical-data.json +7 -7
- data/tracks/c/README.md +1 -1
- data/tracks/c/docs/SNIPPET.txt +2 -3
- data/tracks/c/exercises/acronym/test/test_acronym.c +8 -0
- data/tracks/c/exercises/all-your-base/test/test_all_your_base.c +8 -0
- data/tracks/c/exercises/allergies/test/test_allergies.c +8 -0
- data/tracks/c/exercises/anagram/test/test_anagram.c +8 -0
- data/tracks/c/exercises/atbash-cipher/test/test_atbash_cipher.c +8 -0
- data/tracks/c/exercises/beer-song/src/example.c +23 -22
- data/tracks/c/exercises/beer-song/src/example.h +3 -3
- data/tracks/c/exercises/beer-song/test/test_beer_song.c +8 -0
- data/tracks/c/exercises/binary-search/test/test_binary_search.c +8 -0
- data/tracks/c/exercises/binary/test/test_binary.c +8 -0
- data/tracks/c/exercises/bob/test/test_bob.c +8 -0
- data/tracks/c/exercises/clock/test/test_clock.c +8 -0
- data/tracks/c/exercises/difference-of-squares/test/test_difference_of_squares.c +8 -0
- data/tracks/c/exercises/gigasecond/test/test_gigasecond.c +8 -0
- data/tracks/c/exercises/grains/test/test_grains.c +8 -0
- data/tracks/c/exercises/hamming/test/test_hamming.c +8 -0
- data/tracks/c/exercises/hello-world/src/example.c +0 -2
- data/tracks/c/exercises/hello-world/test/test_hello_world.c +8 -0
- data/tracks/c/exercises/isogram/test/test_isogram.c +8 -0
- data/tracks/c/exercises/largest-series-product/test/test_largest_series_product.c +8 -0
- data/tracks/c/exercises/leap/test/test_leap.c +8 -0
- data/tracks/c/exercises/meetup/test/test_meetup.c +8 -0
- data/tracks/c/exercises/nth-prime/test/test_nth_prime.c +8 -0
- data/tracks/c/exercises/nucleotide-count/test/test_nucleotide_count.c +8 -0
- data/tracks/c/exercises/palindrome-products/test/test_palindrome_products.c +8 -0
- data/tracks/c/exercises/pangram/test/test_pangram.c +8 -0
- data/tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c +8 -0
- data/tracks/c/exercises/perfect-numbers/src/example.c +4 -4
- data/tracks/c/exercises/perfect-numbers/src/example.h +4 -4
- data/tracks/c/exercises/perfect-numbers/src/perfect_numbers.h +4 -4
- data/tracks/c/exercises/perfect-numbers/test/test_perfect_numbers.c +23 -13
- data/tracks/c/exercises/phone-number/test/test_phone_number.c +8 -0
- data/tracks/c/exercises/raindrops/test/test_raindrops.c +5 -1
- data/tracks/c/exercises/react/src/example.c +8 -8
- data/tracks/c/exercises/react/test/test_react.c +8 -0
- data/tracks/c/exercises/rna-transcription/test/test_rna_transcription.c +8 -0
- data/tracks/c/exercises/robot-simulator/src/example.c +12 -12
- data/tracks/c/exercises/robot-simulator/src/robot_simulator.h +11 -11
- data/tracks/c/exercises/robot-simulator/test/test_robot_simulator.c +33 -25
- data/tracks/c/exercises/roman-numerals/test/test_roman_numerals.c +8 -0
- data/tracks/c/exercises/scrabble-score/test/test_scrabble_score.c +8 -0
- data/tracks/c/exercises/series/test/test_series.c +8 -0
- data/tracks/c/exercises/sieve/test/test_sieve.c +8 -0
- data/tracks/c/exercises/space-age/src/example.h +8 -8
- data/tracks/c/exercises/space-age/test/test_space_age.c +16 -8
- data/tracks/c/exercises/sum-of-multiples/test/test_sum_of_multiples.c +8 -0
- data/tracks/c/exercises/triangle/test/test_triangle.c +8 -0
- data/tracks/c/exercises/word-count/test/test_word_count.c +8 -0
- data/tracks/cfml/config.json +8 -0
- data/tracks/cfml/exercises/anagram/.meta/HINTS.md +0 -0
- data/tracks/cfml/exercises/anagram/Anagram.cfc +13 -0
- data/tracks/cfml/exercises/anagram/AnagramTest.cfc +79 -0
- data/tracks/cfml/exercises/anagram/README.md +29 -0
- data/tracks/cfml/exercises/anagram/Solution.cfc +42 -0
- data/tracks/cfml/exercises/anagram/SolutionTest.cfc +7 -0
- data/tracks/cfml/exercises/anagram/TestRunner.cfc +103 -0
- data/tracks/cfml/exercises/anagram/box.json +8 -0
- data/tracks/cfml/exercises/anagram/index.cfm +37 -0
- data/tracks/common-lisp/config.json +5 -5
- data/tracks/csharp/exercises/two-bucket/Example.cs +53 -79
- data/tracks/csharp/exercises/two-bucket/TwoBucketTest.cs +2 -2
- data/tracks/csharp/generators/Exercises/QueenAttack.cs +3 -3
- data/tracks/dart/exercises/leap/test/leap_test.dart +1 -1
- data/tracks/delphi/exercises/hamming/uHammingTests.pas +2 -2
- data/tracks/delphi/exercises/leap/uLeapTests.pas +11 -38
- data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountExample.pas +1 -1
- data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountTest.pas +31 -55
- data/tracks/ecmascript/config.json +31 -0
- data/tracks/ecmascript/config/maintainers.json +5 -5
- data/tracks/ecmascript/exercises/accumulate/package.json +1 -1
- data/tracks/ecmascript/exercises/acronym/package.json +1 -1
- data/tracks/ecmascript/exercises/all-your-base/package.json +1 -1
- data/tracks/ecmascript/exercises/allergies/package.json +1 -1
- data/tracks/ecmascript/exercises/alphametics/package.json +1 -1
- data/tracks/ecmascript/exercises/anagram/package.json +1 -1
- data/tracks/ecmascript/exercises/atbash-cipher/package.json +1 -1
- data/tracks/ecmascript/exercises/beer-song/package.json +1 -1
- data/tracks/ecmascript/exercises/binary-search-tree/package.json +1 -1
- data/tracks/ecmascript/exercises/binary-search/package.json +1 -1
- data/tracks/ecmascript/exercises/binary/package.json +1 -1
- data/tracks/ecmascript/exercises/bob/package.json +1 -1
- data/tracks/ecmascript/exercises/bracket-push/package.json +1 -1
- data/tracks/ecmascript/exercises/circular-buffer/package.json +1 -1
- data/tracks/ecmascript/exercises/clock/package.json +1 -1
- data/tracks/ecmascript/exercises/collatz-conjecture/README.md +59 -0
- data/tracks/ecmascript/exercises/collatz-conjecture/collatz-conjecture.spec.js +31 -0
- data/tracks/ecmascript/exercises/collatz-conjecture/example.js +14 -0
- data/tracks/ecmascript/exercises/collatz-conjecture/package.json +69 -0
- data/tracks/ecmascript/exercises/connect/package.json +1 -1
- data/tracks/ecmascript/exercises/crypto-square/package.json +1 -1
- data/tracks/ecmascript/exercises/custom-set/package.json +1 -1
- data/tracks/ecmascript/exercises/diamond/package.json +1 -1
- data/tracks/ecmascript/exercises/difference-of-squares/package.json +1 -1
- data/tracks/ecmascript/exercises/diffie-hellman/package.json +1 -1
- data/tracks/ecmascript/exercises/etl/package.json +1 -1
- data/tracks/ecmascript/exercises/flatten-array/package.json +1 -1
- data/tracks/ecmascript/exercises/food-chain/package.json +1 -1
- data/tracks/ecmascript/exercises/gigasecond/package.json +1 -1
- data/tracks/ecmascript/exercises/grade-school/package.json +1 -1
- data/tracks/ecmascript/exercises/grains/package.json +1 -1
- data/tracks/ecmascript/exercises/hamming/package.json +1 -1
- data/tracks/ecmascript/exercises/hello-world/package.json +1 -1
- data/tracks/ecmascript/exercises/hexadecimal/package.json +1 -1
- data/tracks/ecmascript/exercises/isogram/package.json +1 -1
- data/tracks/ecmascript/exercises/kindergarten-garden/package.json +1 -1
- data/tracks/ecmascript/exercises/largest-series-product/package.json +1 -1
- data/tracks/ecmascript/exercises/leap/package.json +1 -1
- data/tracks/ecmascript/exercises/linked-list/package.json +1 -1
- data/tracks/ecmascript/exercises/list-ops/package.json +1 -1
- data/tracks/ecmascript/exercises/luhn/package.json +1 -1
- data/tracks/ecmascript/exercises/matrix/package.json +1 -1
- data/tracks/ecmascript/exercises/meetup/package.json +1 -1
- data/tracks/ecmascript/exercises/minesweeper/package.json +1 -1
- data/tracks/ecmascript/exercises/nth-prime/package.json +1 -1
- data/tracks/ecmascript/exercises/ocr-numbers/package.json +1 -1
- data/tracks/ecmascript/exercises/octal/package.json +1 -1
- data/tracks/ecmascript/exercises/palindrome-products/package.json +1 -1
- data/tracks/ecmascript/exercises/pangram/package.json +1 -1
- data/tracks/ecmascript/exercises/pascals-triangle/package.json +1 -1
- data/tracks/ecmascript/exercises/perfect-numbers/package.json +1 -1
- data/tracks/ecmascript/exercises/phone-number/package.json +1 -1
- data/tracks/ecmascript/exercises/pig-latin/package.json +1 -1
- data/tracks/ecmascript/exercises/prime-factors/package.json +1 -1
- data/tracks/ecmascript/exercises/proverb/package.json +1 -1
- data/tracks/ecmascript/exercises/pythagorean-triplet/package.json +1 -1
- data/tracks/ecmascript/exercises/queen-attack/package.json +1 -1
- data/tracks/ecmascript/exercises/raindrops/package.json +1 -1
- data/tracks/ecmascript/exercises/rna-transcription/package.json +1 -1
- data/tracks/ecmascript/exercises/robot-name/package.json +1 -1
- data/tracks/ecmascript/exercises/robot-simulator/package.json +1 -1
- data/tracks/ecmascript/exercises/roman-numerals/package.json +1 -1
- data/tracks/ecmascript/exercises/run-length-encoding/package.json +1 -1
- data/tracks/ecmascript/exercises/saddle-points/package.json +1 -1
- data/tracks/ecmascript/exercises/say/package.json +1 -1
- data/tracks/ecmascript/exercises/scrabble-score/package.json +1 -1
- data/tracks/ecmascript/exercises/secret-handshake/package.json +1 -1
- data/tracks/ecmascript/exercises/series/package.json +1 -1
- data/tracks/ecmascript/exercises/sieve/package.json +1 -1
- data/tracks/ecmascript/exercises/simple-cipher/package.json +1 -1
- data/tracks/ecmascript/exercises/simple-linked-list/package.json +1 -1
- data/tracks/ecmascript/exercises/space-age/package.json +1 -1
- data/tracks/ecmascript/exercises/strain/package.json +1 -1
- data/tracks/ecmascript/exercises/sublist/package.json +1 -1
- data/tracks/ecmascript/exercises/sum-of-multiples/package.json +1 -1
- data/tracks/ecmascript/exercises/triangle/package.json +1 -1
- data/tracks/ecmascript/exercises/trinary/package.json +1 -1
- data/tracks/ecmascript/exercises/twelve-days/package.json +1 -1
- data/tracks/ecmascript/exercises/two-bucket/package.json +1 -1
- data/tracks/ecmascript/exercises/word-count/package.json +1 -1
- data/tracks/ecmascript/exercises/word-search/README.md +58 -0
- data/tracks/ecmascript/exercises/word-search/example.js +146 -0
- data/tracks/ecmascript/exercises/word-search/package.json +69 -0
- data/tracks/ecmascript/exercises/word-search/word-search.spec.js +626 -0
- data/tracks/ecmascript/exercises/wordy/package.json +1 -1
- data/tracks/ecmascript/package.json +1 -1
- data/tracks/elixir/config.json +11 -0
- data/tracks/elixir/exercises/luhn/example.exs +26 -46
- data/tracks/elixir/exercises/luhn/luhn.exs +0 -13
- data/tracks/elixir/exercises/luhn/luhn_test.exs +44 -14
- data/tracks/elixir/exercises/transpose/README.md +101 -0
- data/tracks/elixir/exercises/transpose/example.exs +46 -0
- data/tracks/elixir/exercises/transpose/transpose.exs +22 -0
- data/tracks/elixir/exercises/transpose/transpose_test.exs +248 -0
- data/tracks/fsharp/exercises/grains/Example.fs +10 -2
- data/tracks/fsharp/exercises/grains/Grains.fs +2 -4
- data/tracks/fsharp/exercises/grains/GrainsTest.fs +52 -25
- data/tracks/fsharp/exercises/phone-number/Example.fs +11 -3
- data/tracks/fsharp/exercises/phone-number/PhoneNumber.fs +1 -1
- data/tracks/fsharp/exercises/phone-number/PhoneNumberTest.fs +32 -21
- data/tracks/fsharp/exercises/prime-factors/Example.fs +6 -13
- data/tracks/fsharp/exercises/prime-factors/PrimeFactors.fs +1 -1
- data/tracks/fsharp/exercises/prime-factors/PrimeFactorsTest.fs +23 -32
- data/tracks/fsharp/exercises/rail-fence-cipher/RailFenceCipherTest.fs +22 -13
- data/tracks/fsharp/generators/Exercise.fs +3 -4
- data/tracks/fsharp/generators/Generators.fs +31 -0
- data/tracks/gnu-apl/bin/run-all-tests +5 -2
- data/tracks/java/CONTRIBUTING.md +8 -0
- data/tracks/java/POLICIES.md +2 -2
- data/tracks/java/config.json +26 -4
- data/tracks/java/exercises/triangle/.meta/.version +1 -0
- data/tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java +1 -1
- data/tracks/java/exercises/triangle/src/test/java/TriangleTest.java +59 -40
- data/tracks/javascript/config.json +30 -0
- data/tracks/javascript/config/maintainers.json +8 -8
- data/tracks/javascript/exercises/change/example.js +6 -22
- data/tracks/javascript/exercises/collatz-conjecture/README.md +57 -0
- data/tracks/javascript/exercises/collatz-conjecture/collatz-conjecture.spec.js +37 -0
- data/tracks/javascript/exercises/collatz-conjecture/example.js +20 -0
- data/tracks/javascript/exercises/protein-translation/example.js +30 -31
- data/tracks/javascript/exercises/protein-translation/protein-translation.spec.js +60 -60
- data/tracks/javascript/exercises/transpose/README.md +89 -0
- data/tracks/javascript/exercises/transpose/example.js +17 -0
- data/tracks/javascript/exercises/transpose/transpose.spec.js +67 -0
- data/tracks/objective-c/config.json +283 -263
- data/tracks/objective-c/exercises/grains/GrainsExample.h +6 -0
- data/tracks/objective-c/exercises/grains/GrainsExample.m +19 -0
- data/tracks/objective-c/exercises/grains/GrainsTest.m +85 -0
- data/tracks/objective-c/exercises/nth-prime/NthPrimeExample.h +6 -0
- data/tracks/objective-c/exercises/nth-prime/NthPrimeExample.m +39 -0
- data/tracks/objective-c/exercises/nth-prime/NthPrimeTest.m +53 -0
- data/tracks/python/config.json +42 -11
- data/tracks/python/exercises/change/README.md +34 -0
- data/tracks/python/exercises/two-bucket/README.md +47 -0
- data/tracks/ruby/README.md +4 -1
- data/tracks/ruby/lib/generator/command_line.rb +3 -3
- data/tracks/ruby/lib/generator/command_line/generator_optparser.rb +3 -3
- data/tracks/ruby/test/generator/command_line/generator_optparser_test.rb +4 -4
- data/tracks/ruby/test/generator/command_line_test.rb +5 -5
- data/tracks/typescript/config.json +15 -0
- data/tracks/typescript/exercises/strain/README.md +60 -0
- data/tracks/typescript/exercises/strain/package.json +36 -0
- data/tracks/typescript/exercises/strain/strain.example.ts +23 -0
- data/tracks/typescript/exercises/strain/strain.test.ts +76 -0
- data/tracks/typescript/exercises/strain/strain.ts +0 -0
- data/tracks/typescript/exercises/strain/tsconfig.json +22 -0
- data/tracks/typescript/exercises/strain/tslint.json +127 -0
- data/tracks/typescript/exercises/strain/yarn.lock +2305 -0
- metadata +46 -3
- 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"]
|
51
|
+
var coordinates = expected["position"];
|
52
52
|
|
53
|
-
var positionX = int
|
54
|
-
var positionY = int
|
53
|
+
var positionX = (int)coordinates["row"];
|
54
|
+
var positionY = (int)coordinates["column"];
|
55
55
|
|
56
56
|
return Tuple.Create(positionX, positionY);
|
57
57
|
}
|
@@ -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('
|
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('
|
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
|
14
|
+
procedure year_not_divisible_by_4_common_year;
|
15
15
|
|
16
16
|
[Test]
|
17
17
|
[Ignore]
|
18
|
-
procedure
|
18
|
+
procedure year_divisible_by_4_not_divisible_by_100_leap_year;
|
19
19
|
|
20
20
|
[Test]
|
21
21
|
[Ignore]
|
22
|
-
procedure
|
22
|
+
procedure year_divisible_by_100_not_divisible_by_400_common_year;
|
23
23
|
|
24
24
|
[Test]
|
25
25
|
[Ignore]
|
26
|
-
procedure
|
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.
|
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(
|
34
|
+
assert.IsFalse(TYear.IsLeap(2015), 'Expected ''false'', 2015 is not a leap year.');
|
62
35
|
end;
|
63
36
|
|
64
|
-
procedure YearTest.
|
37
|
+
procedure YearTest.year_divisible_by_4_not_divisible_by_100_leap_year;
|
65
38
|
begin
|
66
|
-
assert.
|
39
|
+
assert.IsTrue(TYear.IsLeap(2020), 'Expected ''true'', 2020 is a leap year.');
|
67
40
|
end;
|
68
41
|
|
69
|
-
procedure YearTest.
|
42
|
+
procedure YearTest.year_divisible_by_100_not_divisible_by_400_common_year;
|
70
43
|
begin
|
71
|
-
assert.
|
44
|
+
assert.IsFalse(TYear.IsLeap(2100), 'Expected ''false'', 2100 is not a leap year.');
|
72
45
|
end;
|
73
46
|
|
74
|
-
procedure YearTest.
|
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
|
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
|
17
|
+
procedure empty_strand;
|
20
18
|
|
21
19
|
[Test]
|
22
20
|
[Ignore]
|
23
|
-
procedure
|
21
|
+
procedure strand_with_repeated_nucleotide;
|
24
22
|
|
25
23
|
[Test]
|
26
24
|
[Ignore]
|
27
|
-
procedure
|
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
|
33
|
+
procedure strand_with_invalid_nucleotides;
|
44
34
|
|
45
35
|
[Test]
|
46
36
|
[Ignore]
|
47
|
-
procedure
|
37
|
+
procedure strand_with_multiple_nucleotides;
|
48
38
|
end;
|
49
39
|
|
50
40
|
implementation
|
51
41
|
uses SysUtils, uNucleotideCount;
|
52
42
|
|
53
|
-
procedure
|
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.
|
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.
|
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',
|
129
|
-
inStr := '
|
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.
|
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 := '
|
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
|
-
|
143
|
+
dna := TDNA.Create(inStr);
|
144
|
+
|
145
|
+
CompareDictionaries(expected, dna.NucleotideCounts);
|
170
146
|
end;
|
171
147
|
|
172
|
-
procedure NucleoTideCountTest.
|
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":
|
5
|
+
"show_on_website": true,
|
6
6
|
"alumnus": false,
|
7
|
-
"name":
|
8
|
-
"bio":
|
9
|
-
"link_text":
|
10
|
-
"link_url":
|
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
|
{
|