trackler 2.2.1.172 → 2.2.1.173

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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/ballerina/docs/ABOUT.md +2 -0
  4. data/tracks/ballerina/docs/INSTALLATION.md +1 -0
  5. data/tracks/ballerina/docs/LEARNING.md +1 -0
  6. data/tracks/ballerina/docs/TESTS.md +132 -0
  7. data/tracks/common-lisp/README.md +2 -2
  8. data/tracks/common-lisp/docs/SNIPPET.txt +4 -8
  9. data/tracks/factor/config.json +1 -0
  10. data/tracks/haskell/config.json +2 -1
  11. data/tracks/nim/exercises/allergies/allergies_test.nim +20 -21
  12. data/tracks/nim/exercises/anagram/anagram_test.nim +65 -63
  13. data/tracks/nim/exercises/binary/binary_test.nim +37 -36
  14. data/tracks/nim/exercises/bob/bob_test.nim +1 -1
  15. data/tracks/nim/exercises/bracket-push/bracket_push_test.nim +1 -1
  16. data/tracks/nim/exercises/difference-of-squares/difference_of_squares_test.nim +14 -12
  17. data/tracks/nim/exercises/gigasecond/example.nim +1 -1
  18. data/tracks/nim/exercises/gigasecond/gigasecond_test.nim +24 -24
  19. data/tracks/nim/exercises/hamming/hamming_test.nim +16 -14
  20. data/tracks/nim/exercises/hello-world/helloworld_test.nim +8 -6
  21. data/tracks/nim/exercises/leap/example.nim +1 -1
  22. data/tracks/nim/exercises/nucleotide-count/nucleotide_count_test.nim +19 -17
  23. data/tracks/nim/exercises/pangram/example.nim +3 -3
  24. data/tracks/nim/exercises/pangram/pangram_test.nim +11 -10
  25. data/tracks/nim/exercises/raindrops/raindrops_test.nim +35 -33
  26. data/tracks/nim/exercises/rna-transcription/rna_transcription_test.nim +15 -13
  27. data/tracks/nim/exercises/roman-numerals/example.nim +24 -25
  28. data/tracks/nim/exercises/roman-numerals/roman_numerals_test.nim +62 -28
  29. data/tracks/nim/exercises/scrabble-score/example.nim +6 -4
  30. data/tracks/nim/exercises/scrabble-score/scrabble_score_test.nim +13 -12
  31. data/tracks/nim/exercises/triangle/example.nim +15 -15
  32. data/tracks/nim/exercises/triangle/triangle_test.nim +14 -14
  33. data/tracks/python/exercises/simple-cipher/simple_cipher_test.py +3 -2
  34. metadata +2 -2
@@ -2,23 +2,25 @@ import unittest
2
2
 
3
3
  import hamming
4
4
 
5
- test "no difference between identical strands":
6
- check distance("A", "A") == 0
5
+ suite "Hamming":
6
+
7
+ test "no difference between identical strands":
8
+ check distance("A", "A") == 0
7
9
 
8
- test "complate Hamming distance for single nucleotide strand":
9
- check distance("A", "G") == 1
10
+ test "complate Hamming distance for single nucleotide strand":
11
+ check distance("A", "G") == 1
10
12
 
11
- test "complete Hamming distance for small strand":
12
- check distance("AG", "CT") == 2
13
+ test "complete Hamming distance for small strand":
14
+ check distance("AG", "CT") == 2
13
15
 
14
- test "small Hamming distance":
15
- check distance("AT", "CT") == 1
16
+ test "small Hamming distance":
17
+ check distance("AT", "CT") == 1
16
18
 
17
- test "small Hamming distance in longer strand":
18
- check distance("GGACG", "GGTCG") == 1
19
+ test "small Hamming distance in longer strand":
20
+ check distance("GGACG", "GGTCG") == 1
19
21
 
20
- test "large Hamming distance":
21
- check distance("GATACA", "GCATAA") == 4
22
+ test "large Hamming distance":
23
+ check distance("GATACA", "GCATAA") == 4
22
24
 
23
- test "Hamming distance in a very large strand":
24
- check distance("GGACGGATTCTG", "AGGACGGATTCT") == 9
25
+ test "Hamming distance in a very large strand":
26
+ check distance("GGACGGATTCTG", "AGGACGGATTCT") == 9
@@ -2,11 +2,13 @@ import unittest
2
2
 
3
3
  import helloworld
