trackler 2.2.1.41 → 2.2.1.42

Sign up to get free protection for your applications and to get access to all the features.
Files changed (289) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +0 -3
  3. data/lib/trackler/version.rb +1 -1
  4. data/problem-specifications/exercises/change/metadata.yml +0 -3
  5. data/tracks/c/exercises/allergies/src/allergies.h +12 -12
  6. data/tracks/c/exercises/allergies/src/example.c +4 -4
  7. data/tracks/c/exercises/allergies/src/example.h +14 -14
  8. data/tracks/c/exercises/allergies/test/test_allergies.c +45 -45
  9. data/tracks/cfml/config.json +139 -193
  10. data/tracks/cfml/config/maintainers.json +11 -11
  11. data/tracks/csharp/exercises/etl/Etl.cs +1 -1
  12. data/tracks/csharp/exercises/etl/EtlTest.cs +102 -0
  13. data/tracks/csharp/exercises/etl/Example.cs +1 -1
  14. data/tracks/csharp/exercises/pascals-triangle/Example.cs +10 -1
  15. data/tracks/csharp/exercises/pascals-triangle/PascalsTriangle.cs +1 -0
  16. data/tracks/csharp/exercises/pascals-triangle/PascalsTriangleTest.cs +17 -50
  17. data/tracks/csharp/exercises/saddle-points/SaddlePointsTest.cs +75 -0
  18. data/tracks/csharp/generators/Exercises/Etl.cs +61 -0
  19. data/tracks/csharp/generators/Exercises/PascalsTriangle.cs +28 -0
  20. data/tracks/csharp/generators/Exercises/SaddlePoints.cs +50 -0
  21. data/tracks/csharp/generators/Output/ValueFormatter.cs +29 -0
  22. data/tracks/java/config.json +40 -5
  23. data/tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java +11 -10
  24. data/tracks/java/exercises/triangle/src/main/java/Triangle.java +9 -1
  25. data/tracks/java/exercises/triangle/src/test/java/TriangleTest.java +12 -12
  26. data/tracks/python/exercises/phone-number/phone_number.py +1 -1
  27. data/tracks/python/exercises/rna-transcription/rna_transcription.py +1 -1
  28. data/tracks/python/exercises/run-length-encoding/run_length_encoding.py +2 -2
  29. data/tracks/python/exercises/saddle-points/saddle_points.py +1 -1
  30. data/tracks/rust/exercises/etl/README.md +1 -1
  31. data/tracks/rust/exercises/ocr-numbers/README.md +1 -1
  32. data/tracks/rust/exercises/pascals-triangle/README.md +1 -1
  33. data/tracks/rust/exercises/rna-transcription/README.md +1 -1
  34. data/tracks/scala/exercises/meetup/src/test/scala/MeetupTest.scala +118 -93
  35. data/tracks/scala/testgen/src/main/scala/MeetupTestGenerator.scala +48 -0
  36. data/tracks/scala/testgen/src/main/scala/testgen/CanonicalDataParser.scala +1 -1
  37. data/tracks/typescript/config.json +13 -0
  38. data/tracks/typescript/exercises/bob/bob.ts +7 -0
  39. data/tracks/typescript/exercises/hello-world/hello-world.ts +7 -0
  40. data/tracks/typescript/exercises/leap/leap.ts +5 -0
  41. data/tracks/typescript/exercises/pangram/pangram.ts +11 -0
  42. data/tracks/typescript/exercises/prime-factors/README.md +73 -0
  43. data/tracks/typescript/exercises/prime-factors/package.json +36 -0
  44. data/tracks/typescript/exercises/prime-factors/prime-factors.example.ts +14 -0
  45. data/tracks/typescript/exercises/prime-factors/prime-factors.test.ts +25 -0
  46. data/tracks/{coldfusion/exercises/acronym/.meta/HINTS.md → typescript/exercises/prime-factors/prime-factors.ts} +0 -0
  47. data/tracks/typescript/exercises/prime-factors/tsconfig.json +22 -0
  48. data/tracks/typescript/exercises/prime-factors/tslint.json +127 -0
  49. data/tracks/typescript/exercises/prime-factors/yarn.lock +2305 -0
  50. data/tracks/typescript/exercises/rna-transcription/rna-transcription.ts +7 -0
  51. metadata +16 -242
  52. data/tracks/coldfusion/.gitignore +0 -5
  53. data/tracks/coldfusion/.travis.yml +0 -18
  54. data/tracks/coldfusion/CONTRIBUTING.md +0 -10
  55. data/tracks/coldfusion/LICENSE +0 -21
  56. data/tracks/coldfusion/README.md +0 -92
  57. data/tracks/coldfusion/bin/fetch-configlet +0 -32
  58. data/tracks/coldfusion/config.json +0 -223
  59. data/tracks/coldfusion/config/exercise_readme.go.tmpl +0 -16
  60. data/tracks/coldfusion/config/maintainers.json +0 -13
  61. data/tracks/coldfusion/docs/ABOUT.md +0 -10
  62. data/tracks/coldfusion/docs/EXERCISE_README_INSERT.md +0 -15
  63. data/tracks/coldfusion/docs/INSTALLATION.md +0 -35
  64. data/tracks/coldfusion/docs/LEARNING.md +0 -37
  65. data/tracks/coldfusion/docs/RESOURCES.md +0 -29
  66. data/tracks/coldfusion/docs/SNIPPET.txt +0 -8
  67. data/tracks/coldfusion/docs/TESTS.md +0 -13
  68. data/tracks/coldfusion/exercises/acronym/Acronym.cfc +0 -13
  69. data/tracks/coldfusion/exercises/acronym/AcronymTest.cfc +0 -43
  70. data/tracks/coldfusion/exercises/acronym/Solution.cfc +0 -22
  71. data/tracks/coldfusion/exercises/acronym/SolutionTest.cfc +0 -7
  72. data/tracks/coldfusion/exercises/acronym/TestRunner.cfc +0 -103
  73. data/tracks/coldfusion/exercises/acronym/box.json +0 -8
  74. data/tracks/coldfusion/exercises/acronym/index.cfm +0 -37
  75. data/tracks/coldfusion/exercises/atbash-cipher/.meta/HINTS.md +0 -0
  76. data/tracks/coldfusion/exercises/atbash-cipher/AtbashCipher.cfc +0 -14
  77. data/tracks/coldfusion/exercises/atbash-cipher/AtbashCipherTest.cfc +0 -71
  78. data/tracks/coldfusion/exercises/atbash-cipher/Solution.cfc +0 -56
  79. data/tracks/coldfusion/exercises/atbash-cipher/SolutionTest.cfc +0 -7
  80. data/tracks/coldfusion/exercises/atbash-cipher/TestRunner.cfc +0 -103
  81. data/tracks/coldfusion/exercises/atbash-cipher/box.json +0 -8
  82. data/tracks/coldfusion/exercises/atbash-cipher/index.cfm +0 -37
  83. data/tracks/coldfusion/exercises/bob/.meta/HINTS.md +0 -0
  84. data/tracks/coldfusion/exercises/bob/Bob.cfc +0 -13
  85. data/tracks/coldfusion/exercises/bob/BobTest.cfc +0 -115
  86. data/tracks/coldfusion/exercises/bob/Solution.cfc +0 -27
  87. data/tracks/coldfusion/exercises/bob/SolutionTest.cfc +0 -7
  88. data/tracks/coldfusion/exercises/bob/TestRunner.cfc +0 -103
  89. data/tracks/coldfusion/exercises/bob/box.json +0 -8
  90. data/tracks/coldfusion/exercises/bob/index.cfm +0 -37
  91. data/tracks/coldfusion/exercises/diamond/.meta/HINTS.md +0 -0
  92. data/tracks/coldfusion/exercises/diamond/Diamond.cfc +0 -13
  93. data/tracks/coldfusion/exercises/diamond/DiamondTest.cfc +0 -35
  94. data/tracks/coldfusion/exercises/diamond/Solution.cfc +0 -35
  95. data/tracks/coldfusion/exercises/diamond/SolutionTest.cfc +0 -7
  96. data/tracks/coldfusion/exercises/diamond/TestRunner.cfc +0 -103
  97. data/tracks/coldfusion/exercises/diamond/box.json +0 -8
  98. data/tracks/coldfusion/exercises/diamond/index.cfm +0 -37
  99. data/tracks/coldfusion/exercises/difference-of-squares/.meta/HINTS.md +0 -0
  100. data/tracks/coldfusion/exercises/difference-of-squares/DifferenceOfSquares.cfc +0 -18
  101. data/tracks/coldfusion/exercises/difference-of-squares/DifferenceOfSquaresTest.cfc +0 -63
  102. data/tracks/coldfusion/exercises/difference-of-squares/Solution.cfc +0 -28
  103. data/tracks/coldfusion/exercises/difference-of-squares/SolutionTest.cfc +0 -7
  104. data/tracks/coldfusion/exercises/difference-of-squares/TestRunner.cfc +0 -103
  105. data/tracks/coldfusion/exercises/difference-of-squares/box.json +0 -8
  106. data/tracks/coldfusion/exercises/difference-of-squares/index.cfm +0 -37
  107. data/tracks/coldfusion/exercises/flatten-array/.meta/HINTS.md +0 -0
  108. data/tracks/coldfusion/exercises/flatten-array/FlattenArray.cfc +0 -13
  109. data/tracks/coldfusion/exercises/flatten-array/FlattenArrayTest.cfc +0 -42
  110. data/tracks/coldfusion/exercises/flatten-array/Solution.cfc +0 -26
  111. data/tracks/coldfusion/exercises/flatten-array/SolutionTest.cfc +0 -7
  112. data/tracks/coldfusion/exercises/flatten-array/TestRunner.cfc +0 -103
  113. data/tracks/coldfusion/exercises/flatten-array/box.json +0 -8
  114. data/tracks/coldfusion/exercises/flatten-array/index.cfm +0 -37
  115. data/tracks/coldfusion/exercises/gigasecond/.meta/HINTS.md +0 -0
  116. data/tracks/coldfusion/exercises/gigasecond/Gigasecond.cfc +0 -13
  117. data/tracks/coldfusion/exercises/gigasecond/GigasecondTest.cfc +0 -39
  118. data/tracks/coldfusion/exercises/gigasecond/Solution.cfc +0 -16
  119. data/tracks/coldfusion/exercises/gigasecond/SolutionTest.cfc +0 -7
  120. data/tracks/coldfusion/exercises/gigasecond/TestRunner.cfc +0 -103
  121. data/tracks/coldfusion/exercises/gigasecond/box.json +0 -8
  122. data/tracks/coldfusion/exercises/gigasecond/index.cfm +0 -37
  123. data/tracks/coldfusion/exercises/grains/.meta/HINTS.md +0 -0
  124. data/tracks/coldfusion/exercises/grains/Grains.cfc +0 -14
  125. data/tracks/coldfusion/exercises/grains/GrainsTest.cfc +0 -63
  126. data/tracks/coldfusion/exercises/grains/Solution.cfc +0 -22
  127. data/tracks/coldfusion/exercises/grains/SolutionTest.cfc +0 -7
  128. data/tracks/coldfusion/exercises/grains/TestRunner.cfc +0 -103
  129. data/tracks/coldfusion/exercises/grains/box.json +0 -8
  130. data/tracks/coldfusion/exercises/grains/index.cfm +0 -37
  131. data/tracks/coldfusion/exercises/hamming/.meta/HINTS.md +0 -0
  132. data/tracks/coldfusion/exercises/hamming/Hamming.cfc +0 -13
  133. data/tracks/coldfusion/exercises/hamming/HammingTest.cfc +0 -75
  134. data/tracks/coldfusion/exercises/hamming/Solution.cfc +0 -25
  135. data/tracks/coldfusion/exercises/hamming/SolutionTest.cfc +0 -7
  136. data/tracks/coldfusion/exercises/hamming/TestRunner.cfc +0 -103
  137. data/tracks/coldfusion/exercises/hamming/box.json +0 -8
  138. data/tracks/coldfusion/exercises/hamming/index.cfm +0 -37
  139. data/tracks/coldfusion/exercises/hello-world/HelloWorld.cfc +0 -13
  140. data/tracks/coldfusion/exercises/hello-world/HelloWorldTest.cfc +0 -18
  141. data/tracks/coldfusion/exercises/hello-world/Solution.cfc +0 -13
  142. data/tracks/coldfusion/exercises/hello-world/SolutionTest.cfc +0 -7
  143. data/tracks/coldfusion/exercises/hello-world/TestRunner.cfc +0 -103
  144. data/tracks/coldfusion/exercises/hello-world/box.json +0 -8
  145. data/tracks/coldfusion/exercises/hello-world/index.cfm +0 -37
  146. data/tracks/coldfusion/exercises/isogram/.meta/HINTS.md +0 -0
  147. data/tracks/coldfusion/exercises/isogram/Isogram.cfc +0 -13
  148. data/tracks/coldfusion/exercises/isogram/IsogramTest.cfc +0 -55
  149. data/tracks/coldfusion/exercises/isogram/Solution.cfc +0 -23
  150. data/tracks/coldfusion/exercises/isogram/SolutionTest.cfc +0 -7
  151. data/tracks/coldfusion/exercises/isogram/TestRunner.cfc +0 -103
  152. data/tracks/coldfusion/exercises/isogram/box.json +0 -8
  153. data/tracks/coldfusion/exercises/isogram/index.cfm +0 -37
  154. data/tracks/coldfusion/exercises/largest-series-product/.meta/HINTS.md +0 -0
  155. data/tracks/coldfusion/exercises/largest-series-product/LargestSeriesProduct.cfc +0 -13
  156. data/tracks/coldfusion/exercises/largest-series-product/LargestSeriesProductTest.cfc +0 -75
  157. data/tracks/coldfusion/exercises/largest-series-product/Solution.cfc +0 -41
  158. data/tracks/coldfusion/exercises/largest-series-product/SolutionTest.cfc +0 -7
  159. data/tracks/coldfusion/exercises/largest-series-product/TestRunner.cfc +0 -103
  160. data/tracks/coldfusion/exercises/largest-series-product/box.json +0 -8
  161. data/tracks/coldfusion/exercises/largest-series-product/index.cfm +0 -37
  162. data/tracks/coldfusion/exercises/leap/Leap.cfc +0 -15
  163. data/tracks/coldfusion/exercises/leap/LeapTest.cfc +0 -39
  164. data/tracks/coldfusion/exercises/leap/README.md +0 -33
  165. data/tracks/coldfusion/exercises/leap/Solution.cfc +0 -19
  166. data/tracks/coldfusion/exercises/leap/SolutionTest.cfc +0 -7
  167. data/tracks/coldfusion/exercises/leap/TestRunner.cfc +0 -103
  168. data/tracks/coldfusion/exercises/leap/box.json +0 -8
  169. data/tracks/coldfusion/exercises/leap/index.cfm +0 -37
  170. data/tracks/coldfusion/exercises/luhn/.meta/HINTS.md +0 -0
  171. data/tracks/coldfusion/exercises/luhn/Luhn.cfc +0 -13
  172. data/tracks/coldfusion/exercises/luhn/LuhnTest.cfc +0 -67
  173. data/tracks/coldfusion/exercises/luhn/Solution.cfc +0 -38
  174. data/tracks/coldfusion/exercises/luhn/SolutionTest.cfc +0 -7
  175. data/tracks/coldfusion/exercises/luhn/TestRunner.cfc +0 -103
  176. data/tracks/coldfusion/exercises/luhn/box.json +0 -8
  177. data/tracks/coldfusion/exercises/luhn/index.cfm +0 -37
  178. data/tracks/coldfusion/exercises/nth-prime/.meta/HINTS.md +0 -0
  179. data/tracks/coldfusion/exercises/nth-prime/NthPrime.cfc +0 -13
  180. data/tracks/coldfusion/exercises/nth-prime/NthPrimeTest.cfc +0 -35
  181. data/tracks/coldfusion/exercises/nth-prime/Solution.cfc +0 -33
  182. data/tracks/coldfusion/exercises/nth-prime/SolutionTest.cfc +0 -7
  183. data/tracks/coldfusion/exercises/nth-prime/TestRunner.cfc +0 -103
  184. data/tracks/coldfusion/exercises/nth-prime/box.json +0 -8
  185. data/tracks/coldfusion/exercises/nth-prime/index.cfm +0 -37
  186. data/tracks/coldfusion/exercises/pangram/.meta/HINTS.md +0 -0
  187. data/tracks/coldfusion/exercises/pangram/Pangram.cfc +0 -13
  188. data/tracks/coldfusion/exercises/pangram/PangramTest.cfc +0 -55
  189. data/tracks/coldfusion/exercises/pangram/Solution.cfc +0 -21
  190. data/tracks/coldfusion/exercises/pangram/SolutionTest.cfc +0 -7
  191. data/tracks/coldfusion/exercises/pangram/TestRunner.cfc +0 -103
  192. data/tracks/coldfusion/exercises/pangram/box.json +0 -8
  193. data/tracks/coldfusion/exercises/pangram/index.cfm +0 -37
  194. data/tracks/coldfusion/exercises/pig-latin/.meta/HINTS.md +0 -0
  195. data/tracks/coldfusion/exercises/pig-latin/PigLatin.cfc +0 -13
  196. data/tracks/coldfusion/exercises/pig-latin/PigLatinTest.cfc +0 -115
  197. data/tracks/coldfusion/exercises/pig-latin/Solution.cfc +0 -30
  198. data/tracks/coldfusion/exercises/pig-latin/SolutionTest.cfc +0 -7
  199. data/tracks/coldfusion/exercises/pig-latin/TestRunner.cfc +0 -103
  200. data/tracks/coldfusion/exercises/pig-latin/box.json +0 -8
  201. data/tracks/coldfusion/exercises/pig-latin/index.cfm +0 -37
  202. data/tracks/coldfusion/exercises/raindrops/.meta/HINTS.md +0 -0
  203. data/tracks/coldfusion/exercises/raindrops/Raindrops.cfc +0 -13
  204. data/tracks/coldfusion/exercises/raindrops/RaindropsTest.cfc +0 -87
  205. data/tracks/coldfusion/exercises/raindrops/Solution.cfc +0 -33
  206. data/tracks/coldfusion/exercises/raindrops/SolutionTest.cfc +0 -7
  207. data/tracks/coldfusion/exercises/raindrops/TestRunner.cfc +0 -103
  208. data/tracks/coldfusion/exercises/raindrops/box.json +0 -8
  209. data/tracks/coldfusion/exercises/raindrops/index.cfm +0 -37
  210. data/tracks/coldfusion/exercises/rna-transcription/.meta/HINTS.md +0 -0
  211. data/tracks/coldfusion/exercises/rna-transcription/RnaTranscription.cfc +0 -13
  212. data/tracks/coldfusion/exercises/rna-transcription/RnaTranscriptionTest.cfc +0 -47
  213. data/tracks/coldfusion/exercises/rna-transcription/Solution.cfc +0 -35
  214. data/tracks/coldfusion/exercises/rna-transcription/SolutionTest.cfc +0 -7
  215. data/tracks/coldfusion/exercises/rna-transcription/TestRunner.cfc +0 -103
  216. data/tracks/coldfusion/exercises/rna-transcription/box.json +0 -8
  217. data/tracks/coldfusion/exercises/rna-transcription/index.cfm +0 -37
  218. data/tracks/coldfusion/exercises/saddle-points/.meta/HINTS.md +0 -0
  219. data/tracks/coldfusion/exercises/saddle-points/SaddlePoints.cfc +0 -13
  220. data/tracks/coldfusion/exercises/saddle-points/SaddlePointsTest.cfc +0 -35
  221. data/tracks/coldfusion/exercises/saddle-points/Solution.cfc +0 -59
  222. data/tracks/coldfusion/exercises/saddle-points/SolutionTest.cfc +0 -7
  223. data/tracks/coldfusion/exercises/saddle-points/TestRunner.cfc +0 -103
  224. data/tracks/coldfusion/exercises/saddle-points/box.json +0 -8
  225. data/tracks/coldfusion/exercises/saddle-points/index.cfm +0 -37
  226. data/tracks/coldfusion/exercises/scrabble-score/.meta/HINTS.md +0 -0
  227. data/tracks/coldfusion/exercises/scrabble-score/ScrabbleScore.cfc +0 -13
  228. data/tracks/coldfusion/exercises/scrabble-score/ScrabbleScoreTest.cfc +0 -59
  229. data/tracks/coldfusion/exercises/scrabble-score/Solution.cfc +0 -50
  230. data/tracks/coldfusion/exercises/scrabble-score/SolutionTest.cfc +0 -7
  231. data/tracks/coldfusion/exercises/scrabble-score/TestRunner.cfc +0 -103
  232. data/tracks/coldfusion/exercises/scrabble-score/box.json +0 -8
  233. data/tracks/coldfusion/exercises/scrabble-score/index.cfm +0 -37
  234. data/tracks/coldfusion/exercises/secret-handshake/.meta/HINTS.md +0 -0
  235. data/tracks/coldfusion/exercises/secret-handshake/SecretHandshake.cfc +0 -13
  236. data/tracks/coldfusion/exercises/secret-handshake/SecretHandshakeTest.cfc +0 -63
  237. data/tracks/coldfusion/exercises/secret-handshake/Solution.cfc +0 -31
  238. data/tracks/coldfusion/exercises/secret-handshake/SolutionTest.cfc +0 -7
  239. data/tracks/coldfusion/exercises/secret-handshake/TestRunner.cfc +0 -103
  240. data/tracks/coldfusion/exercises/secret-handshake/box.json +0 -8
  241. data/tracks/coldfusion/exercises/secret-handshake/index.cfm +0 -37
  242. data/tracks/coldfusion/exercises/space-age/.meta/HINTS.md +0 -0
  243. data/tracks/coldfusion/exercises/space-age/Solution.cfc +0 -28
  244. data/tracks/coldfusion/exercises/space-age/SolutionTest.cfc +0 -7
  245. data/tracks/coldfusion/exercises/space-age/SpaceAge.cfc +0 -13
  246. data/tracks/coldfusion/exercises/space-age/SpaceAgeTest.cfc +0 -47
  247. data/tracks/coldfusion/exercises/space-age/TestRunner.cfc +0 -103
  248. data/tracks/coldfusion/exercises/space-age/box.json +0 -8
  249. data/tracks/coldfusion/exercises/space-age/index.cfm +0 -37
  250. data/tracks/coldfusion/exercises/sum-of-multiples/.meta/HINTS.md +0 -0
  251. data/tracks/coldfusion/exercises/sum-of-multiples/Solution.cfc +0 -27
  252. data/tracks/coldfusion/exercises/sum-of-multiples/SolutionTest.cfc +0 -7
  253. data/tracks/coldfusion/exercises/sum-of-multiples/SumOfMultiples.cfc +0 -13
  254. data/tracks/coldfusion/exercises/sum-of-multiples/SumOfMultiplesTest.cfc +0 -63
  255. data/tracks/coldfusion/exercises/sum-of-multiples/TestRunner.cfc +0 -103
  256. data/tracks/coldfusion/exercises/sum-of-multiples/box.json +0 -8
  257. data/tracks/coldfusion/exercises/sum-of-multiples/index.cfm +0 -37
  258. data/tracks/coldfusion/exercises/triangle/.meta/HINTS.md +0 -0
  259. data/tracks/coldfusion/exercises/triangle/Solution.cfc +0 -53
  260. data/tracks/coldfusion/exercises/triangle/SolutionTest.cfc +0 -7
  261. data/tracks/coldfusion/exercises/triangle/TestRunner.cfc +0 -103
  262. data/tracks/coldfusion/exercises/triangle/Triangle.cfc +0 -18
  263. data/tracks/coldfusion/exercises/triangle/TriangleTest.cfc +0 -95
  264. data/tracks/coldfusion/exercises/triangle/box.json +0 -8
  265. data/tracks/coldfusion/exercises/triangle/index.cfm +0 -37
  266. data/tracks/coldfusion/exercises/word-count/.meta/HINTS.md +0 -0
  267. data/tracks/coldfusion/exercises/word-count/Solution.cfc +0 -22
  268. data/tracks/coldfusion/exercises/word-count/SolutionTest.cfc +0 -7
  269. data/tracks/coldfusion/exercises/word-count/TestRunner.cfc +0 -103
  270. data/tracks/coldfusion/exercises/word-count/WordCount.cfc +0 -13
  271. data/tracks/coldfusion/exercises/word-count/WordCountTest.cfc +0 -55
  272. data/tracks/coldfusion/exercises/word-count/box.json +0 -8
  273. data/tracks/coldfusion/exercises/word-count/index.cfm +0 -37
  274. data/tracks/coldfusion/img/icon.png +0 -0
  275. data/tracks/coldfusion/tasks/GenerateTests.cfc +0 -179
  276. data/tracks/coldfusion/tasks/ScaffoldExercise.cfc +0 -85
  277. data/tracks/coldfusion/tasks/TestAllSolutions.cfc +0 -24
  278. data/tracks/coldfusion/tasks/exercise_template/.meta/HINTS.md +0 -0
  279. data/tracks/coldfusion/tasks/exercise_template/@@name@@.cfc +0 -13
  280. data/tracks/coldfusion/tasks/exercise_template/@@name@@Test.cfc +0 -15
  281. data/tracks/coldfusion/tasks/exercise_template/Solution.cfc +0 -6
  282. data/tracks/coldfusion/tasks/exercise_template/SolutionTest.cfc +0 -7
  283. data/tracks/coldfusion/tasks/exercise_template/TestRunner.cfc +0 -103
  284. data/tracks/coldfusion/tasks/exercise_template/box.json +0 -8
  285. data/tracks/coldfusion/tasks/exercise_template/index.cfm +0 -37
  286. data/tracks/csharp/exercises/etl/ETLTest.cs +0 -51
  287. data/tracks/csharp/exercises/saddle-points/SaddlePointTest.cs +0 -68
  288. data/tracks/java/exercises/triangle/.meta/src/reference/java/TriangleKind.java +0 -5
  289. data/tracks/java/exercises/triangle/src/main/java/TriangleKind.java +0 -5
