trackler 2.1.0.1 → 2.1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/elixir/config.json +17 -0
  4. data/tracks/elixir/exercises/matrix/example.exs +63 -0
  5. data/tracks/elixir/exercises/matrix/matrix.exs +48 -0
  6. data/tracks/elixir/exercises/matrix/matrix_test.exs +58 -0
  7. data/tracks/elixir/exercises/twelve-days/example.exs +53 -0
  8. data/tracks/elixir/exercises/twelve-days/twelve_days.exs +25 -0
  9. data/tracks/elixir/exercises/twelve-days/twelve_days_test.exs +86 -0
  10. data/tracks/go/exercises/change/.meta/gen.go +1 -3
  11. data/tracks/go/exercises/change/cases_test.go +1 -0
  12. data/tracks/go/exercises/forth/example.go +1 -1
  13. data/tracks/go/exercises/raindrops/.meta/gen.go +1 -3
  14. data/tracks/go/exercises/raindrops/cases_test.go +5 -1
  15. data/tracks/go/exercises/raindrops/example.go +1 -1
  16. data/tracks/go/exercises/raindrops/raindrops.go +1 -1
  17. data/tracks/go/exercises/raindrops/raindrops_test.go +1 -1
  18. data/tracks/java/config.json +5 -5
  19. data/tracks/java/exercises/isogram/src/example/java/IsogramChecker.java +23 -27
  20. data/tracks/java/exercises/isogram/src/test/java/IsogramCheckerTest.java +77 -0
  21. data/tracks/javascript/config.json +9 -0
  22. data/tracks/javascript/exercises/proverb/example.js +36 -0
  23. data/tracks/javascript/exercises/proverb/proverb.spec.js +78 -0
  24. data/tracks/ruby/README.md +0 -33
  25. data/tracks/ruby/exercises/acronym/.meta/.version +1 -1
  26. data/tracks/ruby/exercises/acronym/acronym_test.rb +14 -9
  27. data/tracks/ruby/exercises/acronym/example.rb +1 -1
  28. data/tracks/ruby/exercises/acronym/example.tt +7 -4
  29. data/tracks/ruby/exercises/all-your-base/all_your_base_test.rb +1 -1
  30. data/tracks/ruby/exercises/all-your-base/example.tt +4 -3
  31. data/tracks/ruby/exercises/alphametics/alphametics_test.rb +2 -1
  32. data/tracks/ruby/exercises/alphametics/example.tt +2 -1
  33. data/tracks/ruby/exercises/anagram/anagram_test.rb +35 -20
  34. data/tracks/ruby/exercises/anagram/example.rb +1 -1
  35. data/tracks/ruby/exercises/anagram/example.tt +5 -2
  36. data/tracks/ruby/exercises/beer-song/beer_song_test.rb +1 -0
  37. data/tracks/ruby/exercises/beer-song/example.tt +6 -4
  38. data/tracks/ruby/exercises/binary/binary_test.rb +3 -2
  39. data/tracks/ruby/exercises/binary/example.tt +5 -2
  40. data/tracks/ruby/exercises/bowling/bowling_test.rb +39 -40
  41. data/tracks/ruby/exercises/bowling/example.tt +2 -2
  42. data/tracks/ruby/exercises/bracket-push/.meta/.version +1 -1
  43. data/tracks/ruby/exercises/bracket-push/bracket_push_test.rb +7 -3
  44. data/tracks/ruby/exercises/bracket-push/example.rb +1 -1
  45. data/tracks/ruby/exercises/bracket-push/example.tt +5 -2
  46. data/tracks/ruby/exercises/clock/clock_test.rb +40 -41
  47. data/tracks/ruby/exercises/clock/example.tt +5 -2
  48. data/tracks/ruby/exercises/connect/.meta/.version +1 -1
  49. data/tracks/ruby/exercises/connect/connect_test.rb +20 -3
  50. data/tracks/ruby/exercises/connect/example.rb +1 -1
  51. data/tracks/ruby/exercises/connect/example.tt +3 -1
  52. data/tracks/ruby/exercises/custom-set/custom_set_test.rb +1 -2
  53. data/tracks/ruby/exercises/custom-set/example.tt +5 -2
  54. data/tracks/ruby/exercises/difference-of-squares/difference_of_squares_test.rb +6 -5
  55. data/tracks/ruby/exercises/difference-of-squares/example.tt +8 -4
  56. data/tracks/ruby/exercises/dominoes/dominoes_test.rb +1 -1
  57. data/tracks/ruby/exercises/dominoes/example.tt +1 -1
  58. data/tracks/ruby/exercises/gigasecond/.meta/.version +1 -1
  59. data/tracks/ruby/exercises/gigasecond/example.rb +1 -1
  60. data/tracks/ruby/exercises/gigasecond/example.tt +7 -5
  61. data/tracks/ruby/exercises/gigasecond/gigasecond_test.rb +11 -16
  62. data/tracks/ruby/exercises/grains/example.tt +5 -3
  63. data/tracks/ruby/exercises/grains/grains_test.rb +2 -1
  64. data/tracks/ruby/exercises/hello-world/example.tt +1 -1
  65. data/tracks/ruby/exercises/hello-world/hello_world_test.rb +1 -1
  66. data/tracks/ruby/exercises/isogram/.meta/.version +1 -1
  67. data/tracks/ruby/exercises/isogram/example.rb +1 -1
  68. data/tracks/ruby/exercises/isogram/example.tt +6 -4
  69. data/tracks/ruby/exercises/isogram/isogram_test.rb +18 -10
  70. data/tracks/ruby/exercises/largest-series-product/.meta/.version +1 -1
  71. data/tracks/ruby/exercises/largest-series-product/example.rb +1 -1
  72. data/tracks/ruby/exercises/largest-series-product/example.tt +7 -5
  73. data/tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb +11 -21
  74. data/tracks/ruby/exercises/leap/.meta/.version +1 -1
  75. data/tracks/ruby/exercises/leap/example.rb +1 -1
  76. data/tracks/ruby/exercises/leap/example.tt +6 -4
  77. data/tracks/ruby/exercises/leap/leap_test.rb +11 -25
  78. data/tracks/ruby/exercises/nth-prime/example.tt +7 -5
  79. data/tracks/ruby/exercises/nth-prime/nth_prime_test.rb +2 -3
  80. data/tracks/ruby/exercises/pangram/example.tt +5 -3
  81. data/tracks/ruby/exercises/pangram/pangram_test.rb +2 -1
  82. data/tracks/ruby/exercises/queen-attack/example.tt +2 -2
  83. data/tracks/ruby/exercises/queen-attack/queen_attack_test.rb +14 -15
  84. data/tracks/ruby/exercises/raindrops/example.tt +7 -4
  85. data/tracks/ruby/exercises/raindrops/raindrops_test.rb +38 -38
  86. data/tracks/ruby/exercises/rna-transcription/example.tt +6 -3
  87. data/tracks/ruby/exercises/rna-transcription/rna_transcription_test.rb +4 -5
  88. data/tracks/ruby/exercises/roman-numerals/example.tt +7 -4
  89. data/tracks/ruby/exercises/roman-numerals/roman_numerals_test.rb +5 -5
  90. data/tracks/ruby/exercises/run-length-encoding/.meta/.version +1 -1
  91. data/tracks/ruby/exercises/run-length-encoding/example.rb +1 -1
  92. data/tracks/ruby/exercises/run-length-encoding/example.tt +6 -3
  93. data/tracks/ruby/exercises/run-length-encoding/run_length_encoding_test.rb +70 -28
  94. data/tracks/ruby/exercises/say/example.tt +7 -5
  95. data/tracks/ruby/exercises/say/say_test.rb +3 -2
  96. data/tracks/ruby/exercises/sieve/example.tt +4 -1
  97. data/tracks/ruby/exercises/sieve/sieve_test.rb +1 -3
  98. data/tracks/ruby/exercises/tournament/example.tt +4 -1
  99. data/tracks/ruby/exercises/tournament/tournament_test.rb +1 -2
  100. data/tracks/ruby/exercises/transpose/example.tt +5 -2
  101. data/tracks/ruby/exercises/transpose/transpose_test.rb +1 -2
  102. data/tracks/ruby/exercises/triangle/example.tt +5 -3
  103. data/tracks/ruby/exercises/triangle/triangle_test.rb +1 -3
  104. data/tracks/ruby/exercises/two-bucket/example.tt +7 -4
  105. data/tracks/ruby/exercises/two-bucket/two_bucket_test.rb +9 -9
  106. data/tracks/ruby/exercises/word-count/example.tt +6 -4
  107. data/tracks/ruby/exercises/word-count/word_count_test.rb +2 -3
  108. data/tracks/ruby/exercises/wordy/example.tt +5 -3
  109. data/tracks/ruby/exercises/wordy/wordy_test.rb +2 -1
  110. data/tracks/ruby/lib/acronym_cases.rb +3 -15
  111. data/tracks/ruby/lib/all_your_base_cases.rb +22 -54
  112. data/tracks/ruby/lib/alphametics_cases.rb +12 -27
  113. data/tracks/ruby/lib/anagram_cases.rb +7 -15
  114. data/tracks/ruby/lib/beer_song_cases.rb +7 -24
  115. data/tracks/ruby/lib/binary_cases.rb +5 -18
  116. data/tracks/ruby/lib/bowling_cases.rb +24 -24
  117. data/tracks/ruby/lib/bracket_push_cases.rb +6 -21
  118. data/tracks/ruby/lib/clock_cases.rb +6 -25
  119. data/tracks/ruby/lib/connect_cases.rb +2 -20
  120. data/tracks/ruby/lib/custom_set_cases.rb +14 -35
  121. data/tracks/ruby/lib/difference_of_squares_cases.rb +5 -26
  122. data/tracks/ruby/lib/dominoes_cases.rb +2 -11
  123. data/tracks/ruby/lib/generator/case_values.rb +25 -0
  124. data/tracks/ruby/lib/generator/exercise_cases.rb +11 -0
  125. data/tracks/ruby/lib/generator/files/track_files.rb +7 -2
  126. data/tracks/ruby/lib/generator/template_values.rb +12 -7
  127. data/tracks/ruby/lib/gigasecond_cases.rb +4 -18
  128. data/tracks/ruby/lib/grains_cases.rb +11 -38
  129. data/tracks/ruby/lib/hamming_cases.rb +0 -6
  130. data/tracks/ruby/lib/hello_world_cases.rb +2 -14
  131. data/tracks/ruby/lib/isogram_cases.rb +8 -16
  132. data/tracks/ruby/lib/largest_series_product_cases.rb +10 -16
  133. data/tracks/ruby/lib/leap_cases.rb +3 -16
  134. data/tracks/ruby/lib/luhn_cases.rb +0 -6
  135. data/tracks/ruby/lib/nth_prime_cases.rb +11 -13
  136. data/tracks/ruby/lib/ocr_numbers_cases.rb +0 -5
  137. data/tracks/ruby/lib/pangram_cases.rb +2 -19
  138. data/tracks/ruby/lib/pig_latin_cases.rb +0 -5
  139. data/tracks/ruby/lib/queen_attack_cases.rb +14 -37
  140. data/tracks/ruby/lib/raindrops_cases.rb +3 -15
  141. data/tracks/ruby/lib/rna_transcription_cases.rb +2 -14
  142. data/tracks/ruby/lib/roman_numerals_cases.rb +7 -10
  143. data/tracks/ruby/lib/run_length_encoding_cases.rb +4 -25
  144. data/tracks/ruby/lib/say_cases.rb +3 -14
  145. data/tracks/ruby/lib/sieve_cases.rb +1 -15
  146. data/tracks/ruby/lib/tournament_cases.rb +1 -14
  147. data/tracks/ruby/lib/transpose_cases.rb +1 -14
  148. data/tracks/ruby/lib/triangle_cases.rb +8 -27
  149. data/tracks/ruby/lib/two_bucket_cases.rb +7 -17
  150. data/tracks/ruby/lib/word_count_cases.rb +1 -13
  151. data/tracks/ruby/lib/wordy_cases.rb +4 -27
  152. data/tracks/ruby/test/fixtures/metadata/exercises/complex/canonical-data.json +45 -0
  153. data/tracks/ruby/test/fixtures/xruby/lib/beta_cases.rb +7 -0
  154. data/tracks/ruby/test/generator/case_values_test.rb +30 -0
  155. data/tracks/ruby/test/generator/files/track_files_test.rb +2 -3
  156. data/tracks/ruby/test/generator/template_values_test.rb +44 -3
  157. data/tracks/ruby/test/wordy_cases_test.rb +4 -65
  158. metadata +14 -4
  159. data/tracks/java/exercises/isogram/src/test/java/IsogramTest.java +0 -80
  160. data/tracks/ruby/test/grains_cases_test.rb +0 -103
