trackler 2.2.1.147 → 2.2.1.148

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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/crystal/Makefile +1 -1
  4. data/tracks/crystal/exercises/acronym/spec/acronym_spec.cr +2 -6
  5. data/tracks/crystal/exercises/binary/spec/binary_spec.cr +1 -1
  6. data/tracks/crystal/exercises/difference-of-squares/spec/difference_of_squares_spec.cr +10 -14
  7. data/tracks/crystal/exercises/run-length-encoding/spec/run_length_encoding_spec.cr +29 -9
  8. data/tracks/crystal/generator/src/generators/acronym.cr +1 -1
  9. data/tracks/crystal/generator/src/generators/binary.cr +1 -1
  10. data/tracks/crystal/generator/src/generators/difference_of_squares.cr +6 -7
  11. data/tracks/crystal/generator/src/generators/run_length_encoding.cr +20 -10
  12. data/tracks/csharp/config.json +477 -477
  13. data/tracks/elixir/exercises/largest-series-product/example.exs +1 -1
  14. data/tracks/elm/exercises/phone-number/PhoneNumber.elm +1 -6
  15. data/tracks/elm/exercises/phone-number/tests/Tests.elm +22 -37
  16. data/tracks/elm/exercises/run-length-encoding/tests/Tests.elm +55 -31
  17. data/tracks/fsharp/generators/Exercise.fs +27 -6
  18. data/tracks/fsharp/generators/Generators.fs +37 -45
  19. data/tracks/fsharp/generators/Templates.fs +15 -44
  20. data/tracks/haskell/.travis.yml +1 -0
  21. data/tracks/haskell/bin/check-configlet-fmt.sh +42 -0
  22. data/tracks/haskell/config/maintainers.json +13 -13
  23. data/tracks/haskell/config.json +212 -250
  24. data/tracks/java/exercises/sublist/.meta/version +1 -1
  25. data/tracks/java/exercises/word-search/.meta/version +1 -1
  26. data/tracks/nim/config.json +10 -0
  27. data/tracks/nim/exercises/reverse-string/README.md +13 -0
  28. data/tracks/nim/exercises/reverse-string/example.nim +4 -0
  29. data/tracks/nim/exercises/reverse-string/reverse_string_test.nim +20 -0
  30. data/tracks/objective-c/config.json +10 -0
  31. data/tracks/objective-c/exercises/reverse-string/README.md +34 -0
  32. data/tracks/objective-c/exercises/reverse-string/ReverseStringExample.h +7 -0
  33. data/tracks/objective-c/exercises/reverse-string/ReverseStringExample.m +22 -0
  34. data/tracks/objective-c/exercises/reverse-string/ReverseStringTest.m +51 -0
  35. data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
  36. data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  37. data/tracks/ruby/config/maintainers.json +25 -25
  38. data/tracks/ruby/config.json +203 -371
  39. data/tracks/ruby/exercises/bob/.meta/.version +1 -1
  40. data/tracks/ruby/exercises/bob/.meta/generator/bob_case.rb +3 -2
  41. data/tracks/ruby/exercises/bob/.meta/solutions/bob.rb +3 -1
  42. data/tracks/ruby/exercises/bob/README.md +2 -0
  43. data/tracks/ruby/exercises/bob/bob_test.rb +27 -27
  44. data/tracks/ruby/exercises/hamming/RUNNING_TESTS.md +1 -1
  45. data/tracks/rust/.travis.yml +1 -0
  46. data/tracks/rust/_test/check-configlet-fmt.sh +37 -0
  47. data/tracks/rust/config/maintainers.json +23 -23
  48. data/tracks/rust/config.json +246 -246
  49. metadata +12 -3
  50. data/tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm +0 -63
@@ -1 +1 @@
1
- 1
1
+ 2
@@ -2,8 +2,9 @@ require 'generator/exercise_case'
2
2
 
3
3
  class BobCase < Generator::ExerciseCase
4
4
  def workload