@@ -1,13 +0,0 @@
1
- /**
2
- * Your implmentation of the SaddlePoints exercise
3
- */
4
- component {
5
-
6
- /**
7
- * @returns
8
- */
9
- function saddlePoints( input ) {
10
- // Implement me here
11
- }
12
-
13
- }
@@ -1,35 +0,0 @@
1
- component extends="testbox.system.BaseSpec" {
2
-
3
- function beforeAll(){
4
- SUT = createObject( 'SaddlePoints' );
5
- }
6
-
7
- function run(){
8
-
9
- describe( "My SaddlePoints class", function(){
10
-
11
- it( 'Can identify single saddle point', function(){
12
- expect( SUT.saddlePoints( input=[[9, 8, 7], [5, 3, 2], [6, 6, 7]] ) ).toBe( [{"row":1,"column":0}] );
13
- });
14
-
15
- it( 'Can identify that empty matrix has no saddle points', function(){
16
- expect( SUT.saddlePoints( input=[[]] ) ).toBe( [] );
17
- });
18
-
19
- it( 'Can identify lack of saddle points when there are none', function(){
20
- expect( SUT.saddlePoints( input=[[1, 2, 3], [3, 1, 2], [2, 3, 1]] ) ).toBe( [] );
21
- });
22
-
23
- it( 'Can identify multiple saddle points', function(){
24
- expect( SUT.saddlePoints( input=[[4, 5, 4], [3, 5, 5], [1, 5, 4]] ) ).toBe( [{"row":0,"column":1},{"row":1,"column":1},{"row":2,"column":1}] );
25
- });
26
-
27
- it( 'Can identify saddle point in bottom right corner', function(){
28
- expect( SUT.saddlePoints( input=[[8, 7, 9], [6, 7, 6], [3, 2, 5]] ) ).toBe( [{"row":2,"column":2}] );
29
- });
30
-
31
- });
32
-
33
- }
34
-
35
- }
@@ -1,59 +0,0 @@
1
- /**
2
- * Here is an example solution for the SaddlePoints exercise
3
- */
4
- component {
5
-
6
- function saddlePoints( input ) {
7
- if( input.isEmpty() || input[ 1 ].isEmpty() ) {
8
- return [];
9
- }
10
-
11
- var result = [];
12
- // Loop over each column
13
- for( var col=1; col<=3; col++ ) {
14
-
15
- // Loop over each row
16
- for( var row=1; row<=3; row++ ) {
17
-
18
- // This value must be the biggest int he row
19
- if( getAt( input, row, col ) >= rowMax( input, row )
20
- // and the least in the column
21
- && getAt( input, row, col ) <= colMin( input, col ) ){
22
-
23
- // Silly exercise uses inferior 0-based numbering!
24
- result.append( {
25
- row : row-1,
26
- column : col-1
27
- } );
28
-
29
- } // End check
30
-
31
- } // end row loop
32
-
33
- } // end col loop
34
-
35
- return result;
36
- }
37
-
38
- /**
39
- * Get minimum value for a column
40
- */
41
- private function colMin( input, col ) {
42
- return [ input[ 1 ][ col ], input[ 2 ][ col ], input[ 3 ][ col ] ].min();
43
- }
44
-
45
- /**
46
- * Get maximum value for a row
47
- */
48
- private function rowMax( input, row ) {
49
- return input[ row ].max();
50
- }
51
-
52
- /**
53
- * Get a specific value from the matrix
54
- */
55
- private function getAt( input, row, col ) {
56
- return input[ row ][ col ];
57
- }
58
-
59
- }
@@ -1,7 +0,0 @@
1
- component extends="SaddlePointsTest" {
2
-
3
- function beforeAll(){
4
- SUT = createObject( 'Solution' );
5
- }
6
-
7
- }
@@ -1,103 +0,0 @@
1
- /**
2
- * I am a CommandBox task runner which you can use to test your implementation of this exercise against the
3
- * provided test suite. To use me, open the CommandBox CLI and run this:
4
- *
5
- * CommandBox> task run TestRunner
6
- *
7
- * To start up a test watcher that will automatically rerun the test suite every time you save a file change, run this:
8
- *
9
- * CommandBox> task run TestRunner --watcher
10
- *
11
- */
12
- component {
13
-
14
- /**
15
- * @solution Runs the tests against the solution
16
- * @watcher Start up a file watch that re-runs the tests on file changes. Use Ctrl-C to stop
17
- */
18
- function run( boolean solution=false, boolean watcher=false ) {
19
-
20
- ensureTestBox();
21
-
22
- if( watcher ) {
23
-
24
- // Tabula rasa
25
- command( 'cls' ).run();
26
-
27
- // Start watcher
28
- watch()
29
- .paths( '*.cfc' )
30
- .inDirectory( getCWD() )
31
- .withDelay( 500 )
32
- .onChange( function() {
33
-
34
- // Clear the screen
35
- command( 'cls' )
36
- .run();
37
-
38
- // This is neccessary so changes to tests get picked up right away.
39
- pagePoolClear();
40
-
41
- runTests( solution );
42
-
43
- } )
44
- .start();
45
-
46
- } else {
47
- runTests( solution );
48
- }
49
-
50
- }
51
-
52
- /**
53
- * Make sure the TestBox framework is installed
54
- */
55
- private function ensureTestBox() {
56
- var excerciseRoot = getCWD();
57
- var testBoxRoot = excerciseRoot & '/testbox';
58
-
59
- if( !directoryExists( testBoxRoot ) ) {
60
-
61
- print.boldYellowLine( 'Installing some missing dependencies for you!' ).toConsole();
62
- command( 'install' )
63
- .inWorkingDirectory( excerciseRoot )
64
- .run();
65
- }
66
-
67
- // Bootstrap TestBox framework
68
- filesystemUtil.createMapping( '/testbox', testBoxRoot );
69
- }
70
-
71
- /**
72
- * Invoke TestBox to run the test suite
73
- */
74
- private function runTests( boolean solution=false ) {
75
-
76
- // Create TestBox and run the tests
77
- testData = new testbox.system.TestBox()
78
- .runRaw( directory = {
79
- // Find all CFCs...
80
- mapping = filesystemUtil.makePathRelative( getCWD() ),
81
- // ... in this directory ...
82
- recurse = false,
83
- // ... whose name ends in "test"
84
- filter = function( path ) {
85
- return path.reFind( ( solution ? 'Solution' : '' ) & 'Test.cfc$' );
86
- }
87
- } )
88
- .getMemento();
89
-
90
- // Print out the results with ANSI formatting for the CLI
91
- getInstance( 'CLIRenderer@testbox-commands' )
92
- .render( print, testData, true );
93
-
94
- print.toConsole();
95
-
96
- // Set proper exit code
97
- if( testData.totalFail || testData.totalError ) {
98
- setExitCode( 1 );
99
- }
100
- }
101
-
102
- }
103
-
@@ -1,8 +0,0 @@
1
- {
2
- "dependencies":{
3
- "testbox":"^2.5.0+107"
4
- },
5
- "installPaths":{
6
- "testbox":"testbox"
7
- }
8
- }
@@ -1,37 +0,0 @@
1
- <!---
2
-
3
- This file will only be used if you want to start up a web server in this directory. You can do so by running:
4
-
5
- $> box
6
- CommandBox> install
7
- CommandBox> server start
8
-
9
- However, this is not necessary unless you really just want to use the HTML reporters on TestBox.
10
- Ideally, you'll skip the need for this file entirely and just run the tests directly frm the CLI like this:
11
-
12
- CommandBox> task run TestRunner
13
-
14
- --->
15
- <cfsetting showDebugOutput="false">
16
- <cfparam name="url.reporter" default="simple">
17
- <cfscript>
18
- // get a list of all CFCs in this folder whose name looks like "XXXTest.cfc"
19
- // And turn it into compnent path relative to the web root
20
- url.bundles = directoryList(
21
- path=expandPath( '/' ),
22
- filter='*Test.cfc' )
23
- .map( function( path ) {
24
- return path
25
- .replaceNoCase( expandPath( '/' ), '' )
26
- .left( -4 )
27
- } )
28
- .toList();
29
- </cfscript>
30
-
31
- <!--- Ensure TestBox --->
32
- <cfif fileExists( "/testbox/system/runners/HTMLRunner.cfm" )>
33
- <!--- Include the TestBox HTML Runner --->
34
- <cfinclude template="/testbox/system/runners/HTMLRunner.cfm">
35
- <cfelse>
36
- Oops, you don't have TestBox installed yet! Please run <b>box install</b> from the root of your excercise folder and refresh this page.
37
- </cfif>
@@ -1,13 +0,0 @@
1
- /**
2
- * Your implmentation of the ScrabbleScore exercise
3
- */
4
- component {
5
-
6
- /**
7
- * @returns
8
- */
9
- function score( input ) {
10
- // Implement me here
11
- }
12
-
13
- }
@@ -1,59 +0,0 @@
1
- component extends="testbox.system.BaseSpec" {
2
-
3
- function beforeAll(){
4
- SUT = createObject( 'ScrabbleScore' );
5
- }
6
-
7
- function run(){
8
-
9
- describe( "My ScrabbleScore class", function(){
10
-
11
- it( 'lowercase letter', function(){
12
- expect( SUT.score( input='a' ) ).toBe( '1' );
13
- });
14
-
15
- it( 'uppercase letter', function(){
16
- expect( SUT.score( input='A' ) ).toBe( '1' );
17
- });
18
-
19
- it( 'valuable letter', function(){
20
- expect( SUT.score( input='f' ) ).toBe( '4' );
21
- });
22
-
23
- it( 'short word', function(){
24
- expect( SUT.score( input='at' ) ).toBe( '2' );
25
- });
26
-
27
- it( 'short, valuable word', function(){
28
- expect( SUT.score( input='zoo' ) ).toBe( '12' );
29
- });
30
-
31
- it( 'medium word', function(){
32
- expect( SUT.score( input='street' ) ).toBe( '6' );
33
- });
34
-
35
- it( 'medium, valuable word', function(){
36
- expect( SUT.score( input='quirky' ) ).toBe( '22' );
37
- });
38
-
39
- it( 'long, mixed-case word', function(){
40
- expect( SUT.score( input='OxyphenButazone' ) ).toBe( '41' );
41
- });
42
-
43
- it( 'english-like word', function(){
44
- expect( SUT.score( input='pinata' ) ).toBe( '8' );
45
- });
46
-
47
- it( 'empty input', function(){
48
- expect( SUT.score( input='' ) ).toBe( '0' );
49
- });
50
-
51
- it( 'entire alphabet available', function(){
52
- expect( SUT.score( input='abcdefghijklmnopqrstuvwxyz' ) ).toBe( '87' );
53
- });
54
-
55
- });
56
-
57
- }
58
-
59
- }
@@ -1,50 +0,0 @@
1
- /**
2
- * Here is an example solution for the ScrabbleScore exercise
3
- */
4
- component {
5
-
6
- function score( input ) {
7
- // Set up scoring data
8
- var points = {
9
- A : 1,
10
- E : 1,
11
- I : 1,
12
- O : 1,
13
- U : 1,
14
- L : 1,
15
- N : 1,
16
- R : 1,
17
- S : 1,
18
- T : 1,
19
- D : 2,
20
- G : 2,
21
- B : 3,
22
- C : 3,
23
- M : 3,
24
- P : 3,
25
- F : 4,
26
- H : 4,
27
- V : 4,
28
- W : 4,
29
- Y : 4,
30
- K : 5,
31
- J : 8,
32
- X : 8,
33
- Q : 10,
34
- Z : 10
35
- };
36
-
37
- var totalScore = 0;
38
- // Loop over each char
39
- for( var char in input.listToArray( '' ) ) {
40
- // if it's a valid character
41
- if( points.keyExists( char ) ) {
42
- // Add in its score
43
- totalScore += points[ char ];
44
- }
45
- }
46
-
47
- return totalScore;
48
- }
49
-
50
- }
@@ -1,7 +0,0 @@
1
- component extends="ScrabbleScoreTest" {
2
-
3
- function beforeAll(){
4
- SUT = createObject( 'Solution' );
5
- }
6
-
7
- }
@@ -1,103 +0,0 @@
1
- /**
2
- * I am a CommandBox task runner which you can use to test your implementation of this exercise against the
3
- * provided test suite. To use me, open the CommandBox CLI and run this:
4
- *
5
- * CommandBox> task run TestRunner
6
- *
7
- * To start up a test watcher that will automatically rerun the test suite every time you save a file change, run this:
8
- *
9
- * CommandBox> task run TestRunner --watcher
10
- *
11
- */
12
- component {
13
-
14
- /**
15
- * @solution Runs the tests against the solution
16
- * @watcher Start up a file watch that re-runs the tests on file changes. Use Ctrl-C to stop
17
- */
18
- function run( boolean solution=false, boolean watcher=false ) {
19
-
20
- ensureTestBox();
21
-
22
- if( watcher ) {
23
-
24
- // Tabula rasa
25
- command( 'cls' ).run();
26
-
27
- // Start watcher
28
- watch()
29
- .paths( '*.cfc' )
30
- .inDirectory( getCWD() )
31
- .withDelay( 500 )
32
- .onChange( function() {
33
-
34
- // Clear the screen
35
- command( 'cls' )
36
- .run();
37
-
38
- // This is neccessary so changes to tests get picked up right away.
39
- pagePoolClear();
40
-
41
- runTests( solution );
42
-
43
- } )
44
- .start();
45
-
46
- } else {
47
- runTests( solution );
48
- }
49
-
50
- }
51
-
52
- /**
53
- * Make sure the TestBox framework is installed
54
- */
55
- private function ensureTestBox() {
56
- var excerciseRoot = getCWD();
57
- var testBoxRoot = excerciseRoot & '/testbox';
58
-
59
- if( !directoryExists( testBoxRoot ) ) {
60
-
61
- print.boldYellowLine( 'Installing some missing dependencies for you!' ).toConsole();
62
- command( 'install' )
63
- .inWorkingDirectory( excerciseRoot )
64
- .run();
65
- }
66
-
67
- // Bootstrap TestBox framework
68
- filesystemUtil.createMapping( '/testbox', testBoxRoot );
69
- }
70
-
71
- /**
72
- * Invoke TestBox to run the test suite
73
- */
74
- private function runTests( boolean solution=false ) {
75
-
76
- // Create TestBox and run the tests
77
- testData = new testbox.system.TestBox()
78
- .runRaw( directory = {
79
- // Find all CFCs...
80
- mapping = filesystemUtil.makePathRelative( getCWD() ),
81
- // ... in this directory ...
82
- recurse = false,
83
- // ... whose name ends in "test"
84
- filter = function( path ) {
85
- return path.reFind( ( solution ? 'Solution' : '' ) & 'Test.cfc$' );
86
- }
87
- } )
88
- .getMemento();
89
-
90
- // Print out the results with ANSI formatting for the CLI
91
- getInstance( 'CLIRenderer@testbox-commands' )
92
- .render( print, testData, true );
93
-
94
- print.toConsole();
95
-
96
- // Set proper exit code
97
- if( testData.totalFail || testData.totalError ) {
98
- setExitCode( 1 );
99
- }
100
- }
101
-
102
- }
103
-