4
4
 
5
- test "no name":
6
- check helloworld() == "Hello, World!"
5
+ suite "Hello World":
6
+
7
+ test "no name":
8
+ check helloworld() == "Hello, World!"
7
9
 
8
- test "sample name":
9
- check helloworld("Alice") == "Hello, Alice!"
10
+ test "sample name":
11
+ check helloworld("Alice") == "Hello, Alice!"
10
12
 
11
- test "other sample name":
12
- check helloworld("Bob") == "Hello, Bob!"
13
+ test "other sample name":
14
+ check helloworld("Bob") == "Hello, Bob!"
@@ -1,6 +1,6 @@
1
1
  proc isLeapYear*(y: int): bool {.noSideEffect, procvar.} =
2
2
  ## Returns true if `y` is a leap year.
3
3
  ##
4
- ## .. code-block:: nimrod
4
+ ## .. code-block:: nim
5
5
  ## assert isLeapYear(2012)
6
6
  y mod 4 == 0 and (y mod 100 != 0 or y mod 400 == 0)
@@ -2,25 +2,27 @@ import tables
2
2
  import unittest
3
3
  import nucleotide_count
4
4
 
5
- test "count empty string":
6
- check count('A', "") == 0
5
+ suite "Nucleotide":
6
+
7
+ test "count empty string":
8
+ check count('A', "") == 0
7
9
 
8
- test "count repetitive cytosine":
9
- check count('C', "CCCCC") == 5
10
+ test "count repetitive cytosine":
11
+ check count('C', "CCCCC") == 5
10
12
 
11
- test "count only thymine":
12
- check count('T', "GGGGGTAACCCGG") == 1
13
+ test "count only thymine":
14
+ check count('T', "GGGGGTAACCCGG") == 1
13
15
 
14
- test "countDna empty":
15
- check len(countDna("")) == 0
16
+ test "countDna empty":
17
+ check len(countDna("")) == 0
16
18
 
17
- test "countDna only guanine":
18
- let counts = countDna("GGGGGGGG")
19
- check counts['G'] == 8
19
+ test "countDna only guanine":
20
+ let counts = countDna("GGGGGGGG")
21
+ check counts['G'] == 8
20
22
 
21
- test "countDna counts all":
22
- let counts = countDna("AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC")
23
- check counts['A'] == 20
24
- check counts['C'] == 12
25
- check counts['T'] == 21
26
- check counts['G'] == 17
23
+ test "countDna counts all":
24
+ let counts = countDna("AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC")
25
+ check counts['A'] == 20
26
+ check counts['C'] == 12
27
+ check counts['T'] == 21
28
+ check counts['G'] == 17
@@ -4,6 +4,6 @@ const
4
4
  ascii_lowercase = {'a'..'z'}
5
5
 
6
6
  proc isPangram*(sentence:string): bool =
7
- for c in ascii_lowercase:
8
- if c notin sentence.toLowerAscii: return false
9
- return true
7
+ for c in ascii_lowercase:
8
+ if c notin sentence.toLowerAscii: return false
9
+ return true
@@ -2,34 +2,35 @@ import unittest
2
2
 
3
3
  from pangram import isPangram
4
4
 
5
+ suite "Pangram":
5
6
 
6
- test "sentence empty":
7
+ test "sentence empty":
7
8
  check isPangram("") == false
8
9
 
9
- test "recognizes a perfect lower case pangram":
10
+ test "recognizes a perfect lower case pangram":
10
11
  check isPangram("abcdefghijklmnopqrstuvwxyz") == true
11
12
 
12
- test "test pangram with only lower case":
13
+ test "test pangram with only lower case":
13
14
  check isPangram("the quick brown fox jumps over the lazy dog") == true
14
15
 
15
- test "missing character x":
16
+ test "missing character x":
16
17
  check isPangram("a quick movement of the enemy will jeopardize five gunboats") == false
17
18
 
18
- test "another missing character":
19
+ test "another missing character":
19
20
  check isPangram("five boxing wizards jump quickly at it") == false
20
21
 
21
- test "pangram with underscores":
22
+ test "pangram with underscores":
22
23
  check isPangram("the_quick_brown_fox_jumps_over_the_lazy_dog") == true
23
24
 
24
- test "pangram with numbers":
25
+ test "pangram with numbers":
25
26
  check isPangram("the 1 quick brown fox jumps over the 2 lazy dogs") == true
26
27
 