@@ -2,30 +2,6 @@ require 'json'
2
2
  require_relative 'test_helper'
3
3
 
4
4
  class WordyCaseTest < Minitest::Test
5
- def test_test_name
6
- test_case = WordyCase.new(description: 'description')
7
-
8
- assert_equal 'test_description', test_case.test_name
9
- end
10
-
11
- def test_test_name_with_description_with_spaces
12
- test_case = WordyCase.new(description: 'description with spaces')
13
-
14
- assert_equal 'test_description_with_spaces', test_case.test_name
15
- end
16
-
17
- def test_skipped_with_zero_index
18
- test_case = WordyCase.new(index: 0)
19
-
20
- assert_equal '# skip', test_case.skipped
21
- end
22
-
23
- def test_skipped_with_non_zero_index
24
- test_case = WordyCase.new(index: 1)
25
-
26
- assert_equal 'skip', test_case.skipped
27
- end
28
-
29
5
  def test_workload_with_expected_and_no_message
30
6
  test_case = WordyCase.new(expected: 1, input: 1)
31
7
 
@@ -38,12 +14,13 @@ class WordyCaseTest < Minitest::Test
38
14
  end
39
15
 
40
16
  def test_workload_with_expected_and_message
41
- test_case = WordyCase.new(expected: 1, input: 1, message: 'test %s')
17
+ test_case = WordyCase.new(expected: 1, input: 'What is -3 plus 7 multiplied by -2?')
18
+ message = test_case.send(:message)
42
19
 