5
- indent_lines(["remark = #{input.inspect}",
6
- "assert_equal '#{expected}', Bob.hey(remark), %q{Bob hears #{input.inspect}, and..}"
5
+ indent_lines(["remark = #{input["heyBob"].inspect}",
6
+ "assert_equal #{expected.inspect}, Bob.hey(remark), %q{Bob hears #{input["heyBob"].inspect}, and..}"
7
7
  ], 4)
8
8
  end
9
9
  end
10
+
@@ -1,5 +1,5 @@
1
1
  module BookKeeping
2
- VERSION = 1
2
+ VERSION = 2
3
3
  end
4
4
 
5
5
  module Bob
@@ -11,6 +11,8 @@ module Bob
11
11
  case
12
12
  when phrase.silent?
13
13
  'Fine. Be that way!'
14
+ when phrase.loud? && phrase.quizzical?
15
+ 'Calm down, I know what I\'m doing!'
14
16
  when phrase.loud?
15
17
  'Whoa, chill out!'
16
18
  when phrase.quizzical?
@@ -6,6 +6,8 @@ Bob answers 'Sure.' if you ask him a question.
6
6
 
7
7
  He answers 'Whoa, chill out!' if you yell at him.
8
8
 
9
+ He answers 'Calm down, I know what I'm doing!' if you yell a question at him.
10
+
9
11
  He says 'Fine. Be that way!' if you address him without actually saying
10
12
  anything.
11
13
 
@@ -1,156 +1,156 @@
1
1
  require 'minitest/autorun'
2
2
  require_relative 'bob'
3
3
 
4
- # Common test data version: 1.0.0 65756b1
4
+ # Common test data version: 1.2.0 6dc2014
5
5
  class BobTest < Minitest::Test
6
6
  def test_stating_something
7
7
  # skip
8
8
  remark = "Tom-ay-to, tom-aaaah-to."
9
- assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "Tom-ay-to, tom-aaaah-to.", and..}
9
+ assert_equal "Whatever.", Bob.hey(remark), %q{Bob hears "Tom-ay-to, tom-aaaah-to.", and..}
10
10
  end
11
11
 
12
12
  def test_shouting
13
13
  skip
14
14
  remark = "WATCH OUT!"
15
- assert_equal 'Whoa, chill out!', Bob.hey(remark), %q{Bob hears "WATCH OUT!", and..}
15
+ assert_equal "Whoa, chill out!", Bob.hey(remark), %q{Bob hears "WATCH OUT!", and..}
16
16
  end
17
17
 
18
18
  def test_shouting_gibberish
19
19
  skip
20
20
  remark = "FCECDFCAAB"
21
- assert_equal 'Whoa, chill out!', Bob.hey(remark), %q{Bob hears "FCECDFCAAB", and..}
21
+ assert_equal "Whoa, chill out!", Bob.hey(remark), %q{Bob hears "FCECDFCAAB", and..}
22
22
  end
23
23
 
24
24
  def test_asking_a_question
25
25
  skip
26
26
  remark = "Does this cryogenic chamber make me look fat?"
27
- assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears "Does this cryogenic chamber make me look fat?", and..}
27
+ assert_equal "Sure.", Bob.hey(remark), %q{Bob hears "Does this cryogenic chamber make me look fat?", and..}
28
28
  end
29
29
 
30
30
  def test_asking_a_numeric_question
31
31
  skip
32
32
  remark = "You are, what, like 15?"
33
- assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears "You are, what, like 15?", and..}
33
+ assert_equal "Sure.", Bob.hey(remark), %q{Bob hears "You are, what, like 15?", and..}
34
34
  end
35
35
 
36
36
  def test_asking_gibberish
37
37
  skip
38
38
  remark = "fffbbcbeab?"
39
- assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears "fffbbcbeab?", and..}
39
+ assert_equal "Sure.", Bob.hey(remark), %q{Bob hears "fffbbcbeab?", and..}
40
40
  end
41
41
 
42
42
  def test_talking_forcefully
43
43
  skip
44
44
  remark = "Let's go make out behind the gym!"
45
- assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "Let's go make out behind the gym!", and..}
45
+ assert_equal "Whatever.", Bob.hey(remark), %q{Bob hears "Let's go make out behind the gym!", and..}
46
46
  end
