trackler 2.2.1.95 → 2.2.1.96
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/two-bucket/canonical-data.json +31 -31
- data/tracks/csharp/docs/ABOUT.md +21 -3
- data/tracks/dart/.travis.yml +1 -2
- data/tracks/dart/README.md +2 -2
- data/tracks/dart/{tool/create-exercise → bin/create_exercise.dart} +14 -10
- data/tracks/dart/test/create_exercise_test.dart +132 -0
- data/tracks/dart/test/exercises_test.dart +1 -1
- data/tracks/fsharp/exercises/list-ops/Example.fs +5 -5
- data/tracks/fsharp/exercises/list-ops/ListOps.fs +1 -1
- data/tracks/fsharp/exercises/list-ops/ListOpsTest.fs +41 -62
- data/tracks/fsharp/generators/Common.fs +3 -0
- data/tracks/fsharp/generators/Formatting.fs +3 -1
- data/tracks/fsharp/generators/Generators.fs +21 -0
- data/tracks/go/config.json +14 -0
- data/tracks/go/exercises/grep/.meta/gen.go +76 -0
- data/tracks/go/exercises/grep/.meta/hints.md +13 -0
- data/tracks/go/exercises/grep/README.md +104 -0
- data/tracks/go/exercises/grep/cases_test.go +202 -0
- data/tracks/go/exercises/grep/example.go +102 -0
- data/tracks/go/exercises/grep/grep_test.go +84 -0
- data/tracks/java/exercises/anagram/.meta/version +1 -1
- data/tracks/java/exercises/anagram/src/test/java/AnagramTest.java +0 -32
- data/tracks/java/exercises/space-age/.meta/src/reference/java/SpaceAge.java +0 -4
- data/tracks/java/exercises/space-age/.meta/version +1 -0
- data/tracks/java/exercises/space-age/src/test/java/SpaceAgeTest.java +0 -16
- data/tracks/julia/.gitignore +1 -0
- data/tracks/julia/exercises/complex-numbers/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/julia/exercises/custom-set/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/julia/exercises/robot-name/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/julia/exercises/rotational-cipher/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/julia/runtests.jl +24 -25
- data/tracks/perl6/.travis.yml +7 -3
- data/tracks/perl6/Dockerfile +4 -0
- data/tracks/perl6/exercises/accumulate/Accumulate.pm6 +1 -1
- data/tracks/perl6/exercises/accumulate/Example.pm6 +1 -1
- data/tracks/perl6/exercises/accumulate/accumulate.t +6 -15
- data/tracks/perl6/exercises/accumulate/example.yaml +2 -3
- data/tracks/perl6/exercises/acronym/Acronym.pm6 +1 -1
- data/tracks/perl6/exercises/acronym/Example.pm6 +1 -1
- data/tracks/perl6/exercises/acronym/acronym.t +7 -29
- data/tracks/perl6/exercises/acronym/example.yaml +2 -3
- data/tracks/perl6/exercises/all-your-base/AllYourBase.pm6 +1 -1
- data/tracks/perl6/exercises/all-your-base/Example.pm6 +1 -1
- data/tracks/perl6/exercises/all-your-base/all-your-base.t +7 -29
- data/tracks/perl6/exercises/all-your-base/example.yaml +2 -3
- data/tracks/perl6/exercises/allergies/Allergies.pm6 +1 -1
- data/tracks/perl6/exercises/allergies/Example.pm6 +1 -1
- data/tracks/perl6/exercises/allergies/allergies.t +7 -29
- data/tracks/perl6/exercises/allergies/example.yaml +2 -3
- data/tracks/perl6/exercises/anagram/Anagram.pm6 +1 -1
- data/tracks/perl6/exercises/anagram/Example.pm6 +1 -1
- data/tracks/perl6/exercises/anagram/anagram.t +7 -29
- data/tracks/perl6/exercises/anagram/example.yaml +2 -3
- data/tracks/perl6/exercises/atbash-cipher/AtbashCipher.pm6 +1 -1
- data/tracks/perl6/exercises/atbash-cipher/Example.pm6 +1 -1
- data/tracks/perl6/exercises/atbash-cipher/atbash-cipher.t +7 -29
- data/tracks/perl6/exercises/atbash-cipher/example.yaml +2 -3
- data/tracks/{julia/exercises/.keep → perl6/exercises/binary/Binary.pm6} +0 -0
- data/tracks/perl6/exercises/binary/binary.t +3 -5
- data/tracks/perl6/exercises/bob/Bob.pm6 +1 -1
- data/tracks/perl6/exercises/bob/Example.pm6 +1 -1
- data/tracks/perl6/exercises/bob/bob.t +9 -32
- data/tracks/perl6/exercises/bob/example.yaml +3 -7
- data/tracks/perl6/exercises/clock/Clock.pm6 +1 -1
- data/tracks/perl6/exercises/clock/Example.pm6 +1 -1
- data/tracks/perl6/exercises/clock/clock.t +12 -32
- data/tracks/perl6/exercises/clock/example.yaml +6 -6
- data/tracks/perl6/exercises/etl/ETL.pm6 +1 -1
- data/tracks/perl6/exercises/etl/Example.pm6 +1 -1
- data/tracks/perl6/exercises/etl/etl.t +7 -29
- data/tracks/perl6/exercises/etl/example.yaml +2 -3
- data/tracks/perl6/exercises/flatten-array/Example.pm6 +1 -1
- data/tracks/perl6/exercises/flatten-array/FlattenArray.pm6 +1 -1
- data/tracks/perl6/exercises/flatten-array/example.yaml +2 -3
- data/tracks/perl6/exercises/flatten-array/flatten-array.t +7 -29
- data/tracks/perl6/exercises/grade-school/Example.pm6 +1 -1
- data/tracks/perl6/exercises/grade-school/GradeSchool.pm6 +1 -1
- data/tracks/perl6/exercises/grade-school/example.yaml +2 -3
- data/tracks/perl6/exercises/grade-school/grade-school.t +6 -15
- data/tracks/perl6/exercises/grains/Example.pm6 +1 -1
- data/tracks/perl6/exercises/grains/Grains.pm6 +1 -1
- data/tracks/perl6/exercises/grains/example.yaml +2 -3
- data/tracks/perl6/exercises/grains/grains.t +7 -29
- data/tracks/perl6/exercises/hamming/Example.pm6 +1 -1
- data/tracks/perl6/exercises/hamming/Hamming.pm6 +1 -1
- data/tracks/perl6/exercises/hamming/example.yaml +2 -3
- data/tracks/perl6/exercises/hamming/hamming.t +7 -29
- data/tracks/perl6/exercises/hello-world/Example.pm6 +1 -1
- data/tracks/perl6/exercises/hello-world/HelloWorld.pm6 +1 -1
- data/tracks/perl6/exercises/hello-world/example.yaml +2 -8
- data/tracks/perl6/exercises/hello-world/hello-world.t +7 -33
- data/tracks/perl6/exercises/leap/Example.pm6 +1 -1
- data/tracks/perl6/exercises/leap/Leap.pm6 +1 -1
- data/tracks/perl6/exercises/leap/example.yaml +2 -3
- data/tracks/perl6/exercises/leap/leap.t +7 -29
- data/tracks/perl6/exercises/linked-list/Example.pm6 +1 -1
- data/tracks/perl6/exercises/linked-list/LinkedList.pm6 +1 -1
- data/tracks/perl6/exercises/linked-list/example.yaml +3 -3
- data/tracks/perl6/exercises/linked-list/linked-list.t +9 -16
- data/tracks/perl6/exercises/luhn/Example.pm6 +1 -1
- data/tracks/perl6/exercises/luhn/Luhn.pm6 +1 -1
- data/tracks/perl6/exercises/luhn/example.yaml +2 -3
- data/tracks/perl6/exercises/luhn/luhn.t +7 -29
- data/tracks/perl6/exercises/meetup/Example.pm6 +1 -1
- data/tracks/perl6/exercises/meetup/Meetup.pm6 +1 -1
- data/tracks/perl6/exercises/meetup/example.yaml +2 -3
- data/tracks/perl6/exercises/meetup/meetup.t +7 -29
- data/tracks/perl6/exercises/nucleotide-count/Example.pm6 +1 -1
- data/tracks/perl6/exercises/nucleotide-count/NucleotideCount.pm6 +1 -1
- data/tracks/perl6/exercises/nucleotide-count/example.yaml +2 -3
- data/tracks/perl6/exercises/nucleotide-count/nucleotide-count.t +7 -29
- data/tracks/perl6/exercises/pangram/Example.pm6 +1 -1
- data/tracks/perl6/exercises/pangram/Pangram.pm6 +1 -1
- data/tracks/perl6/exercises/pangram/example.yaml +2 -3
- data/tracks/perl6/exercises/pangram/pangram.t +7 -29
- data/tracks/perl6/exercises/phone-number/Example.pm6 +1 -1
- data/tracks/perl6/exercises/phone-number/Phone.pm6 +1 -1
- data/tracks/perl6/exercises/phone-number/example.yaml +2 -3
- data/tracks/perl6/exercises/phone-number/phone-number.t +7 -29
- data/tracks/perl6/exercises/raindrops/Example.pm6 +1 -1
- data/tracks/perl6/exercises/raindrops/Raindrops.pm6 +1 -1
- data/tracks/perl6/exercises/raindrops/example.yaml +2 -3
- data/tracks/perl6/exercises/raindrops/raindrops.t +7 -29
- data/tracks/perl6/exercises/rna-transcription/Example.pm6 +1 -1
- data/tracks/perl6/exercises/rna-transcription/RNA.pm6 +1 -1
- data/tracks/perl6/exercises/rna-transcription/example.yaml +2 -3
- data/tracks/perl6/exercises/rna-transcription/rna-transcription.t +7 -29
- data/tracks/perl6/exercises/robot-name/Example.pm6 +1 -1
- data/tracks/perl6/exercises/robot-name/Robot.pm6 +1 -1
- data/tracks/perl6/exercises/robot-name/example.yaml +5 -5
- data/tracks/perl6/exercises/robot-name/robot-name.t +10 -17
- data/tracks/perl6/exercises/roman-numerals/Example.pm6 +1 -1
- data/tracks/perl6/exercises/roman-numerals/RomanNumerals.pm6 +1 -1
- data/tracks/perl6/exercises/roman-numerals/example.yaml +2 -3
- data/tracks/perl6/exercises/roman-numerals/roman-numerals.t +7 -29
- data/tracks/perl6/exercises/scrabble-score/Example.pm6 +1 -1
- data/tracks/perl6/exercises/scrabble-score/Scrabble.pm6 +1 -1
- data/tracks/perl6/exercises/scrabble-score/example.yaml +2 -3
- data/tracks/perl6/exercises/scrabble-score/scrabble-score.t +7 -29
- data/tracks/perl6/exercises/space-age/Example.pm6 +1 -1
- data/tracks/perl6/exercises/space-age/SpaceAge.pm6 +1 -1
- data/tracks/perl6/exercises/space-age/example.yaml +2 -3
- data/tracks/perl6/exercises/space-age/space-age.t +7 -29
- data/tracks/perl6/exercises/trinary/Trinary.pm6 +0 -0
- data/tracks/perl6/exercises/trinary/trinary.t +2 -5
- data/tracks/perl6/exercises/two-fer/Example.pm6 +1 -1
- data/tracks/perl6/exercises/two-fer/TwoFer.pm6 +1 -1
- data/tracks/perl6/exercises/two-fer/example.yaml +2 -8
- data/tracks/perl6/exercises/two-fer/two-fer.t +7 -33
- data/tracks/perl6/exercises/word-count/Example.pm6 +1 -1
- data/tracks/perl6/exercises/word-count/WordCount.pm6 +1 -1
- data/tracks/perl6/exercises/word-count/example.yaml +2 -3
- data/tracks/perl6/exercises/word-count/word-count.t +7 -29
- data/tracks/perl6/exercises/wordy/Example.pm6 +1 -1
- data/tracks/perl6/exercises/wordy/Wordy.pm6 +1 -1
- data/tracks/perl6/exercises/wordy/example.yaml +2 -3
- data/tracks/perl6/exercises/wordy/wordy.t +7 -29
- data/tracks/perl6/templates/test.mustache +10 -39
- data/tracks/python/config.json +10 -0
- data/tracks/python/exercises/all-your-base/all_your_base_test.py +2 -2
- data/tracks/python/exercises/binary-search/binary_search_test.py +2 -2
- data/tracks/python/exercises/binary/binary_test.py +2 -2
- data/tracks/python/exercises/bob/bob_test.py +4 -2
- data/tracks/python/exercises/bob/example.py +5 -2
- data/tracks/python/exercises/circular-buffer/circular_buffer_test.py +2 -2
- data/tracks/python/exercises/custom-set/README.md +20 -0
- data/tracks/python/exercises/custom-set/custom_set.py +30 -0
- data/tracks/python/exercises/custom-set/custom_set_test.py +212 -0
- data/tracks/python/exercises/custom-set/example.py +45 -0
- data/tracks/python/exercises/dot-dsl/dot_dsl_test.py +20 -10
- data/tracks/python/exercises/error-handling/error_handling_test.py +2 -2
- data/tracks/python/exercises/forth/forth_test.py +18 -18
- data/tracks/python/exercises/grains/grains_test.py +2 -2
- data/tracks/python/exercises/hamming/hamming_test.py +2 -2
- data/tracks/python/exercises/hexadecimal/hexadecimal_test.py +2 -2
- data/tracks/python/exercises/largest-series-product/largest_series_product_test.py +2 -2
- data/tracks/python/exercises/meetup/meetup_test.py +2 -2
- data/tracks/python/exercises/minesweeper/minesweeper_test.py +2 -2
- data/tracks/python/exercises/nth-prime/nth_prime_test.py +2 -2
- data/tracks/python/exercises/nucleotide-count/nucleotide_count_test.py +2 -2
- data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +2 -2
- data/tracks/python/exercises/octal/octal_test.py +2 -2
- data/tracks/python/exercises/perfect-numbers/perfect_numbers_test.py +2 -2
- data/tracks/python/exercises/phone-number/phone_number_test.py +2 -2
- data/tracks/python/exercises/pov/pov_test.py +2 -2
- data/tracks/python/exercises/protein-translation/protein_translation_test.py +2 -2
- data/tracks/python/exercises/pythagorean-triplet/pythagorean_triplet_test.py +2 -2
- data/tracks/python/exercises/queen-attack/queen_attack_test.py +2 -2
- data/tracks/python/exercises/rna-transcription/rna_transcription_test.py +2 -2
- data/tracks/python/exercises/saddle-points/saddle_points_test.py +2 -2
- data/tracks/python/exercises/say/say_test.py +2 -2
- data/tracks/python/exercises/scale-generator/scale_generator_test.py +2 -2
- data/tracks/python/exercises/series/series_test.py +2 -2
- data/tracks/python/exercises/simple-cipher/simple_cipher_test.py +2 -2
- data/tracks/python/exercises/simple-linked-list/simple_linked_list_test.py +2 -2
- data/tracks/python/exercises/tree-building/tree_building_test.py +2 -2
- data/tracks/python/exercises/triangle/example.py +14 -24
- data/tracks/python/exercises/triangle/triangle.py +6 -6
- data/tracks/python/exercises/triangle/triangle_test.py +42 -44
- data/tracks/python/exercises/variable-length-quantity/variable_length_quantity_test.py +2 -2
- data/tracks/python/exercises/wordy/wordy_test.py +2 -2
- data/tracks/python/test/check-exercises.py +2 -1
- metadata +22 -8
@@ -37,9 +37,9 @@ class DNATests(unittest.TestCase):
|
|
37
37
|
# Utility functions
|
38
38
|
def setUp(self):
|
39
39
|
try:
|
40
|
-
self.assertRaisesRegex
|
40
|
+
self.assertRaisesRegex
|
41
41
|
except AttributeError:
|
42
|
-
|
42
|
+
self.assertRaisesRegex = self.assertRaisesRegexp
|
43
43
|
|
44
44
|
def assertRaisesWithMessage(self, exception):
|
45
45
|
return self.assertRaisesRegex(exception, r".+")
|
@@ -44,9 +44,9 @@ class SaddlePointTest(unittest.TestCase):
|
|
44
44
|
# Utility functions
|
45
45
|
def setUp(self):
|
46
46
|
try:
|
47
|
-
self.assertRaisesRegex
|
47
|
+
self.assertRaisesRegex
|
48
48
|
except AttributeError:
|
49
|
-
|
49
|
+
self.assertRaisesRegex = self.assertRaisesRegexp
|
50
50
|
|
51
51
|
def assertRaisesWithMessage(self, exception):
|
52
52
|
return self.assertRaisesRegex(exception, r".+")
|
@@ -74,9 +74,9 @@ class SayTest(unittest.TestCase):
|
|
74
74
|
# Utility functions
|
75
75
|
def setUp(self):
|
76
76
|
try:
|
77
|
-
self.assertRaisesRegex
|
77
|
+
self.assertRaisesRegex
|
78
78
|
except AttributeError:
|
79
|
-
|
79
|
+
self.assertRaisesRegex = self.assertRaisesRegexp
|
80
80
|
|
81
81
|
def assertRaisesWithMessage(self, exception):
|
82
82
|
return self.assertRaisesRegex(exception, r".+")
|
@@ -122,9 +122,9 @@ class ScaleGeneratorTest(unittest.TestCase):
|
|
122
122
|
# Utility functions
|
123
123
|
def setUp(self):
|
124
124
|
try:
|
125
|
-
self.assertRaisesRegex
|
125
|
+
self.assertRaisesRegex
|
126
126
|
except AttributeError:
|
127
|
-
|
127
|
+
self.assertRaisesRegex = self.assertRaisesRegexp
|
128
128
|
|
129
129
|
def assertRaisesWithMessage(self, exception):
|
130
130
|
return self.assertRaisesRegex(exception, r".+")
|
@@ -47,9 +47,9 @@ class SeriesTest(unittest.TestCase):
|
|
47
47
|
# Utility functions
|
48
48
|
def setUp(self):
|
49
49
|
try:
|
50
|
-
self.assertRaisesRegex
|
50
|
+
self.assertRaisesRegex
|
51
51
|
except AttributeError:
|
52
|
-
|
52
|
+
self.assertRaisesRegex = self.assertRaisesRegexp
|
53
53
|
|
54
54
|
def assertRaisesWithMessage(self, exception):
|
55
55
|
return self.assertRaisesRegex(exception, r".+")
|
@@ -76,9 +76,9 @@ class CipherTest(unittest.TestCase):
|
|
76
76
|
# Utility functions
|
77
77
|
def setUp(self):
|
78
78
|
try:
|
79
|
-
self.assertRaisesRegex
|
79
|
+
self.assertRaisesRegex
|
80
80
|
except AttributeError:
|
81
|
-
|
81
|
+
self.assertRaisesRegex = self.assertRaisesRegexp
|
82
82
|
|
83
83
|
def assertRaisesWithMessage(self, exception):
|
84
84
|
return self.assertRaisesRegex(exception, r".+")
|
@@ -110,9 +110,9 @@ class LinkedListTest(unittest.TestCase):
|
|
110
110
|
# Utility functions
|
111
111
|
def setUp(self):
|
112
112
|
try:
|
113
|
-
self.assertRaisesRegex
|
113
|
+
self.assertRaisesRegex
|
114
114
|
except AttributeError:
|
115
|
-
|
115
|
+
self.assertRaisesRegex = self.assertRaisesRegexp
|
116
116
|
|
117
117
|
def assertRaisesWithMessage(self, exception):
|
118
118
|
return self.assertRaisesRegex(exception, r".+")
|
@@ -181,9 +181,9 @@ class TestBuildingTest(unittest.TestCase):
|
|
181
181
|
# Utility functions
|
182
182
|
def setUp(self):
|
183
183
|
try:
|
184
|
-
self.assertRaisesRegex
|
184
|
+
self.assertRaisesRegex
|
185
185
|
except AttributeError:
|
186
|
-
|
186
|
+
self.assertRaisesRegex = self.assertRaisesRegexp
|
187
187
|
|
188
188
|
def assertRaisesWithMessage(self, exception):
|
189
189
|
return self.assertRaisesRegex(exception, r".+")
|
@@ -1,30 +1,20 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
def valid(sides):
|
2
|
+
return (
|
3
|
+
sum(sorted(sides)[:2]) >= sorted(sides)[2] and
|
4
|
+
all(s > 0 for s in sides)
|
5
|
+
)
|
3
6
|
|
4
7
|
|
5
|
-
|
6
|
-
|
7
|
-
self.sides = (x, y, z)
|
8
|
+
def is_equilateral(sides):
|
9
|
+
return valid(sides) and all(sides[0] == s for s in sides)
|
8
10
|
|
9
|
-
if self._invalid_lengths() or self._violates_inequality():
|
10
|
-
raise TriangleError("Side lengths are invalid for a triangle")
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
def is_isosceles(sides):
|
13
|
+
return (
|
14
|
+
valid(sides) and
|
15
|
+
any(s1 == s2 for s1, s2 in zip(sorted(sides), sorted(sides)[1:]))
|
16
|
+
)
|
14
17
|
|
15
|
-
def _violates_inequality(self):
|
16
|
-
x, y, z = self.sides
|
17
|
-
return any([
|
18
|
-
x + y <= z,
|
19
|
-
x + z <= y,
|
20
|
-
y + z <= x,
|
21
|
-
])
|
22
18
|
|
23
|
-
|
24
|
-
|
25
|
-
if distinct == 1:
|
26
|
-
return 'equilateral'
|
27
|
-
elif distinct == 2:
|
28
|
-
return 'isosceles'
|
29
|
-
else:
|
30
|
-
return 'scalene'
|
19
|
+
def is_scalene(sides):
|
20
|
+
return valid(sides) and not is_isosceles(sides)
|
@@ -1,67 +1,65 @@
|
|
1
1
|
import unittest
|
2
2
|
|
3
|
-
from triangle import
|
3
|
+
from triangle import is_equilateral, is_isosceles, is_scalene
|
4
4
|
|
5
5
|
|
6
|
-
|
7
|
-
def test_equilateral_triangles_have_equal_sides(self):
|
8
|
-
self.assertEqual(Triangle(2, 2, 2).kind(), "equilateral")
|
6
|
+
# Tests adapted from `problem-specifications//canonical-data.json` @ v1.1.0
|
9
7
|
|
10
|
-
|
11
|
-
|
8
|
+
class is_equilateralTests(unittest.TestCase):
|
9
|
+
def test_true_if_all_sides_are_equal(self):
|
10
|
+
self.assertIs(is_equilateral([2, 2, 2]), True)
|
12
11
|
|
13
|
-
def
|
14
|
-
self.
|
12
|
+
def test_false_if_any_side_is_unequal(self):
|
13
|
+
self.assertIs(is_equilateral([2, 3, 2]), False)
|
15
14
|
|
16
|
-
def
|
17
|
-
self.
|
15
|
+
def test_false_if_no_sides_are_equal(self):
|
16
|
+
self.assertIs(is_equilateral([5, 4, 6]), False)
|
18
17
|
|
19
|
-
def
|
20
|
-
self.
|
18
|
+
def test_false_if_all_sides_are_zero(self):
|
19
|
+
self.assertIs(is_equilateral([0, 0, 0]), False)
|
21
20
|
|
22
|
-
def
|
23
|
-
self.
|
21
|
+
def test_sides_may_be_floats(self):
|
22
|
+
self.assertIs(is_equilateral([0.5, 0.5, 0.5]), True)
|
24
23
|
|
25
|
-
def test_scalene_triangles_have_no_equal_sides(self):
|
26
|
-
self.assertEqual(Triangle(3, 4, 5).kind(), "scalene")
|
27
24
|
|
28
|
-
|
29
|
-
|
25
|
+
class is_isoscelesTests(unittest.TestCase):
|
26
|
+
def test_true_if_last_two_sides_are_equal(self):
|
27
|
+
self.assertIs(is_isosceles([3, 4, 4]), True)
|
30
28
|
|
31
|
-
|
29
|
+
def test_true_if_first_two_sides_are_equal(self):
|
30
|
+
self.assertIs(is_isosceles([4, 4, 3]), True)
|
32
31
|
|
33
|
-
def
|
34
|
-
self.
|
32
|
+
def test_true_if_first_and_last_sides_are_equal(self):
|
33
|
+
self.assertIs(is_isosceles([4, 3, 4]), True)
|
35
34
|
|
36
|
-
def
|
37
|
-
|
38
|
-
Triangle(0, 0, 0)
|
35
|
+
def test_is_equilateral_triangles_are_also_is_isosceles(self):
|
36
|
+
self.assertIs(is_isosceles([4, 4, 4]), True)
|
39
37
|
|
40
|
-
def
|
41
|
-
|
42
|
-
Triangle(3, 4, -5)
|
38
|
+
def test_false_if_no_sides_are_equal(self):
|
39
|
+
self.assertIs(is_isosceles([2, 3, 4]), False)
|
43
40
|
|
44
|
-
def
|
45
|
-
|
46
|
-
Triangle(1, 1, 3)
|
41
|
+
def test_violation_of_triangle_inequality_not_is_isosceles(self):
|
42
|
+
self.assertIs(is_isosceles([1, 1, 3]), False)
|
47
43
|
|
48
|
-
def
|
49
|
-
|
50
|
-
Triangle(2, 4, 2)
|
44
|
+
def test_sides_may_be_floats(self):
|
45
|
+
self.assertIs(is_isosceles([0.5, 0.4, 0.5]), True)
|
51
46
|
|
52
|
-
def test_triangles_violating_triangle_inequality_are_illegal_3(self):
|
53
|
-
with self.assertRaisesWithMessage(TriangleError):
|
54
|
-
Triangle(7, 3, 2)
|
55
47
|
|
56
|
-
|
57
|
-
def
|
58
|
-
|
59
|
-
self.assertRaisesRegex = self.assertRaisesRegexp
|
60
|
-
except AttributeError:
|
61
|
-
pass
|
48
|
+
class is_scaleneTests(unittest.TestCase):
|
49
|
+
def test_true_if_no_sides_are_equal(self):
|
50
|
+
self.assertIs(is_scalene([5, 4, 6]), True)
|
62
51
|
|
63
|
-
def
|
64
|
-
|
52
|
+
def test_false_if_all_sides_are_equal(self):
|
53
|
+
self.assertIs(is_scalene([4, 4, 4]), False)
|
54
|
+
|
55
|
+
def test_false_if_two_sides_are_equal(self):
|
56
|
+
self.assertIs(is_scalene([4, 4, 3]), False)
|
57
|
+
|
58
|
+
def test_violation_of_triangle_inequality_not_is_scalene(self):
|
59
|
+
self.assertIs(is_scalene([7, 3, 2]), False)
|
60
|
+
|
61
|
+
def test_sides_may_be_floats(self):
|
62
|
+
self.assertIs(is_scalene([0.5, 0.4, 0.6]), True)
|
65
63
|
|
66
64
|
|
67
65
|
if __name__ == '__main__':
|
@@ -98,9 +98,9 @@ class TestVLQ(unittest.TestCase):
|
|
98
98
|
# Utility functions
|
99
99
|
def setUp(self):
|
100
100
|
try:
|
101
|
-
self.assertRaisesRegex
|
101
|
+
self.assertRaisesRegex
|
102
102
|
except AttributeError:
|
103
|
-
|
103
|
+
self.assertRaisesRegex = self.assertRaisesRegexp
|
104
104
|
|
105
105
|
def assertRaisesWithMessage(self, exception):
|
106
106
|
return self.assertRaisesRegex(exception, r".+")
|
@@ -71,9 +71,9 @@ class WordyTest(unittest.TestCase):
|
|
71
71
|
# Utility functions
|
72
72
|
def setUp(self):
|
73
73
|
try:
|
74
|
-
self.assertRaisesRegex
|
74
|
+
self.assertRaisesRegex
|
75
75
|
except AttributeError:
|
76
|
-
|
76
|
+
self.assertRaisesRegex = self.assertRaisesRegexp
|
77
77
|
|
78
78
|
def assertRaisesWithMessage(self, exception):
|
79
79
|
return self.assertRaisesRegex(exception, r".+")
|
@@ -47,7 +47,8 @@ def load_config():
|
|
47
47
|
raise SystemExit(1)
|
48
48
|
|
49
49
|
try:
|
50
|
-
problems = [entry['slug'] for entry in data['exercises']
|
50
|
+
problems = [entry['slug'] for entry in data['exercises']
|
51
|
+
if "deprecated" not in entry]
|
51
52
|
except KeyError:
|
52
53
|
print('FAIL: config.json has an incorrect format')
|
53
54
|
raise SystemExit(1)
|
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.
|
4
|
+
version: 2.2.1.96
|
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-01-
|
11
|
+
date: 2018-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -3230,6 +3230,7 @@ files:
|
|
3230
3230
|
- tracks/dart/README.md
|
3231
3231
|
- tracks/dart/analysis_options.yaml
|
3232
3232
|
- tracks/dart/bin/check_formatting
|
3233
|
+
- tracks/dart/bin/create_exercise.dart
|
3233
3234
|
- tracks/dart/bin/fetch-configlet
|
3234
3235
|
- tracks/dart/config.json
|
3235
3236
|
- tracks/dart/config/exercise_readme.go.tmpl
|
@@ -3312,8 +3313,8 @@ files:
|
|
3312
3313
|
- tracks/dart/img/icon.svg
|
3313
3314
|
- tracks/dart/pubspec.lock
|
3314
3315
|
- tracks/dart/pubspec.yaml
|
3316
|
+
- tracks/dart/test/create_exercise_test.dart
|
3315
3317
|
- tracks/dart/test/exercises_test.dart
|
3316
|
-
- tracks/dart/tool/create-exercise
|
3317
3318
|
- tracks/delphi/.git
|
3318
3319
|
- tracks/delphi/.github/stale.yml
|
3319
3320
|
- tracks/delphi/.gitignore
|
@@ -6024,6 +6025,12 @@ files:
|
|
6024
6025
|
- tracks/go/exercises/grains/cases_test.go
|
6025
6026
|
- tracks/go/exercises/grains/example.go
|
6026
6027
|
- tracks/go/exercises/grains/grains_test.go
|
6028
|
+
- tracks/go/exercises/grep/.meta/gen.go
|
6029
|
+
- tracks/go/exercises/grep/.meta/hints.md
|
6030
|
+
- tracks/go/exercises/grep/README.md
|
6031
|
+
- tracks/go/exercises/grep/cases_test.go
|
6032
|
+
- tracks/go/exercises/grep/example.go
|
6033
|
+
- tracks/go/exercises/grep/grep_test.go
|
6027
6034
|
- tracks/go/exercises/hamming/.meta/gen.go
|
6028
6035
|
- tracks/go/exercises/hamming/.meta/hints.md
|
6029
6036
|
- tracks/go/exercises/hamming/README.md
|
@@ -7757,6 +7764,7 @@ files:
|
|
7757
7764
|
- tracks/java/exercises/simple-linked-list/src/main/java/.keep
|
7758
7765
|
- tracks/java/exercises/simple-linked-list/src/test/java/SimpleLinkedListTest.java
|
7759
7766
|
- tracks/java/exercises/space-age/.meta/src/reference/java/SpaceAge.java
|
7767
|
+
- tracks/java/exercises/space-age/.meta/version
|
7760
7768
|
- tracks/java/exercises/space-age/README.md
|
7761
7769
|
- tracks/java/exercises/space-age/build.gradle
|
7762
7770
|
- tracks/java/exercises/space-age/src/main/java/SpaceAge.java
|
@@ -8171,7 +8179,6 @@ files:
|
|
8171
8179
|
- tracks/julia/docs/RESOURCES.md
|
8172
8180
|
- tracks/julia/docs/SNIPPET.txt
|
8173
8181
|
- tracks/julia/docs/TESTS.md
|
8174
|
-
- tracks/julia/exercises/.keep
|
8175
8182
|
- tracks/julia/exercises/anagram/README.md
|
8176
8183
|
- tracks/julia/exercises/anagram/anagram.jl
|
8177
8184
|
- tracks/julia/exercises/anagram/example.jl
|
@@ -8188,12 +8195,12 @@ files:
|
|
8188
8195
|
- tracks/julia/exercises/collatz-conjecture/collatz-conjecture.jl
|
8189
8196
|
- tracks/julia/exercises/collatz-conjecture/example.jl
|
8190
8197
|
- tracks/julia/exercises/collatz-conjecture/runtests.jl
|
8191
|
-
- tracks/julia/exercises/complex-numbers/
|
8198
|
+
- tracks/julia/exercises/complex-numbers/.meta/hints.md
|
8192
8199
|
- tracks/julia/exercises/complex-numbers/README.md
|
8193
8200
|
- tracks/julia/exercises/complex-numbers/complex-numbers.jl
|
8194
8201
|
- tracks/julia/exercises/complex-numbers/example.jl
|
8195
8202
|
- tracks/julia/exercises/complex-numbers/runtests.jl
|
8196
|
-
- tracks/julia/exercises/custom-set/
|
8203
|
+
- tracks/julia/exercises/custom-set/.meta/hints.md
|
8197
8204
|
- tracks/julia/exercises/custom-set/README.md
|
8198
8205
|
- tracks/julia/exercises/custom-set/custom-set.jl
|
8199
8206
|
- tracks/julia/exercises/custom-set/example.jl
|
@@ -8258,7 +8265,7 @@ files:
|
|
8258
8265
|
- tracks/julia/exercises/rna-transcription/example.jl
|
8259
8266
|
- tracks/julia/exercises/rna-transcription/rna-transcription.jl
|
8260
8267
|
- tracks/julia/exercises/rna-transcription/runtests.jl
|
8261
|
-
- tracks/julia/exercises/robot-name/
|
8268
|
+
- tracks/julia/exercises/robot-name/.meta/hints.md
|
8262
8269
|
- tracks/julia/exercises/robot-name/README.md
|
8263
8270
|
- tracks/julia/exercises/robot-name/example.jl
|
8264
8271
|
- tracks/julia/exercises/robot-name/robot-name.jl
|
@@ -8271,7 +8278,7 @@ files:
|
|
8271
8278
|
- tracks/julia/exercises/roman-numerals/example.jl
|
8272
8279
|
- tracks/julia/exercises/roman-numerals/roman-numerals.jl
|
8273
8280
|
- tracks/julia/exercises/roman-numerals/runtests.jl
|
8274
|
-
- tracks/julia/exercises/rotational-cipher/
|
8281
|
+
- tracks/julia/exercises/rotational-cipher/.meta/hints.md
|
8275
8282
|
- tracks/julia/exercises/rotational-cipher/README.md
|
8276
8283
|
- tracks/julia/exercises/rotational-cipher/example.jl
|
8277
8284
|
- tracks/julia/exercises/rotational-cipher/rotational-cipher.jl
|
@@ -10190,6 +10197,7 @@ files:
|
|
10190
10197
|
- tracks/perl6/.github/stale.yml
|
10191
10198
|
- tracks/perl6/.gitignore
|
10192
10199
|
- tracks/perl6/.travis.yml
|
10200
|
+
- tracks/perl6/Dockerfile
|
10193
10201
|
- tracks/perl6/LICENSE
|
10194
10202
|
- tracks/perl6/README.md
|
10195
10203
|
- tracks/perl6/bin/README.md
|
@@ -10235,6 +10243,7 @@ files:
|
|
10235
10243
|
- tracks/perl6/exercises/atbash-cipher/README.md
|
10236
10244
|
- tracks/perl6/exercises/atbash-cipher/atbash-cipher.t
|
10237
10245
|
- tracks/perl6/exercises/atbash-cipher/example.yaml
|
10246
|
+
- tracks/perl6/exercises/binary/Binary.pm6
|
10238
10247
|
- tracks/perl6/exercises/binary/Example.pm6
|
10239
10248
|
- tracks/perl6/exercises/binary/README.md
|
10240
10249
|
- tracks/perl6/exercises/binary/binary.t
|
@@ -10345,6 +10354,7 @@ files:
|
|
10345
10354
|
- tracks/perl6/exercises/space-age/space-age.t
|
10346
10355
|
- tracks/perl6/exercises/trinary/Example.pm6
|
10347
10356
|
- tracks/perl6/exercises/trinary/README.md
|
10357
|
+
- tracks/perl6/exercises/trinary/Trinary.pm6
|
10348
10358
|
- tracks/perl6/exercises/trinary/trinary.t
|
10349
10359
|
- tracks/perl6/exercises/two-fer/Example.pm6
|
10350
10360
|
- tracks/perl6/exercises/two-fer/README.md
|
@@ -11030,6 +11040,10 @@ files:
|
|
11030
11040
|
- tracks/python/exercises/crypto-square/crypto_square.py
|
11031
11041
|
- tracks/python/exercises/crypto-square/crypto_square_test.py
|
11032
11042
|
- tracks/python/exercises/crypto-square/example.py
|
11043
|
+
- tracks/python/exercises/custom-set/README.md
|
11044
|
+
- tracks/python/exercises/custom-set/custom_set.py
|
11045
|
+
- tracks/python/exercises/custom-set/custom_set_test.py
|
11046
|
+
- tracks/python/exercises/custom-set/example.py
|
11033
11047
|
- tracks/python/exercises/diamond/README.md
|
11034
11048
|
- tracks/python/exercises/diamond/diamond.py
|
11035
11049
|
- tracks/python/exercises/diamond/diamond_test.py
|