43
20
  expected_workload = [
44
- 'question = \'1\'',
21
+ "question = 'What is -3 plus 7 multiplied by -2?'",
45
22
  ' answer = WordProblem.new(question).answer',
46
- ' message = "test #{answer}"',
23
+ ' message = "' + message[0..-3] + '#{answer}"',
47
24
  ' assert_equal(1, answer, message)',
48
25
  ].join("\n")
49
26
 
@@ -63,41 +40,3 @@ class WordyCaseTest < Minitest::Test
63
40
  assert_equal expected_workload, test_case.workload
64
41
  end
65
42
  end
66
-
67
- class WordyCasePrProcessorTest < Minitest::Test
68
- def test_call_as_non_special_case
69
- row = { 'input' => '' }
70
- processed_row = WordyCase::PreProcessor.call(row)
71
-
72
- assert_equal({ 'input' => '', 'message' => nil }, processed_row)
73
- end
74
-
75
- def test_call_as_special_case
76
- row = { 'input' => 'What is -3 plus 7 multiplied by -2?' }
77
- processed_row = WordyCase::PreProcessor.call(row)
78
- expected_row = {
79
- 'input' => 'What is -3 plus 7 multiplied by -2?',
80
- 'message' => 'You should ignore order of precedence. -3 + 7 * -2 = -8, not %s',
81
- }
82
-
83
- assert_equal expected_row, processed_row
84
- end
85
- end
86
-
87
- class WordyCasesTest < Minitest::Test
88
- def test_call
89
- json = {
90
- cases: [
91
- { description: 'test 1' },
92
- { description: 'test 2' },
93
- ]
94
- }.to_json
95
-
96
- expected_cases = [
97
- WordyCase.new(description: 'test 1', message: nil, index: 0),
98
- WordyCase.new(description: 'test 2', message: nil, index: 1),
99
- ]
100
-
101
- assert_equal expected_cases, WordyCases.call(json)
102
- end
103
- end
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.1.0.1
4
+ version: 2.1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-26 00:00:00.000000000 Z
11
+ date: 2017-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -2563,6 +2563,9 @@ files:
2563
2563
  - tracks/elixir/exercises/markdown/example.exs