47
47
 
48
48
  def test_using_acronyms_in_regular_speech
49
49
  skip
50
50
  remark = "It's OK if you don't want to go to the DMV."
51
- assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "It's OK if you don't want to go to the DMV.", and..}
51
+ assert_equal "Whatever.", Bob.hey(remark), %q{Bob hears "It's OK if you don't want to go to the DMV.", and..}
52
52
  end
53
53
 
54
54
  def test_forceful_question
55
55
  skip
56
56
  remark = "WHAT THE HELL WERE YOU THINKING?"
57
- assert_equal 'Whoa, chill out!', Bob.hey(remark), %q{Bob hears "WHAT THE HELL WERE YOU THINKING?", and..}
57
+ assert_equal "Calm down, I know what I'm doing!", Bob.hey(remark), %q{Bob hears "WHAT THE HELL WERE YOU THINKING?", and..}
58
58
  end
59
59
 
60
60
  def test_shouting_numbers
61
61
  skip
62
62
  remark = "1, 2, 3 GO!"
63
- assert_equal 'Whoa, chill out!', Bob.hey(remark), %q{Bob hears "1, 2, 3 GO!", and..}
63
+ assert_equal "Whoa, chill out!", Bob.hey(remark), %q{Bob hears "1, 2, 3 GO!", and..}
64
64
  end
65
65
 
66
66
  def test_only_numbers
67
67
  skip
68
68
  remark = "1, 2, 3"
69
- assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "1, 2, 3", and..}
69
+ assert_equal "Whatever.", Bob.hey(remark), %q{Bob hears "1, 2, 3", and..}
70
70
  end
71
71
 
72
72
  def test_question_with_only_numbers
73
73
  skip
74
74
  remark = "4?"
75
- assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears "4?", and..}
75
+ assert_equal "Sure.", Bob.hey(remark), %q{Bob hears "4?", and..}
76
76
  end
77
77
 
78
78
  def test_shouting_with_special_characters
79
79
  skip
80
80
  remark = "ZOMG THE %^*@\#$(*^ ZOMBIES ARE COMING!!11!!1!"
81
- assert_equal 'Whoa, chill out!', Bob.hey(remark), %q{Bob hears "ZOMG THE %^*@\#$(*^ ZOMBIES ARE COMING!!11!!1!", and..}
81
+ assert_equal "Whoa, chill out!", Bob.hey(remark), %q{Bob hears "ZOMG THE %^*@\#$(*^ ZOMBIES ARE COMING!!11!!1!", and..}
82
82
  end
83
83
 
84
84
  def test_shouting_with_no_exclamation_mark
85
85
  skip
86
86
  remark = "I HATE YOU"
87
- assert_equal 'Whoa, chill out!', Bob.hey(remark), %q{Bob hears "I HATE YOU", and..}
87
+ assert_equal "Whoa, chill out!", Bob.hey(remark), %q{Bob hears "I HATE YOU", and..}
88
88
  end
89
89
 
90
90
  def test_statement_containing_question_mark
91
91
  skip
92
92
  remark = "Ending with ? means a question."
93
- assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "Ending with ? means a question.", and..}
93
+ assert_equal "Whatever.", Bob.hey(remark), %q{Bob hears "Ending with ? means a question.", and..}
94
94
  end
95
95
 
96
96
  def test_non_letters_with_question
97
97
  skip
98
98
  remark = ":) ?"
99
- assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears ":) ?", and..}
99
+ assert_equal "Sure.", Bob.hey(remark), %q{Bob hears ":) ?", and..}
100
100
  end
101
101
 
102
102
  def test_prattling_on
103
103
  skip
104
104
  remark = "Wait! Hang on. Are you going to be OK?"
105
- assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears "Wait! Hang on. Are you going to be OK?", and..}
105
+ assert_equal "Sure.", Bob.hey(remark), %q{Bob hears "Wait! Hang on. Are you going to be OK?", and..}
106
106
  end
107
107
 
108
108
  def test_silence