27
- test "missing letters replaced by numbers":
28
+ test "missing letters replaced by numbers":
28
29
  check isPangram("7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog") == false
29
30
 
30
- test "pangram with mixedcase and punctuation":
31
+ test "pangram with mixedcase and punctuation":
31
32
  check isPangram("Five quacking Zephyrs jolt my wax bed.") == true
32
33
 
33
- test "upper and lower case versions of the same character":
34
+ test "upper and lower case versions of the same character":
34
35
  check isPangram("the quick brown fox jumped over the lazy FX") == false
35
36
 
@@ -1,51 +1,53 @@
1
- import tables
2
1
  import unittest
2
+
3
3
  import raindrops
4
4
 
5
- test "convert 1":
6
- check convert(1) == "1"
5
+ suite "Raindrops":
6
+
7
+ test "convert 1":
8
+ check convert(1) == "1"
7
9
 
8
- test "convert 3":
9
- check convert(3) == "Pling"
10
+ test "convert 3":
11
+ check convert(3) == "Pling"
10
12
 
11
- test "convert 5":
12
- check convert(5) == "Plang"
13
+ test "convert 5":
14
+ check convert(5) == "Plang"
13
15
 
14
- test "convert 7":
15
- check convert(7) == "Plong"
16
+ test "convert 7":
17
+ check convert(7) == "Plong"
16
18
 
17
- test "convert 6":
18
- check convert(6) == "Pling"
19
+ test "convert 6":
20
+ check convert(6) == "Pling"
19
21
 
20
- test "convert 9":
21
- check convert(9) == "Pling"
22
+ test "convert 9":
23
+ check convert(9) == "Pling"
22
24
 
23
- test "convert 10":
24
- check convert(10) == "Plang"
25
+ test "convert 10":
26
+ check convert(10) == "Plang"
25
27
 
26
- test "convert 14":
27
- check convert(14) == "Plong"
28
+ test "convert 14":
29
+ check convert(14) == "Plong"
28
30
 
29
- test "convert 15":
30
- check convert(15) == "PlingPlang"
31
+ test "convert 15":
32
+ check convert(15) == "PlingPlang"
31
33
 
32
- test "convert 21":
33
- check convert(21) == "PlingPlong"
34
+ test "convert 21":
35
+ check convert(21) == "PlingPlong"
34
36
 
35
- test "convert 25":
36
- check convert(25) == "Plang"
37
+ test "convert 25":
38
+ check convert(25) == "Plang"
37
39
 
38
- test "convert 35":
39
- check convert(35) == "PlangPlong"
40
+ test "convert 35":
41
+ check convert(35) == "PlangPlong"
40
42
 
41
- test "convert 49":
42
- check convert(49) == "Plong"
43
+ test "convert 49":
44
+ check convert(49) == "Plong"
43
45
 
44
- test "convert 52":
45
- check convert(52) == "52"
46
+ test "convert 52":
47
+ check convert(52) == "52"
46
48
 
47
- test "convert 105":
48
- check convert(105) == "PlingPlangPlong"
49
+ test "convert 105":
50
+ check convert(105) == "PlingPlangPlong"
49
51
 
50
- test "convert 12121":
51
- check convert(12121) == "12121"
52
+ test "convert 12121":
53
+ check convert(12121) == "12121"
@@ -2,21 +2,23 @@ import unittest
2
2
 
3
3
  import rna_transcription
4
4
 
5
- test "transcribes G to C":
6
- check toRna("G") == "C"
5
+ suite "RNA Transcription":
6
+
7
+ test "transcribes G to C":
8
+ check toRna("G") == "C"
7
9
 
8
- test "transcribes C to G":
9
- check toRna("C") == "G"
10
+ test "transcribes C to G":
11
+ check toRna("C") == "G"
10
12
 
11
- test "transcribes T to A":
12
- check toRna("T") == "A"
13
+ test "transcribes T to A":
14
+ check toRna("T") == "A"
13
15
 
14
- test "transcribes A to U":
15
- check toRna("A") == "U"
16
+ test "transcribes A to U":
17
+ check toRna("A") == "U"
16
18
 
17
- test "transcribe all occurrences":
18
- check toRna("ACGTGGTCTTAA") == "UGCACCAGAAUU"
19
+ test "transcribe all occurrences":
20
+ check toRna("ACGTGGTCTTAA") == "UGCACCAGAAUU"
19
21
 