2564
2564
  - tracks/elixir/exercises/markdown/markdown.exs
2565
2565
  - tracks/elixir/exercises/markdown/markdown_test.exs
2566
+ - tracks/elixir/exercises/matrix/example.exs
2567
+ - tracks/elixir/exercises/matrix/matrix.exs
2568
+ - tracks/elixir/exercises/matrix/matrix_test.exs
2566
2569
  - tracks/elixir/exercises/meetup/example.exs
2567
2570
  - tracks/elixir/exercises/meetup/meetup.exs
2568
2571
  - tracks/elixir/exercises/meetup/meetup_test.exs
@@ -2684,6 +2687,9 @@ files:
2684
2687
  - tracks/elixir/exercises/triangle/example.exs
2685
2688
  - tracks/elixir/exercises/triangle/triangle.exs
2686
2689
  - tracks/elixir/exercises/triangle/triangle_test.exs
2690
+ - tracks/elixir/exercises/twelve-days/example.exs
2691
+ - tracks/elixir/exercises/twelve-days/twelve_days.exs
2692
+ - tracks/elixir/exercises/twelve-days/twelve_days_test.exs
2687
2693
  - tracks/elixir/exercises/word-count/example.exs
2688
2694
  - tracks/elixir/exercises/word-count/word_count.exs