109
109
  skip
110
110
  remark = ""
111
- assert_equal 'Fine. Be that way!', Bob.hey(remark), %q{Bob hears "", and..}
111
+ assert_equal "Fine. Be that way!", Bob.hey(remark), %q{Bob hears "", and..}
112
112
  end
113
113
 
114
114
  def test_prolonged_silence
115
115
  skip
116
116
  remark = " "
117
- assert_equal 'Fine. Be that way!', Bob.hey(remark), %q{Bob hears " ", and..}
117
+ assert_equal "Fine. Be that way!", Bob.hey(remark), %q{Bob hears " ", and..}
118
118
  end
119
119
 
120
120
  def test_alternate_silence
121
121
  skip
122
122
  remark = "\t\t\t\t\t\t\t\t\t\t"
123
- assert_equal 'Fine. Be that way!', Bob.hey(remark), %q{Bob hears "\t\t\t\t\t\t\t\t\t\t", and..}
123
+ assert_equal "Fine. Be that way!", Bob.hey(remark), %q{Bob hears "\t\t\t\t\t\t\t\t\t\t", and..}
124
124
  end
125
125
 
126
126
  def test_multiple_line_question
127
127
  skip
128
128
  remark = "\nDoes this cryogenic chamber make me look fat?\nno"
129
- assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "\nDoes this cryogenic chamber make me look fat?\nno", and..}
129
+ assert_equal "Whatever.", Bob.hey(remark), %q{Bob hears "\nDoes this cryogenic chamber make me look fat?\nno", and..}
130
130
  end
131
131
 
132
132
  def test_starting_with_whitespace
133
133
  skip
134
134
  remark = " hmmmmmmm..."
135
- assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears " hmmmmmmm...", and..}
135
+ assert_equal "Whatever.", Bob.hey(remark), %q{Bob hears " hmmmmmmm...", and..}
136
136
  end
137
137
 
138
138
  def test_ending_with_whitespace
139
139
  skip
140
140
  remark = "Okay if like my spacebar quite a bit? "
141
- assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears "Okay if like my spacebar quite a bit? ", and..}
141
+ assert_equal "Sure.", Bob.hey(remark), %q{Bob hears "Okay if like my spacebar quite a bit? ", and..}
142
142
  end
143
143
 
144
144
  def test_other_whitespace
145
145
  skip
146
146
  remark = "\n\r \t"
147
- assert_equal 'Fine. Be that way!', Bob.hey(remark), %q{Bob hears "\n\r \t", and..}
147
+ assert_equal "Fine. Be that way!", Bob.hey(remark), %q{Bob hears "\n\r \t", and..}
148
148
  end
149
149
 
150
150
  def test_non_question_ending_with_whitespace
151
151
  skip
152
152
  remark = "This is a statement ending with whitespace "
153
- assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "This is a statement ending with whitespace ", and..}
153
+ assert_equal "Whatever.", Bob.hey(remark), %q{Bob hears "This is a statement ending with whitespace ", and..}
154
154
  end
155
155
 
156
156
  # Problems in exercism evolve over time, as we find better ways to ask
@@ -172,6 +172,6 @@ class BobTest < Minitest::Test
172
172
 
173
173
  def test_bookkeeping
174
174
  skip
175
- assert_equal 1, BookKeeping::VERSION
175
+ assert_equal 2, BookKeeping::VERSION
176
176
  end
177
177
  end
@@ -36,7 +36,7 @@ The goal is to have all passing tests, which will show in two places:
36
36
 
37
37
  1. `SSSSSSESSSSSSSSS` will become a series dots: `................`,
38
38
 
39
- 2. The line at the bottom will read `16 runs, 0 assertions, 0 failures, 0
39
+ 2. The line at the bottom will read `16 runs, 16 assertions, 0 failures, 0
40
40
  errors, 0 skips`.
41
41
 
42
42
  ## Passing Tests
@@ -6,6 +6,7 @@ script:
6
6
  - "sh ./_test/ensure-stubs-compile.sh"
7
7
  - "sh ./_test/count-ignores.sh"
8
8
  - "./bin/fetch-configlet"
9
+ - "./_test/check-configlet-fmt.sh"
9
10
  - "sh ./_test/ensure-readmes-are-updated.sh"
10
11
  - "./bin/configlet lint ."
11
12
  - "./_test/verify-exercise-difficulties.sh"
@@ -0,0 +1,37 @@
1
+ #!/bin/bash
2
+
3
+ # This ensures that config.json and config/maintainers.json are compatible
4
+ # with the output of configlet fmt.
5
+
6
+ repo=$(cd "$(dirname "$0")/.." && pwd)
7
+ configlet="${repo}/bin/configlet"
8
+
9
+ c="${repo}/config.json"
10
+ m="${repo}/config/maintainers.json"
11
+
12
+ function md5 {
13
+ md5sum $1 | cut -d' ' -f1
14
+ }
15
+
16
+ # before S sum
17
+ bcs=$(md5 $c)
18
+ bms=$(md5 $m)
19
+
20
+ cfg=$($configlet fmt .)
21
+ if [ $? != 0 ]; then
22
+ echo "configlet fmt returned non-0 exit code with output:"
23
+ echo $cfg
24
+ exit 1
25
+ fi
26
+
27
+ # after S sum
28
+ acs=$(md5 $c)
29
+ ams=$(md5 $m)
30
+
31
+ if [ $bcs != $acs -o $bms != $ams ]; then
32
+ echo "configlet fmt:"
33
+ echo $cfg
34
+ echo "Please update the PR to incorporate those changes."
35
+ exit 1
36
+ fi
37
+ exit 0
@@ -1,59 +1,59 @@
1
1
  {
2
2
  "maintainers": [
3
3
  {
4
- "github_username": "IanWhitney",
5
- "show_on_website": false,
6
4
  "alumnus": false,
7
- "name": null,
5
+ "avatar_url": null,
8
6
  "bio": null,
7
+ "github_username": "IanWhitney",
9
8
  "link_text": null,
10
9
  "link_url": null,
11
- "avatar_url": null
10
+ "name": null,
11
+ "show_on_website": false
12
12
  },
13
13
  {
14
+ "alumnus": true,
14
15
  "github_username": "etrepum",
15
- "show_on_website": false,
16
- "alumnus": true
16
+ "show_on_website": false
17
17
  },
18
18
  {
19
- "github_username": "ijanos",
20
- "show_on_website": false,
21
19
  "alumnus": false,
22
- "name": null,
20
+ "avatar_url": null,
23
21
  "bio": null,
22
+ "github_username": "ijanos",
24
23
  "link_text": null,
25
24
  "link_url": null,
26
- "avatar_url": null
25
+ "name": null,
26
+ "show_on_website": false
27
27
  },
28
28
  {
29
- "github_username": "petertseng",
30
- "show_on_website": false,
31
29
  "alumnus": false,
32
- "name": null,
30
+ "avatar_url": null,
33
31
  "bio": null,
32
+ "github_username": "petertseng",
34
33
  "link_text": null,
35
34
  "link_url": null,
36
- "avatar_url": null
35
+ "name": null,
36
+ "show_on_website": false
37
37
  },
38
38
  {
39
- "github_username": "EduardoBautista",
40
- "show_on_website": false,
41
39
  "alumnus": false,
42
- "name": null,
40
+ "avatar_url": null,
43
41
  "bio": null,
42
+ "github_username": "EduardoBautista",
44
43
  "link_text": null,
45
44
  "link_url": null,
46
- "avatar_url": null
45
+ "name": null,
46
+ "show_on_website": false
47
47
  },
48
48
  {
49
- "github_username": "coriolinus",
50
- "show_on_website": false,
51
49
  "alumnus": false,
52
- "name": null,
50
+ "avatar_url": null,
53
51
  "bio": null,
52
+ "github_username": "coriolinus",
54
53
  "link_text": null,
55
54
  "link_url": null,
56
- "avatar_url": null
55
+ "name": null,
56
+ "show_on_website": false
57
57
  }
58
58
  ]
59
- }
59
+ }