20
- test "raise ValueError on invalid nucleotide":
21
- expect(ValueError):
22
- discard toRna("Q")
22
+ test "raise ValueError on invalid nucleotide":
23
+ expect(ValueError):
24
+ discard toRna("Q")
@@ -1,30 +1,29 @@
1
1
  type
2
- Numeral = tuple[number: int, roman: string]
3
- NumeralArray = array[13, Numeral]
2
+ Numeral = tuple[number: int, roman: string]
3
+ NumeralArray = array[13, Numeral]
4
4
 
5
5
  let
6
- numeral_mapping: NumeralArray = [
7
- (1000, "M"),
8
- (900, "CM"),
9
- (500, "D"),
10
- (400, "CD"),
11
- (100, "C"),
12
- (90, "XC"),
13
- (50, "L"),
14
- (40, "XL"),
15
- (10, "X"),
16
- (9, "IX"),
17
- (5, "V"),
18
- (4, "IV"),
19
- (1, "I")
20
- ]
6
+ numeral_mapping: NumeralArray = [
7
+ (1000, "M"),
8
+ (900, "CM"),
9
+ (500, "D"),
10
+ (400, "CD"),
11
+ (100, "C"),
12
+ (90, "XC"),
13
+ (50, "L"),
14
+ (40, "XL"),
15
+ (10, "X"),
16
+ (9, "IX"),
17
+ (5, "V"),
18
+ (4, "IV"),
19
+ (1, "I")
20
+ ]
21
21
 
22
22
 
23
- proc numeral*(number: int): string =
24
- var s = ""
25
- var n = number
26
- for numeral in numeral_mapping:
27
- while n >= numeral.number:
28
- s = s & numeral.roman
29
- n = n - numeral.number
30
- return s
23
+ proc roman*(number: int): string =
24
+ result = ""
25
+ var n = number
26
+ for numeral in numeral_mapping:
27
+ while n >= numeral.number:
28
+ result = result & numeral.roman
29
+ n = n - numeral.number
@@ -1,28 +1,62 @@
1
- import
2
- roman_numerals, unittest, tables
3
-
4
- let numerals = {
5
- 1: "I",
6
- 2: "II",
7
- 3: "III",
8
- 4: "IV",
9
- 5: "V",
10
- 6: "VI",
11
- 9: "IX",
12
- 27: "XXVII",
13
- 48: "XLVIII",
14
- 49: "XLIX",
15
- 59: "LIX",
16
- 93: "XCIII",
17
- 141: "CXLI",
18
- 163: "CLXIII",
19
- 402: "CDII",
20
- 575: "DLXXV",
21
- 911: "CMXI",
22
- 1024: "MXXIV",
23
- 3000: "MMM",
24
- }.toTable
25
-
26
- test "test numerals":
27
- for arabic, numeral in numerals.pairs:
28
- check numeral(arabic) == numeral
1
+ import unittest
2
+
3
+ import roman_numerals
4
+
5
+ suite "Roman Numerals":
6
+
7
+ test "1 is a single I":
8
+ check roman(1) == "I"
9
+
10
+ test "2 is two I's":
11
+ check roman(2) == "II"
12
+
13
+ test "3 is three I's":
14
+ check roman(3) == "III"
15
+
16
+ test "4, being 5 - 1, is IV":
17
+ check roman(4) == "IV"
18
+
19
+ test "5 is a single V":
20
+ check roman(5) == "V"
21
+
22
+ test "6, being 5 + 1, is VI":
23
+ check roman(6) == "VI"
24
+
25
+ test "9, being 10 - 1, is IX":
26
+ check roman(9) == "IX"
27
+
28
+ test "20 is two X's":
29
+ check roman(27) == "XXVII"
30
+
31
+ test "48 is not 50 - 2 but rather 40 + 8":
32
+ check roman(48) == "XLVIII"
33
+
34
+ test "49 is not 40 + 5 + 4 but rather 50 - 10 + 10 - 1":
35
+ check roman(49) == "XLIX"
36
+
37
+ test "50 is a single L":
38
+ check roman(59) == "LIX"
39
+
40
+ test "90, being 100 - 10, is XC":
41
+ check roman(93) == "XCIII"
42
+
43
+ test "100 is a single C":
44
+ check roman(141) == "CXLI"
45
+
46
+ test "60, being 50 + 10, is LX":
47
+ check roman(163) == "CLXIII"
48
+
49
+ test "400, being 500 - 100, is CD":
50
+ check roman(402) == "CDII"
51
+
52
+ test "500 is a single D":
53
+ check roman(575) == "DLXXV"
54
+
55
+ test "900, being 1000 - 100, is CM":
56
+ check roman(911) == "CMXI"
57
+
58
+ test "1000 is a single M":
59
+ check roman(1024) == "MXXIV"
60
+
61
+ test "3000 is three M's":
62
+ check roman(3000) == "MMM"
@@ -1,13 +1,15 @@
1
- import tables, sequtils, strutils, math
1
+ import
2
+ tables, sequtils, strutils, math
2
3
 