2689
2695
  - tracks/elixir/exercises/word-count/word_count_test.exs
@@ -4424,7 +4430,7 @@ files:
4424
4430
  - tracks/java/exercises/isogram/build.gradle
4425
4431
  - tracks/java/exercises/isogram/src/example/java/IsogramChecker.java
4426
4432
  - tracks/java/exercises/isogram/src/main/java/.keep
4427
- - tracks/java/exercises/isogram/src/test/java/IsogramTest.java
4433
+ - tracks/java/exercises/isogram/src/test/java/IsogramCheckerTest.java
4428
4434
  - tracks/java/exercises/largest-series-product/build.gradle
4429
4435
  - tracks/java/exercises/largest-series-product/src/example/java/LargestSeriesProductCalculator.java
4430
4436
  - tracks/java/exercises/largest-series-product/src/main/java/LargestSeriesProductCalculator.java
@@ -4742,6 +4748,8 @@ files:
4742
4748
  - tracks/javascript/exercises/point-mutations/point-mutations.spec.js
4743
4749
  - tracks/javascript/exercises/prime-factors/example.js
4744
4750
  - tracks/javascript/exercises/prime-factors/prime-factors.spec.js
4751
+ - tracks/javascript/exercises/proverb/example.js
4752
+ - tracks/javascript/exercises/proverb/proverb.spec.js
4745
4753
  - tracks/javascript/exercises/pythagorean-triplet/example.js
4746
4754
  - tracks/javascript/exercises/pythagorean-triplet/pythagorean-triplet.spec.js
4747
4755
  - tracks/javascript/exercises/queen-attack/example.js
@@ -7425,6 +7433,7 @@ files:
7425
7433
  - tracks/ruby/lib/dominoes_cases.rb
7426
7434
  - tracks/ruby/lib/exercise_cases.rb
7427
7435
  - tracks/ruby/lib/generator.rb
7436
+ - tracks/ruby/lib/generator/case_values.rb
7428
7437
  - tracks/ruby/lib/generator/command_line.rb
7429
7438
  - tracks/ruby/lib/generator/exercise_cases.rb
7430
7439
  - tracks/ruby/lib/generator/files.rb
@@ -7464,11 +7473,13 @@ files:
7464
7473
  - tracks/ruby/lib/word_count_cases.rb
7465
7474
  - tracks/ruby/lib/wordy_cases.rb
7466
7475
  - tracks/ruby/test/fixtures/metadata/exercises/alpha/canonical-data.json
7476
+ - tracks/ruby/test/fixtures/metadata/exercises/complex/canonical-data.json
7467
7477
  - tracks/ruby/test/fixtures/xruby/exercises/alpha/.meta/.version
7468
7478
  - tracks/ruby/test/fixtures/xruby/exercises/alpha/example.rb
7469
7479
  - tracks/ruby/test/fixtures/xruby/exercises/alpha/example.tt
7470
7480
  - tracks/ruby/test/fixtures/xruby/lib/alpha_cases.rb
7471
7481
  - tracks/ruby/test/fixtures/xruby/lib/beta_cases.rb
7482
+ - tracks/ruby/test/generator/case_values_test.rb
7472
7483
  - tracks/ruby/test/generator/command_line_test.rb
7473
7484
  - tracks/ruby/test/generator/files/metadata_files_test.rb
7474
7485
  - tracks/ruby/test/generator/files/track_files_test.rb
@@ -7478,7 +7489,6 @@ files:
7478
7489
  - tracks/ruby/test/generator/template_values_test.rb
7479
7490
  - tracks/ruby/test/generator/underscore_test.rb
7480
7491
  - tracks/ruby/test/generator_test.rb
7481
- - tracks/ruby/test/grains_cases_test.rb
7482
7492
  - tracks/ruby/test/tasks/exercise_test.rb
7483
7493
  - tracks/ruby/test/tasks/exercise_test_tasks_test.rb
7484
7494
  - tracks/ruby/test/tasks/exercise_tests_runner_test.rb