3
- let points = {
4
+ let
5
+ points = {
4
6
  'a': 1, 'b': 3, 'c': 3, 'd': 2, 'e': 1,
5
7
  'f': 4, 'g': 2, 'h': 4, 'i': 1, 'j': 8,
6
8
  'k': 5, 'l': 1, 'm': 3, 'n': 1, 'o': 1,
7
9
  'p': 3, 'q': 10, 'r': 1, 's': 1, 't': 1,
8
10
  'u': 1, 'v': 4, 'w': 4, 'x': 8, 'y': 4,
9
11
  'z': 10
10
- }.toTable
12
+ }.toTable
11
13
 
12
14
  proc score*(word: string): int =
13
- sum(word.toLowerAscii.map(proc(x: char): int = points[x]))
15
+ word.toLowerAscii.mapIt(points[it]).sum
@@ -2,36 +2,37 @@ import unittest
2
2
 
3
3
  from scrabble_score import score
4
4
 
5
+ suite "Scrabble Score":
5
6
 
6
- test "lowercase letter":
7
+ test "lowercase letter":
7
8
  check score("a") == 1
8
9
 
9
- test "uppercase letter":
10
+ test "uppercase letter":
10
11
  check score("A") == 1
11
12
 
12
- test "valuable letter":
13
+ test "valuable letter":
13
14
  check score("f") == 4
14
15
 
15
- test "short word":
16
+ test "short word":
16
17
  check score("at") == 2
17
18
 
18
- test "short valuable word":
19
+ test "short valuable word":
19
20
  check score("zoo") == 12
20
21
 
21
- test "medium word":
22
+ test "medium word":
22
23
  check score("street") == 6
23
24
 
24
- test "medium valuable word":
25
+ test "medium valuable word":
25
26
  check score("quirky") == 22
26
27
 
27
- test "long mixed case word":
28
+ test "long mixed case word":
28
29
  check score("OxyphenButazone") == 41
29
30
 
30
- test "english like word":
31
+ test "english like word":
31
32
  check score("pinata") == 8
32
33
 
33
- test "empty input":
34
+ test "empty input":
34
35
  check score("") == 0
35
36
 
36
- test "entire alphabet available":
37
- check score("abcdefghijklmnopqrstuvwxyz") == 87
37
+ test "entire alphabet available":
38
+ check score("abcdefghijklmnopqrstuvwxyz") == 87
@@ -1,25 +1,25 @@
1
1
  import sequtils
2
2
 
3
3
  proc valid(a, b, c: int): bool =
4
- let greatThenZero = all([a, b, c], proc (x: int): bool = return x > 0)
5
- let equalityCheck = (a + b >= c) and (a + c >= b) and (b + c >= a)
4
+ let greatThenZero = all([a, b, c], proc (x: int): bool = return x > 0)
5
+ let equalityCheck = (a + b >= c) and (a + c >= b) and (b + c >= a)
6
6
 
7
- greatThenZero and equalityCheck
7
+ greatThenZero and equalityCheck
8
8
 
9
9
  proc isEquilateral*(sides: array[3, int]): bool =
10
- let a = sides[0]
11
- let b = sides[1]
12
- let c = sides[2]
13
- valid(a, b, c) and all(sides, proc (x: int): bool = return a == x)
10
+ let a = sides[0]
11
+ let b = sides[1]
12
+ let c = sides[2]
13
+ valid(a, b, c) and all(sides, proc (x: int): bool = return a == x)
14
14
 
15
15
  proc isIsosceles*(sides: array[3, int]): bool =
16
- let a = sides[0]
17
- let b = sides[1]
18
- let c = sides[2]
19
- valid(a, b, c) and (a == b or b == c or a == c)
16
+ let a = sides[0]
17
+ let b = sides[1]
18
+ let c = sides[2]
19
+ valid(a, b, c) and (a == b or b == c or a == c)
20
20
 