@@ -1,80 +0,0 @@
1
- package test;
2
-
3
- import static org.junit.Assert.*;
4
-
5
- import org.junit.Ignore;
6
- import org.junit.Test;
7
- import example.IsogramChecker;
8
-
9
- public class IsogramTest {
10
-
11
- @Test
12
- public void testIsogram() {
13
- IsogramChecker iso = new IsogramChecker();
14
- assertTrue(iso.isIsogram("duplicates"));
15
- }
16
-
17
- @Ignore
18
- @Test
19
- public void testNotIsogram() {
20
- IsogramChecker iso = new IsogramChecker();
21
- assertFalse(iso.isIsogram("eleven"));
22
- }
23
-
24
- @Ignore
25
- @Test
26
- public void testMediumLongIsogram() {
27
- IsogramChecker iso = new IsogramChecker();
28
- assertTrue(iso.isIsogram("subdermatoglyphic"));
29
- }
30
-
31
- @Ignore
32
- @Test
33
- public void testCaseInsensitive() {
34
- IsogramChecker iso = new IsogramChecker();
35
- assertFalse(iso.isIsogram("Alphabet"));
36
- }
37
-
38
- @Ignore
39
- @Test
40
- public void testIsogramWithHyphen() {
41
- IsogramChecker iso = new IsogramChecker();
42
- assertTrue(iso.isIsogram("thumbscrew-japingly"));
43
- }
44
-
45
- @Ignore
46
- @Test
47
- public void testIgnoresMultipleHyphens() {
48
- IsogramChecker iso = new IsogramChecker();
49
- assertTrue(iso.isIsogram("Hjelmqvist-Gryb-Zock-Pfund-Wax"));
50
- }
51
-
52
- @Ignore
53
- @Test
54
- public void testWorksWithGermanLetters() {
55
- IsogramChecker iso = new IsogramChecker();
56
- assertTrue(iso.isIsogram("Heizölrückstoßabdämpfung"));
57
- }
58
-
59
- @Ignore
60
- @Test
61
- public void testIgnoresSpaces() {
62
- IsogramChecker iso = new IsogramChecker();
63
- assertFalse(iso.isIsogram("the quick brown fox"));
64
- }
65
-
66
- @Ignore
67
- @Test
68
- public void testIgnoresSpaces2() {
69
- IsogramChecker iso = new IsogramChecker();
70
- assertTrue(iso.isIsogram("Emily Jung Schwartzkopf"));
71
- }
72
-
73
- @Ignore
74
- @Test
75
- public void testDuplicateAccentedLetters() {
76
- IsogramChecker iso = new IsogramChecker();
77
- assertFalse(iso.isIsogram("éléphant"));
78
- }
79
-
80
- }
@@ -1,103 +0,0 @@
1
- require 'json'
2
- require_relative 'test_helper'
3
-
4
- class GrainsTest < Minitest::Test
5
- def test_test_name
6
- test_case = GrainsCase.new(description: 'description')
7
-
8
- assert_equal 'test_description', test_case.test_name
9
- end
10
-
11
- def test_test_name_when_description_has_spaces
12
- test_case = GrainsCase.new(description: 'description with spaces')
13
-
14
- assert_equal 'test_description_with_spaces', test_case.test_name
15
- end
16
-
17
- def test_workload_is_not_implemented
18
- assert_raises(NotImplementedError) { GrainsCase.new.workload }
19
- end
20
-
21
- def test_skipped_with_zero_index
22
- assert_equal '# skip', GrainsCase.new(index: 0).skipped
23
- end
24
-
25
- def test_skipped_with_non_zero_index
26
- assert_equal 'skip', GrainsCase.new(index: 1).skipped
27
- end
28
- end
29
-
30
- class SquareMethodTest < Minitest::Test
31
- def test_workload_when_expected_is_negative
32
- test_case = GrainsCase::SquareMethod.new(expected: -1, input: 10)
33
-
34
- assert_equal 'assert_raises(ArgumentError) { Grains.square(10) }',
35
- test_case.workload
36
- end
37
-
38
- def test_workload_when_expected_is_positive
39
- test_case = GrainsCase::SquareMethod.new(expected: 1, input: 10)
40
-
41
- assert_equal 'assert_equal 1, Grains.square(10)', test_case.workload
42
- end
43
-
44
- def test_workload_with_large_expected_number
45
- test_case = GrainsCase::SquareMethod.new(expected: 10000, input: 10)
46
-
47
- assert_equal 'assert_equal 10_000, Grains.square(10)', test_case.workload
48
- end
49
- end
50
-
51
- class TotalMethodTest < Minitest::Test
52
- def test_workload
53
- test_case = GrainsCase::TotalMethod.new(expected: 1)
54
-
55
- assert_equal 'assert_equal 1, Grains.total', test_case.workload
56
- end
57
-
58
- def test_workload_with_large_expected_number
59
- test_case = GrainsCase::TotalMethod.new(expected: 10000)
60
-
61
- assert_equal 'assert_equal 10_000, Grains.total', test_case.workload
62
- end
63
- end
64
-
65
- class GrainsCasesTest < Minitest::Test
66
- def test_handling_of_json
67
- json = {
68
- square: {
69
- cases: [
70
- {},
71
- {},
72
- ],
73
- },
74
- total: {
75
- }
76
- }.to_json
77
-
78
- cases = GrainsCases.call(json)
79
-
80
- assert_instance_of GrainsCase::SquareMethod, cases[0]
81
- assert_instance_of GrainsCase::SquareMethod, cases[1]
82
- assert_instance_of GrainsCase::TotalMethod, cases[2]
83
- end
84
-
85
- def test_continuous_index
86
- json = {
87
- square: {
88
- cases: [
89
- {},
90
- {},
91
- ],
92
- },
93
- total: {
94
- }
95
- }.to_json
96
-
97
- cases = GrainsCases.call(json)
98
-
99
- assert_equal 0, cases[0].index
100
- assert_equal 1, cases[1].index
101
- assert_equal 2, cases[2].index
102
- end
103
- end