21
21
  proc isScalene*(sides: array[3, int]): bool =
22
- let a = sides[0]
23
- let b = sides[1]
24
- let c = sides[2]
25
- valid(a, b, c) and not isIsosceles(sides)
22
+ let a = sides[0]
23
+ let b = sides[1]
24
+ let c = sides[2]
25
+ valid(a, b, c) and not isIsosceles(sides)
@@ -5,49 +5,49 @@ import triangle
5
5
  suite "returns true if the triangle is equilateral":
6
6
 
7
7
  test "true if all sides are equal":
8
- check isEquilateral([2, 2, 2]) == true
8
+ check isEquilateral([2, 2, 2]) == true
9
9
 
10
10
  test "false if any side is unequal":
11
- check isEquilateral([2, 3, 2]) == false
11
+ check isEquilateral([2, 3, 2]) == false
12
12
 
13
13
  test "false if no sides are equal":
14
- check isEquilateral([5, 4, 6]) == false
14
+ check isEquilateral([5, 4, 6]) == false
15
15
 
16
16
  test "false if all sides are zero":
17
- check isEquilateral([0, 0, 0]) == false
17
+ check isEquilateral([0, 0, 0]) == false
18
18
 
19
19
 
20
20
  suite "returns true if the triangle is isosceles":
21
21
 
22
22
  test "true if last two sides are equal":
23
- check isIsosceles([3, 4, 4]) == true
23
+ check isIsosceles([3, 4, 4]) == true
24
24
 
25
25
  test "true if first two sides are equal":
26
- check isIsosceles([4, 4, 3]) == true
26
+ check isIsosceles([4, 4, 3]) == true
27
27
 
28
28
  test "true if first and last sides are equal":
29
- check isIsosceles([4, 3, 4]) == true
29
+ check isIsosceles([4, 3, 4]) == true
30
30
 
31
31
  test "is equilateral triangles are also is isosceles":
32
- check isIsosceles([4, 4, 4]) == true
32
+ check isIsosceles([4, 4, 4]) == true
33
33
 
34
34
  test "false if no sides are equal":
35
- check isIsosceles([2, 3, 4]) == false
35
+ check isIsosceles([2, 3, 4]) == false
36
36
 
37
37
  test "violation of triangle inequality not is isosceles":
38
- check isIsosceles([1, 1, 3]) == false
38
+ check isIsosceles([1, 1, 3]) == false
39
39
 
40
40
 
41
41
  suite "returns true if the triangle is scalene":
42
42
 
43
43
  test "true if no sides are equal":
44
- check isScalene([5, 4, 6]) == true
44
+ check isScalene([5, 4, 6]) == true
45
45
 
46
46
  test "false if all sides are equal":
47
- check isScalene([4, 4, 4]) == false
47
+ check isScalene([4, 4, 4]) == false
48
48
 
49
49
  test "false if two sides are equal":
50
- check isScalene([4, 4, 3]) == false
50
+ check isScalene([4, 4, 3]) == false
51
51
 
52
52
  test "violation of triangle inequality not is scalene":
53
- check isScalene([7, 3, 2]) == false
53
+ check isScalene([7, 3, 2]) == false
@@ -4,7 +4,7 @@ import re
4
4
  from simple_cipher import Cipher
5
5
 
6
6
 
7
- # Tests adapted from `problem-specifications//canonical-data.json` @ v1.0.0
7
+ # Tests adapted from `problem-specifications//canonical-data.json` @ v1.1.0
8
8
 
9
9
  class SimpleCipherTest(unittest.TestCase):
10
10
  # Utility functions
@@ -21,7 +21,8 @@ class SimpleCipherTest(unittest.TestCase):
21
21
  class RandomKeyCipherTest(SimpleCipherTest):
22
22
  def test_can_encode(self):
23
23
  cipher = Cipher()
24
- self.assertEqual(cipher.encode('aaaaaaaaaa'), cipher.key[:10])
24
+ plaintext = 'aaaaaaaaaa'
25
+ self.assertEqual(cipher.encode(plaintext), cipher.key[:len(plaintext)])
25
26
 
26
27
  def test_can_decode(self):
27
28
  cipher = Cipher()
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1.172
4
+ version: 2.2.1.173
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-21 00:00:00.000000000 Z
11
+ date: 2018-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip