trackler 2.2.1.22 → 2.2.1.23

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 (471) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/bash/exercises/bob/bob_test.sh +8 -6
  4. data/tracks/bash/exercises/bob/example.sh +30 -6
  5. data/tracks/coffeescript/docs/SNIPPET.txt +4 -0
  6. data/tracks/csharp/generators/Exercises/Allergies.cs +0 -2
  7. data/tracks/csharp/generators/Exercises/Anagram.cs +0 -2
  8. data/tracks/csharp/generators/Exercises/BinarySearch.cs +0 -2
  9. data/tracks/csharp/generators/Exercises/ComplexNumbers.cs +0 -2
  10. data/tracks/csharp/generators/Exercises/RailFenceCipher.cs +1 -2
  11. data/tracks/csharp/generators/Exercises/SpaceAge.cs +0 -3
  12. data/tracks/csharp/generators/Input/CanonicalDataCase.cs +37 -2
  13. data/tracks/dart/docs/SNIPPET.txt +5 -0
  14. data/tracks/ecmascript/exercises/simple-cipher/simple-cipher.spec.js +5 -1
  15. data/tracks/elm/docs/SNIPPET.txt +10 -0
  16. data/tracks/fortran/docs/SNIPPET.txt +9 -0
  17. data/tracks/fsharp/.gitignore +2 -2
  18. data/tracks/fsharp/.travis.yml +18 -5
  19. data/tracks/fsharp/build.cake +92 -0
  20. data/tracks/fsharp/build.ps1 +81 -0
  21. data/tracks/fsharp/build.sh +56 -33
  22. data/tracks/fsharp/config.json +14 -14
  23. data/tracks/fsharp/docs/INSTALLATION.md +14 -45
  24. data/tracks/fsharp/docs/TESTS.md +12 -25
  25. data/tracks/fsharp/exercises/Exercises.sln +648 -0
  26. data/tracks/fsharp/exercises/accumulate/Accumulate.fs +3 -0
  27. data/tracks/fsharp/exercises/accumulate/Accumulate.fsproj +22 -0
  28. data/tracks/fsharp/exercises/accumulate/AccumulateTest.fs +18 -22
  29. data/tracks/fsharp/exercises/accumulate/HINTS.md +1 -0
  30. data/tracks/fsharp/exercises/accumulate/Program.fs +1 -0
  31. data/tracks/fsharp/exercises/acronym/Acronym.fs +3 -0
  32. data/tracks/fsharp/exercises/acronym/Acronym.fsproj +22 -0
  33. data/tracks/fsharp/exercises/acronym/AcronymTest.fs +18 -24
  34. data/tracks/fsharp/exercises/acronym/Program.fs +1 -0
  35. data/tracks/fsharp/exercises/all-your-base/AllYourBase.fs +3 -0
  36. data/tracks/fsharp/exercises/all-your-base/AllYourBase.fsproj +22 -0
  37. data/tracks/fsharp/exercises/all-your-base/AllYourBaseTest.fs +45 -64
  38. data/tracks/fsharp/exercises/all-your-base/Program.fs +1 -0
  39. data/tracks/fsharp/exercises/allergies/Allergies.fs +9 -0
  40. data/tracks/fsharp/exercises/allergies/Allergies.fsproj +22 -0
  41. data/tracks/fsharp/exercises/allergies/AllergiesTest.fs +47 -51
  42. data/tracks/fsharp/exercises/allergies/Program.fs +1 -0
  43. data/tracks/fsharp/exercises/alphametics/Alphametics.fs +3 -0
  44. data/tracks/fsharp/exercises/alphametics/Alphametics.fsproj +22 -0
  45. data/tracks/fsharp/exercises/alphametics/AlphameticsTest.fs +19 -25
  46. data/tracks/fsharp/exercises/alphametics/Example.fs +13 -13
  47. data/tracks/fsharp/exercises/alphametics/Program.fs +1 -0
  48. data/tracks/fsharp/exercises/anagram/Anagram.fs +3 -0
  49. data/tracks/fsharp/exercises/anagram/Anagram.fsproj +22 -0
  50. data/tracks/fsharp/exercises/anagram/AnagramTest.fs +22 -33
  51. data/tracks/fsharp/exercises/anagram/Program.fs +1 -0
  52. data/tracks/fsharp/exercises/atbash-cipher/AtbashCipher.fs +3 -0
  53. data/tracks/fsharp/exercises/atbash-cipher/AtbashCipher.fsproj +22 -0
  54. data/tracks/fsharp/exercises/atbash-cipher/{AtbashTest.fs → AtbashCipherTest.fs} +18 -24
  55. data/tracks/fsharp/exercises/atbash-cipher/Program.fs +1 -0
  56. data/tracks/fsharp/exercises/bank-account/BankAccount.fs +11 -0
  57. data/tracks/fsharp/exercises/bank-account/BankAccount.fsproj +22 -0
  58. data/tracks/fsharp/exercises/bank-account/BankAccountTest.fs +16 -19
  59. data/tracks/fsharp/exercises/bank-account/Program.fs +1 -0
  60. data/tracks/fsharp/exercises/beer-song/BeerSong.fs +7 -0
  61. data/tracks/fsharp/exercises/beer-song/BeerSong.fsproj +22 -0
  62. data/tracks/fsharp/exercises/beer-song/BeerSongTest.fs +17 -22
  63. data/tracks/fsharp/exercises/beer-song/Program.fs +1 -0
  64. data/tracks/fsharp/exercises/binary-search/BinarySearch.fs +3 -0
  65. data/tracks/fsharp/exercises/binary-search/BinarySearch.fsproj +22 -0
  66. data/tracks/fsharp/exercises/binary-search/BinarySearchTest.fs +21 -28
  67. data/tracks/fsharp/exercises/binary-search/Program.fs +1 -0
  68. data/tracks/fsharp/exercises/binary-search-tree/BinarySearchTree.fs +15 -0
  69. data/tracks/fsharp/exercises/binary-search-tree/BinarySearchTree.fsproj +22 -0
  70. data/tracks/fsharp/exercises/binary-search-tree/BinarySearchTreeTest.fs +31 -38
  71. data/tracks/fsharp/exercises/binary-search-tree/Program.fs +1 -0
  72. data/tracks/fsharp/exercises/bob/Bob.fs +3 -0
  73. data/tracks/fsharp/exercises/bob/Bob.fsproj +22 -0
  74. data/tracks/fsharp/exercises/bob/BobTest.fs +33 -46
  75. data/tracks/fsharp/exercises/bob/Program.fs +1 -0
  76. data/tracks/fsharp/exercises/book-store/BookStore.fs +3 -0
  77. data/tracks/fsharp/exercises/book-store/BookStore.fsproj +22 -0
  78. data/tracks/fsharp/exercises/book-store/BookStoreTest.fs +27 -37
  79. data/tracks/fsharp/exercises/book-store/Program.fs +1 -0
  80. data/tracks/fsharp/exercises/bowling/Bowling.fs +7 -0
  81. data/tracks/fsharp/exercises/bowling/Bowling.fsproj +22 -0
  82. data/tracks/fsharp/exercises/bowling/BowlingTest.fs +75 -97
  83. data/tracks/fsharp/exercises/bowling/Example.fs +1 -1
  84. data/tracks/fsharp/exercises/bowling/Program.fs +1 -0
  85. data/tracks/fsharp/exercises/bracket-push/BracketPush.fs +3 -0
  86. data/tracks/fsharp/exercises/bracket-push/BracketPush.fsproj +22 -0
  87. data/tracks/fsharp/exercises/bracket-push/BracketPushTest.fs +27 -37
  88. data/tracks/fsharp/exercises/bracket-push/Program.fs +1 -0
  89. data/tracks/fsharp/exercises/change/Change.fs +3 -0
  90. data/tracks/fsharp/exercises/change/Change.fsproj +22 -0
  91. data/tracks/fsharp/exercises/change/ChangeTest.fs +19 -25
  92. data/tracks/fsharp/exercises/change/Program.fs +1 -0
  93. data/tracks/fsharp/exercises/circular-buffer/CircularBuffer.fs +11 -0
  94. data/tracks/fsharp/exercises/circular-buffer/CircularBuffer.fsproj +22 -0
  95. data/tracks/fsharp/exercises/circular-buffer/CircularBufferTest.fs +36 -42
  96. data/tracks/fsharp/exercises/circular-buffer/Program.fs +1 -0
  97. data/tracks/fsharp/exercises/clock/Clock.fs +9 -0
  98. data/tracks/fsharp/exercises/clock/Clock.fsproj +22 -0
  99. data/tracks/fsharp/exercises/clock/ClockTest.fs +34 -48
  100. data/tracks/fsharp/exercises/clock/Program.fs +1 -0
  101. data/tracks/fsharp/exercises/connect/Connect.fs +3 -0
  102. data/tracks/fsharp/exercises/connect/Connect.fsproj +22 -0
  103. data/tracks/fsharp/exercises/connect/ConnectTest.fs +19 -25
  104. data/tracks/fsharp/exercises/connect/Program.fs +1 -0
  105. data/tracks/fsharp/exercises/crypto-square/CryptoSquare.fs +44 -0
  106. data/tracks/fsharp/exercises/crypto-square/CryptoSquare.fsproj +22 -0
  107. data/tracks/fsharp/exercises/crypto-square/CryptoSquareTest.fs +28 -39
  108. data/tracks/fsharp/exercises/crypto-square/Program.fs +1 -0
  109. data/tracks/fsharp/exercises/custom-set/CustomSet.fs +29 -0
  110. data/tracks/fsharp/exercises/custom-set/CustomSet.fsproj +22 -0
  111. data/tracks/fsharp/exercises/custom-set/CustomSetTest.fs +77 -119
  112. data/tracks/fsharp/exercises/custom-set/Program.fs +1 -0
  113. data/tracks/fsharp/exercises/diamond/Diamond.fs +3 -0
  114. data/tracks/fsharp/exercises/diamond/Diamond.fsproj +22 -0
  115. data/tracks/fsharp/exercises/diamond/DiamondTest.fs +31 -27
  116. data/tracks/fsharp/exercises/diamond/Program.fs +1 -0
  117. data/tracks/fsharp/exercises/difference-of-squares/DifferenceOfSquares.fs +7 -0
  118. data/tracks/fsharp/exercises/difference-of-squares/DifferenceOfSquares.fsproj +22 -0
  119. data/tracks/fsharp/exercises/difference-of-squares/DifferenceOfSquaresTest.fs +21 -28
  120. data/tracks/fsharp/exercises/difference-of-squares/Program.fs +1 -0
  121. data/tracks/fsharp/exercises/diffie-hellman/DiffieHellman.fs +7 -0
  122. data/tracks/fsharp/exercises/diffie-hellman/DiffieHellman.fsproj +22 -0
  123. data/tracks/fsharp/exercises/diffie-hellman/DiffieHellmanTest.fs +16 -19
  124. data/tracks/fsharp/exercises/diffie-hellman/Program.fs +1 -0
  125. data/tracks/fsharp/exercises/dominoes/Dominoes.fs +3 -0
  126. data/tracks/fsharp/exercises/dominoes/Dominoes.fsproj +22 -0
  127. data/tracks/fsharp/exercises/dominoes/DominoesTest.fs +27 -37
  128. data/tracks/fsharp/exercises/dominoes/Program.fs +1 -0
  129. data/tracks/fsharp/exercises/dot-dsl/DotDsl.fs +15 -0
  130. data/tracks/fsharp/exercises/dot-dsl/DotDsl.fsproj +22 -0
  131. data/tracks/fsharp/exercises/dot-dsl/DotDslTest.fs +27 -31
  132. data/tracks/fsharp/exercises/dot-dsl/Program.fs +1 -0
  133. data/tracks/fsharp/exercises/error-handling/ErrorHandling.fs +11 -0
  134. data/tracks/fsharp/exercises/error-handling/ErrorHandling.fsproj +22 -0
  135. data/tracks/fsharp/exercises/error-handling/ErrorHandlingTest.fs +20 -25
  136. data/tracks/fsharp/exercises/error-handling/Program.fs +1 -0
  137. data/tracks/fsharp/exercises/etl/Etl.fs +3 -0
  138. data/tracks/fsharp/exercises/etl/Etl.fsproj +22 -0
  139. data/tracks/fsharp/exercises/etl/{ETLTest.fs → EtlTest.fs} +11 -13
  140. data/tracks/fsharp/exercises/etl/Program.fs +1 -0
  141. data/tracks/fsharp/exercises/food-chain/FoodChain.fs +5 -0
  142. data/tracks/fsharp/exercises/food-chain/FoodChain.fsproj +22 -0
  143. data/tracks/fsharp/exercises/food-chain/FoodChainTest.fs +13 -16
  144. data/tracks/fsharp/exercises/food-chain/Program.fs +1 -0
  145. data/tracks/fsharp/exercises/forth/Forth.fs +3 -0
  146. data/tracks/fsharp/exercises/forth/Forth.fsproj +22 -0
  147. data/tracks/fsharp/exercises/forth/ForthTest.fs +44 -57
  148. data/tracks/fsharp/exercises/forth/Program.fs +1 -0
  149. data/tracks/fsharp/exercises/gigasecond/Gigasecond.fs +3 -0
  150. data/tracks/fsharp/exercises/gigasecond/Gigasecond.fsproj +22 -0
  151. data/tracks/fsharp/exercises/gigasecond/GigasecondTest.fs +9 -10
  152. data/tracks/fsharp/exercises/gigasecond/Program.fs +1 -0
  153. data/tracks/fsharp/exercises/go-counting/GoCounting.fs +3 -0
  154. data/tracks/fsharp/exercises/go-counting/GoCounting.fsproj +22 -0
  155. data/tracks/fsharp/exercises/go-counting/GoCountingTest.fs +23 -30
  156. data/tracks/fsharp/exercises/go-counting/Program.fs +1 -0
  157. data/tracks/fsharp/exercises/grade-school/Example.fs +1 -1
  158. data/tracks/fsharp/exercises/grade-school/GradeSchool.fs +9 -0
  159. data/tracks/fsharp/exercises/grade-school/GradeSchool.fsproj +22 -0
  160. data/tracks/fsharp/exercises/grade-school/GradeSchoolTest.fs +17 -22
  161. data/tracks/fsharp/exercises/grade-school/Program.fs +1 -0
  162. data/tracks/fsharp/exercises/grains/Grains.fs +6 -0
  163. data/tracks/fsharp/exercises/grains/Grains.fsproj +22 -0
  164. data/tracks/fsharp/exercises/grains/GrainsTest.fs +19 -25
  165. data/tracks/fsharp/exercises/grains/Program.fs +1 -0
  166. data/tracks/fsharp/exercises/grep/Grep.fs +3 -0
  167. data/tracks/fsharp/exercises/grep/Grep.fsproj +22 -0
  168. data/tracks/fsharp/exercises/grep/GrepTest.fs +332 -348
  169. data/tracks/fsharp/exercises/grep/Program.fs +1 -0
  170. data/tracks/fsharp/exercises/hamming/Hamming.fs +3 -0
  171. data/tracks/fsharp/exercises/hamming/Hamming.fsproj +22 -0
  172. data/tracks/fsharp/exercises/hamming/HammingTest.fs +15 -19
  173. data/tracks/fsharp/exercises/hamming/Program.fs +1 -0
  174. data/tracks/fsharp/exercises/hangman/Hangman.fs +3 -0
  175. data/tracks/fsharp/exercises/hangman/Hangman.fsproj +22 -0
  176. data/tracks/fsharp/exercises/hangman/HangmanTest.fs +30 -34
  177. data/tracks/fsharp/exercises/hangman/Program.fs +1 -0
  178. data/tracks/fsharp/exercises/hello-world/HelloWorld.fs +3 -0
  179. data/tracks/fsharp/exercises/hello-world/HelloWorld.fsproj +22 -0
  180. data/tracks/fsharp/exercises/hello-world/HelloWorldTest.fs +5 -4
  181. data/tracks/fsharp/exercises/hello-world/Program.fs +1 -0
  182. data/tracks/fsharp/exercises/house/House.fs +3 -0
  183. data/tracks/fsharp/exercises/house/House.fsproj +22 -0
  184. data/tracks/fsharp/exercises/house/HouseTest.fs +5 -4
  185. data/tracks/fsharp/exercises/house/Program.fs +1 -0
  186. data/tracks/fsharp/exercises/isogram/Isogram.fs +3 -0
  187. data/tracks/fsharp/exercises/isogram/Isogram.fsproj +22 -0
  188. data/tracks/fsharp/exercises/isogram/IsogramTest.fs +21 -28
  189. data/tracks/fsharp/exercises/isogram/Program.fs +1 -0
  190. data/tracks/fsharp/exercises/kindergarten-garden/KindergartenGarden.fs +9 -0
  191. data/tracks/fsharp/exercises/kindergarten-garden/KindergartenGarden.fsproj +22 -0
  192. data/tracks/fsharp/exercises/kindergarten-garden/KindergartenGardenTest.fs +51 -0
  193. data/tracks/fsharp/exercises/kindergarten-garden/Program.fs +1 -0
  194. data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProduct.fs +3 -0
  195. data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProduct.fsproj +22 -0
  196. data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProductTest.fs +27 -22
  197. data/tracks/fsharp/exercises/largest-series-product/Program.fs +1 -0
  198. data/tracks/fsharp/exercises/leap/Leap.fs +3 -0
  199. data/tracks/fsharp/exercises/leap/Leap.fsproj +22 -0
  200. data/tracks/fsharp/exercises/leap/LeapTest.fs +11 -13
  201. data/tracks/fsharp/exercises/leap/Program.fs +1 -0
  202. data/tracks/fsharp/exercises/ledger/Ledger.fsproj +22 -0
  203. data/tracks/fsharp/exercises/ledger/LedgerTest.fs +23 -22
  204. data/tracks/fsharp/exercises/ledger/Program.fs +1 -0
  205. data/tracks/fsharp/exercises/lens-person/LensPerson.fs +1 -22
  206. data/tracks/fsharp/exercises/lens-person/LensPerson.fsproj +23 -0
  207. data/tracks/fsharp/exercises/lens-person/LensPersonTest.fs +11 -13
  208. data/tracks/fsharp/exercises/lens-person/Program.fs +1 -0
  209. data/tracks/fsharp/exercises/linked-list/LinkedList.fs +13 -0
  210. data/tracks/fsharp/exercises/linked-list/LinkedList.fsproj +22 -0
  211. data/tracks/fsharp/exercises/linked-list/LinkedListTest.fs +28 -33
  212. data/tracks/fsharp/exercises/linked-list/Program.fs +1 -0
  213. data/tracks/fsharp/exercises/list-ops/ListOps.fs +17 -0
  214. data/tracks/fsharp/exercises/list-ops/ListOps.fsproj +22 -0
  215. data/tracks/fsharp/exercises/list-ops/ListOpsTest.fs +51 -73
  216. data/tracks/fsharp/exercises/list-ops/Program.fs +1 -0
  217. data/tracks/fsharp/exercises/luhn/Luhn.fs +3 -0
  218. data/tracks/fsharp/exercises/luhn/Luhn.fsproj +22 -0
  219. data/tracks/fsharp/exercises/luhn/LuhnTest.fs +28 -39
  220. data/tracks/fsharp/exercises/luhn/Program.fs +1 -0
  221. data/tracks/fsharp/exercises/markdown/Markdown.fsproj +22 -0
  222. data/tracks/fsharp/exercises/markdown/MarkdownTest.fs +21 -20
  223. data/tracks/fsharp/exercises/markdown/Program.fs +1 -0
  224. data/tracks/fsharp/exercises/matrix/Matrix.fs +7 -0
  225. data/tracks/fsharp/exercises/matrix/Matrix.fsproj +22 -0
  226. data/tracks/fsharp/exercises/matrix/MatrixTest.fs +76 -48
  227. data/tracks/fsharp/exercises/matrix/Program.fs +1 -0
  228. data/tracks/fsharp/exercises/meetup/Meetup.fs +7 -0
  229. data/tracks/fsharp/exercises/meetup/Meetup.fsproj +22 -0
  230. data/tracks/fsharp/exercises/meetup/MeetupTest.fs +67 -60
  231. data/tracks/fsharp/exercises/meetup/Program.fs +1 -0
  232. data/tracks/fsharp/exercises/minesweeper/Minesweeper.fs +3 -0
  233. data/tracks/fsharp/exercises/minesweeper/Minesweeper.fsproj +22 -0
  234. data/tracks/fsharp/exercises/minesweeper/MinesweeperTest.fs +17 -22
  235. data/tracks/fsharp/exercises/minesweeper/Program.fs +1 -0
  236. data/tracks/fsharp/exercises/nth-prime/NthPrime.fs +3 -0
  237. data/tracks/fsharp/exercises/nth-prime/NthPrime.fsproj +22 -0
  238. data/tracks/fsharp/exercises/nth-prime/NthPrimeTest.fs +25 -34
  239. data/tracks/fsharp/exercises/nth-prime/Program.fs +1 -0
  240. data/tracks/fsharp/exercises/nucleotide-count/NucleotideCount.fs +5 -0
  241. data/tracks/fsharp/exercises/nucleotide-count/NucleotideCount.fsproj +22 -0
  242. data/tracks/fsharp/exercises/nucleotide-count/NucleotideCountTest.fs +17 -21
  243. data/tracks/fsharp/exercises/nucleotide-count/Program.fs +1 -0
  244. data/tracks/fsharp/exercises/ocr-numbers/OcrNumbers.fs +3 -0
  245. data/tracks/fsharp/exercises/ocr-numbers/OcrNumbers.fsproj +22 -0
  246. data/tracks/fsharp/exercises/ocr-numbers/OcrNumbersTest.fs +33 -46
  247. data/tracks/fsharp/exercises/ocr-numbers/Program.fs +1 -0
  248. data/tracks/fsharp/exercises/palindrome-products/PalindromeProducts.fs +5 -0
  249. data/tracks/fsharp/exercises/palindrome-products/PalindromeProducts.fsproj +22 -0
  250. data/tracks/fsharp/exercises/palindrome-products/PalindromeProductsTest.fs +54 -0
  251. data/tracks/fsharp/exercises/palindrome-products/Program.fs +1 -0
  252. data/tracks/fsharp/exercises/pangram/Pangram.fs +3 -0
  253. data/tracks/fsharp/exercises/pangram/Pangram.fsproj +22 -0
  254. data/tracks/fsharp/exercises/pangram/PangramTest.fs +23 -31
  255. data/tracks/fsharp/exercises/pangram/Program.fs +1 -0
  256. data/tracks/fsharp/exercises/parallel-letter-frequency/ParallelLetterFrequency.fs +3 -0
  257. data/tracks/fsharp/exercises/parallel-letter-frequency/ParallelLetterFrequency.fsproj +22 -0
  258. data/tracks/fsharp/exercises/parallel-letter-frequency/ParallelLetterFrequencyTest.fs +27 -35
  259. data/tracks/fsharp/exercises/parallel-letter-frequency/Program.fs +1 -0
  260. data/tracks/fsharp/exercises/pascals-triangle/PascalsTriangle.fs +3 -0
  261. data/tracks/fsharp/exercises/pascals-triangle/PascalsTriangle.fsproj +22 -0
  262. data/tracks/fsharp/exercises/pascals-triangle/PascalsTriangleTest.fs +15 -19
  263. data/tracks/fsharp/exercises/pascals-triangle/Program.fs +1 -0
  264. data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbers.fs +5 -0
  265. data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbers.fsproj +22 -0
  266. data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbersTest.fs +18 -14
  267. data/tracks/fsharp/exercises/perfect-numbers/Program.fs +1 -0
  268. data/tracks/fsharp/exercises/phone-number/PhoneNumber.fs +3 -0
  269. data/tracks/fsharp/exercises/phone-number/PhoneNumber.fsproj +22 -0
  270. data/tracks/fsharp/exercises/phone-number/PhoneNumberTest.fs +23 -31
  271. data/tracks/fsharp/exercises/phone-number/Program.fs +1 -0
  272. data/tracks/fsharp/exercises/pig-latin/PigLatin.fs +3 -0
  273. data/tracks/fsharp/exercises/pig-latin/PigLatin.fsproj +22 -0
  274. data/tracks/fsharp/exercises/pig-latin/PigLatinTest.fs +39 -44
  275. data/tracks/fsharp/exercises/pig-latin/Program.fs +1 -0
  276. data/tracks/fsharp/exercises/poker/Poker.fs +3 -0
  277. data/tracks/fsharp/exercises/poker/Poker.fsproj +22 -0
  278. data/tracks/fsharp/exercises/poker/PokerTest.fs +40 -56
  279. data/tracks/fsharp/exercises/poker/Program.fs +1 -0
  280. data/tracks/fsharp/exercises/pov/Pov.fs +3 -0
  281. data/tracks/fsharp/exercises/pov/Pov.fsproj +22 -0
  282. data/tracks/fsharp/exercises/pov/PovTest.fs +23 -31
  283. data/tracks/fsharp/exercises/pov/Program.fs +1 -0
  284. data/tracks/fsharp/exercises/prime-factors/Example.fs +1 -1
  285. data/tracks/fsharp/exercises/prime-factors/PrimeFactors.fs +3 -0
  286. data/tracks/fsharp/exercises/prime-factors/PrimeFactors.fsproj +22 -0
  287. data/tracks/fsharp/exercises/prime-factors/PrimeFactorsTest.fs +22 -30
  288. data/tracks/fsharp/exercises/prime-factors/Program.fs +1 -0
  289. data/tracks/fsharp/exercises/protein-translation/Program.fs +1 -0
  290. data/tracks/fsharp/exercises/protein-translation/ProteinTranslation.fs +3 -0
  291. data/tracks/fsharp/exercises/protein-translation/ProteinTranslation.fsproj +22 -0
  292. data/tracks/fsharp/exercises/protein-translation/ProteinTranslationTest.fs +41 -36
  293. data/tracks/fsharp/exercises/proverb/Program.fs +1 -0
  294. data/tracks/fsharp/exercises/proverb/Proverb.fs +5 -0
  295. data/tracks/fsharp/exercises/proverb/Proverb.fsproj +22 -0
  296. data/tracks/fsharp/exercises/proverb/ProverbTest.fs +11 -13
  297. data/tracks/fsharp/exercises/pythagorean-triplet/Program.fs +1 -0
  298. data/tracks/fsharp/exercises/pythagorean-triplet/PythagoreanTriplet.fs +7 -0
  299. data/tracks/fsharp/exercises/pythagorean-triplet/PythagoreanTriplet.fsproj +22 -0
  300. data/tracks/fsharp/exercises/pythagorean-triplet/PythagoreanTripletTest.fs +19 -20
  301. data/tracks/fsharp/exercises/queen-attack/Program.fs +1 -0
  302. data/tracks/fsharp/exercises/queen-attack/QueenAttack.fs +3 -0
  303. data/tracks/fsharp/exercises/queen-attack/QueenAttack.fsproj +22 -0
  304. data/tracks/fsharp/exercises/queen-attack/QueenAttackTest.fs +19 -25
  305. data/tracks/fsharp/exercises/rail-fence-cipher/Program.fs +1 -0
  306. data/tracks/fsharp/exercises/rail-fence-cipher/RailFenceCipher.fs +5 -0
  307. data/tracks/fsharp/exercises/rail-fence-cipher/RailFenceCipher.fsproj +22 -0
  308. data/tracks/fsharp/exercises/rail-fence-cipher/RailFenceCipherTest.fs +15 -19
  309. data/tracks/fsharp/exercises/raindrops/Program.fs +1 -0
  310. data/tracks/fsharp/exercises/raindrops/Raindrops.fs +3 -0
  311. data/tracks/fsharp/exercises/raindrops/Raindrops.fsproj +22 -0
  312. data/tracks/fsharp/exercises/raindrops/RaindropsTest.fs +30 -24
  313. data/tracks/fsharp/exercises/react/Program.fs +1 -0
  314. data/tracks/fsharp/exercises/react/React.fs +3 -0
  315. data/tracks/fsharp/exercises/react/React.fsproj +22 -0
  316. data/tracks/fsharp/exercises/react/ReactTest.fs +26 -31
  317. data/tracks/fsharp/exercises/rectangles/Program.fs +1 -0
  318. data/tracks/fsharp/exercises/rectangles/Rectangles.fs +3 -0
  319. data/tracks/fsharp/exercises/rectangles/Rectangles.fsproj +22 -0
  320. data/tracks/fsharp/exercises/rectangles/RectanglesTest.fs +23 -31
  321. data/tracks/fsharp/exercises/rna-transcription/Program.fs +1 -0
  322. data/tracks/fsharp/exercises/rna-transcription/RnaTranscription.fs +3 -0
  323. data/tracks/fsharp/exercises/rna-transcription/RnaTranscription.fsproj +22 -0
  324. data/tracks/fsharp/exercises/rna-transcription/RnaTranscriptionTest.fs +26 -0
  325. data/tracks/fsharp/exercises/robot-name/Program.fs +1 -0
  326. data/tracks/fsharp/exercises/robot-name/RobotName.fs +7 -0
  327. data/tracks/fsharp/exercises/robot-name/RobotName.fsproj +22 -0
  328. data/tracks/fsharp/exercises/robot-name/RobotNameTest.fs +12 -13
  329. data/tracks/fsharp/exercises/robot-simulator/Program.fs +1 -0
  330. data/tracks/fsharp/exercises/robot-simulator/RobotSimulator.fs +13 -0
  331. data/tracks/fsharp/exercises/robot-simulator/RobotSimulator.fsproj +22 -0
  332. data/tracks/fsharp/exercises/robot-simulator/RobotSimulatorTest.fs +16 -20
  333. data/tracks/fsharp/exercises/roman-numerals/Program.fs +1 -0
  334. data/tracks/fsharp/exercises/roman-numerals/RomanNumerals.fs +3 -0
  335. data/tracks/fsharp/exercises/roman-numerals/RomanNumerals.fsproj +22 -0
  336. data/tracks/fsharp/exercises/roman-numerals/RomanNumeralsTest.fs +28 -0
  337. data/tracks/fsharp/exercises/run-length-encoding/Program.fs +1 -0
  338. data/tracks/fsharp/exercises/run-length-encoding/RunLengthEncoding.fs +5 -0
  339. data/tracks/fsharp/exercises/run-length-encoding/RunLengthEncoding.fsproj +22 -0
  340. data/tracks/fsharp/exercises/run-length-encoding/RunLengthEncodingTest.fs +17 -22
  341. data/tracks/fsharp/exercises/saddle-points/Program.fs +1 -0
  342. data/tracks/fsharp/exercises/saddle-points/SaddlePoints.fs +3 -0
  343. data/tracks/fsharp/exercises/saddle-points/SaddlePoints.fsproj +22 -0
  344. data/tracks/fsharp/exercises/saddle-points/{SaddlePointTest.fs → SaddlePointsTest.fs} +13 -16
  345. data/tracks/fsharp/exercises/say/Program.fs +1 -0
  346. data/tracks/fsharp/exercises/say/Say.fs +3 -0
  347. data/tracks/fsharp/exercises/say/Say.fsproj +22 -0
  348. data/tracks/fsharp/exercises/say/SayTest.fs +35 -49
  349. data/tracks/fsharp/exercises/scale-generator/Program.fs +1 -0
  350. data/tracks/fsharp/exercises/scale-generator/ScaleGenerator.fs +3 -0
  351. data/tracks/fsharp/exercises/scale-generator/ScaleGenerator.fsproj +22 -0
  352. data/tracks/fsharp/exercises/scale-generator/ScaleGeneratorTest.fs +31 -43
  353. data/tracks/fsharp/exercises/scrabble-score/Program.fs +1 -0
  354. data/tracks/fsharp/exercises/scrabble-score/ScrabbleScore.fs +3 -0
  355. data/tracks/fsharp/exercises/scrabble-score/ScrabbleScore.fsproj +22 -0
  356. data/tracks/fsharp/exercises/scrabble-score/ScrabbleScoreTest.fs +18 -24
  357. data/tracks/fsharp/exercises/secret-handshake/Program.fs +1 -0
  358. data/tracks/fsharp/exercises/secret-handshake/SecretHandshake.fs +3 -0
  359. data/tracks/fsharp/exercises/secret-handshake/SecretHandshake.fsproj +22 -0
  360. data/tracks/fsharp/exercises/secret-handshake/SecretHandshakeTest.fs +17 -22
  361. data/tracks/fsharp/exercises/series/Program.fs +1 -0
  362. data/tracks/fsharp/exercises/series/Series.fs +3 -0
  363. data/tracks/fsharp/exercises/series/Series.fsproj +22 -0
  364. data/tracks/fsharp/exercises/series/SeriesTest.fs +53 -55
  365. data/tracks/fsharp/exercises/sgf-parsing/Program.fs +1 -0
  366. data/tracks/fsharp/exercises/sgf-parsing/SgfParsing.fs +3 -0
  367. data/tracks/fsharp/exercises/sgf-parsing/SgfParsing.fsproj +22 -0
  368. data/tracks/fsharp/exercises/sgf-parsing/SgfParsingTest.fs +27 -37
  369. data/tracks/fsharp/exercises/sieve/Program.fs +1 -0
  370. data/tracks/fsharp/exercises/sieve/Sieve.fs +3 -0
  371. data/tracks/fsharp/exercises/sieve/Sieve.fsproj +22 -0
  372. data/tracks/fsharp/exercises/sieve/SieveTest.fs +19 -21
  373. data/tracks/fsharp/exercises/simple-cipher/Program.fs +1 -0
  374. data/tracks/fsharp/exercises/simple-cipher/SimpleCipher.fs +7 -0
  375. data/tracks/fsharp/exercises/simple-cipher/SimpleCipher.fsproj +22 -0
  376. data/tracks/fsharp/exercises/simple-cipher/SimpleCipherTest.fs +39 -54
  377. data/tracks/fsharp/exercises/simple-linked-list/Program.fs +1 -0
  378. data/tracks/fsharp/exercises/simple-linked-list/SimpleLinkedList.fs +36 -0
  379. data/tracks/fsharp/exercises/simple-linked-list/SimpleLinkedList.fsproj +22 -0
  380. data/tracks/fsharp/exercises/simple-linked-list/SimpleLinkedListTest.fs +36 -40
  381. data/tracks/fsharp/exercises/space-age/Program.fs +1 -0
  382. data/tracks/fsharp/exercises/space-age/SpaceAge.fs +5 -0
  383. data/tracks/fsharp/exercises/space-age/SpaceAge.fsproj +22 -0
  384. data/tracks/fsharp/exercises/space-age/SpaceAgeTest.fs +26 -32
  385. data/tracks/fsharp/exercises/strain/Program.fs +1 -0
  386. data/tracks/fsharp/exercises/strain/Strain.fs +5 -0
  387. data/tracks/fsharp/exercises/strain/Strain.fsproj +22 -0
  388. data/tracks/fsharp/exercises/strain/StrainTest.fs +28 -47
  389. data/tracks/fsharp/exercises/sublist/Program.fs +1 -0
  390. data/tracks/fsharp/exercises/sublist/Sublist.fs +5 -0
  391. data/tracks/fsharp/exercises/sublist/Sublist.fsproj +22 -0
  392. data/tracks/fsharp/exercises/sublist/SublistTest.fs +39 -55
  393. data/tracks/fsharp/exercises/sum-of-multiples/Program.fs +1 -0
  394. data/tracks/fsharp/exercises/sum-of-multiples/SumOfMultiples.fs +3 -0
  395. data/tracks/fsharp/exercises/sum-of-multiples/SumOfMultiples.fsproj +22 -0
  396. data/tracks/fsharp/exercises/sum-of-multiples/SumOfMultiplesTest.fs +15 -19
  397. data/tracks/fsharp/exercises/tournament/Program.fs +1 -0
  398. data/tracks/fsharp/exercises/tournament/Tournament.fs +3 -0
  399. data/tracks/fsharp/exercises/tournament/Tournament.fsproj +22 -0
  400. data/tracks/fsharp/exercises/tournament/TournamentTest.fs +9 -10
  401. data/tracks/fsharp/exercises/transpose/Program.fs +1 -0
  402. data/tracks/fsharp/exercises/transpose/Transpose.fs +3 -0
  403. data/tracks/fsharp/exercises/transpose/Transpose.fsproj +22 -0
  404. data/tracks/fsharp/exercises/transpose/TransposeTest.fs +25 -34
  405. data/tracks/fsharp/exercises/tree-building/Program.fs +1 -0
  406. data/tracks/fsharp/exercises/tree-building/TreeBuilding.fsproj +22 -0
  407. data/tracks/fsharp/exercises/tree-building/TreeBuildingTest.fs +84 -82
  408. data/tracks/fsharp/exercises/triangle/Program.fs +1 -0
  409. data/tracks/fsharp/exercises/triangle/Triangle.fs +8 -0
  410. data/tracks/fsharp/exercises/triangle/Triangle.fsproj +22 -0
  411. data/tracks/fsharp/exercises/triangle/TriangleTest.fs +31 -43
  412. data/tracks/fsharp/exercises/twelve-days/Program.fs +1 -0
  413. data/tracks/fsharp/exercises/twelve-days/TwelveDays.fs +7 -0
  414. data/tracks/fsharp/exercises/twelve-days/TwelveDays.fsproj +22 -0
  415. data/tracks/fsharp/exercises/twelve-days/TwelveDaysTest.fs +31 -43
  416. data/tracks/fsharp/exercises/two-bucket/Program.fs +1 -0
  417. data/tracks/fsharp/exercises/two-bucket/TwoBucket.fs +3 -0
  418. data/tracks/fsharp/exercises/two-bucket/TwoBucket.fsproj +22 -0
  419. data/tracks/fsharp/exercises/two-bucket/TwoBucketTest.fs +11 -13
  420. data/tracks/fsharp/exercises/two-fer/Program.fs +1 -0
  421. data/tracks/fsharp/exercises/two-fer/TwoFer.fs +3 -0
  422. data/tracks/fsharp/exercises/two-fer/TwoFer.fsproj +22 -0
  423. data/tracks/fsharp/exercises/two-fer/TwoFerTest.fs +9 -10
  424. data/tracks/fsharp/exercises/variable-length-quantity/Program.fs +1 -0
  425. data/tracks/fsharp/exercises/variable-length-quantity/VariableLengthQuantity.fs +3 -0
  426. data/tracks/fsharp/exercises/variable-length-quantity/VariableLengthQuantity.fsproj +22 -0
  427. data/tracks/fsharp/exercises/variable-length-quantity/VariableLengthQuantityTest.fs +42 -50
  428. data/tracks/fsharp/exercises/word-count/Program.fs +1 -0
  429. data/tracks/fsharp/exercises/word-count/WordCount.fs +3 -0
  430. data/tracks/fsharp/exercises/word-count/WordCount.fsproj +22 -0
  431. data/tracks/fsharp/exercises/word-count/WordCountTest.fs +27 -37
  432. data/tracks/fsharp/exercises/word-search/Program.fs +1 -0
  433. data/tracks/fsharp/exercises/word-search/WordSearch.fs +3 -0
  434. data/tracks/fsharp/exercises/word-search/WordSearch.fsproj +22 -0
  435. data/tracks/fsharp/exercises/word-search/WordSearchTest.fs +23 -31
  436. data/tracks/fsharp/exercises/wordy/Program.fs +1 -0
  437. data/tracks/fsharp/exercises/wordy/Wordy.fs +3 -0
  438. data/tracks/fsharp/exercises/wordy/Wordy.fsproj +22 -0
  439. data/tracks/fsharp/exercises/wordy/WordyTest.fs +34 -48
  440. data/tracks/fsharp/exercises/zebra-puzzle/Example.fs +1 -1
  441. data/tracks/fsharp/exercises/zebra-puzzle/Program.fs +1 -0
  442. data/tracks/fsharp/exercises/zebra-puzzle/ZebraPuzzle.fs +3 -0
  443. data/tracks/fsharp/exercises/zebra-puzzle/ZebraPuzzle.fsproj +22 -0
  444. data/tracks/fsharp/exercises/zebra-puzzle/ZebraPuzzleTest.fs +9 -9
  445. data/tracks/fsharp/exercises/zipper/Program.fs +1 -0
  446. data/tracks/fsharp/exercises/zipper/Zipper.fs +3 -0
  447. data/tracks/fsharp/exercises/zipper/Zipper.fsproj +22 -0
  448. data/tracks/fsharp/exercises/zipper/ZipperTest.fs +19 -25
  449. data/tracks/javascript/exercises/simple-linked-list/example.js +4 -3
  450. data/tracks/javascript/exercises/simple-linked-list/simple-linked-list.spec.js +3 -0
  451. data/tracks/nim/docs/SNIPPET.txt +2 -0
  452. data/tracks/perl5/docs/SNIPPET.txt +9 -0
  453. data/tracks/php/docs/SNIPPET.txt +6 -0
  454. data/tracks/pony/docs/SNIPPET.txt +2 -0
  455. data/tracks/powershell/docs/SNIPPET.txt +4 -0
  456. data/tracks/prolog/docs/SNIPPET.txt +6 -0
  457. data/tracks/python/exercises/simple-cipher/README.md +1 -1
  458. data/tracks/vimscript/docs/SNIPPET.txt +4 -0
  459. metadata +334 -17
  460. data/tracks/fsharp/.paket/paket.bootstrapper.exe +0 -0
  461. data/tracks/fsharp/build.cmd +0 -14
  462. data/tracks/fsharp/build.fsx +0 -65
  463. data/tracks/fsharp/exercises/app.config +0 -11
  464. data/tracks/fsharp/exercises/exercises.fsproj +0 -225
  465. data/tracks/fsharp/exercises/kindergarten-garden/KinderGartenGardenTest.fs +0 -55
  466. data/tracks/fsharp/exercises/paket.references +0 -4
  467. data/tracks/fsharp/exercises/palindrome-products/PalindromeTest.fs +0 -60
  468. data/tracks/fsharp/exercises/rna-transcription/RNATranscriptionTest.fs +0 -29
  469. data/tracks/fsharp/exercises/roman-numerals/RomanNumeralTest.fs +0 -26
  470. data/tracks/fsharp/paket.dependencies +0 -8
  471. data/tracks/fsharp/paket.lock +0 -11
@@ -0,0 +1,28 @@
1
+ module RomanNumeralTest
2
+
3
+ open Xunit
4
+ open FsUnit.Xunit
5
+ open RomanNumeral
6
+
7
+ [<Theory(Skip = "Remove to run test")>]
8
+ [<InlineData(0, "")>]
9
+ [<InlineData(1, "I")>]
10
+ [<InlineData(2, "II")>]
11
+ [<InlineData(3, "III")>]
12
+ [<InlineData(4, "IV")>]
13
+ [<InlineData(5, "V")>]
14
+ [<InlineData(6, "VI")>]
15
+ [<InlineData(9, "IX")>]
16
+ [<InlineData(27, "XXVII")>]
17
+ [<InlineData(48, "XLVIII")>]
18
+ [<InlineData(59, "LIX")>]
19
+ [<InlineData(93, "XCIII")>]
20
+ [<InlineData(141, "CXLI")>]
21
+ [<InlineData(163, "CLXIII")>]
22
+ [<InlineData(402, "CDII")>]
23
+ [<InlineData(575, "DLXXV")>]
24
+ [<InlineData(911, "CMXI")>]
25
+ [<InlineData(1024, "MXXIV")>]
26
+ [<InlineData(3000, "MMM")>]
27
+ let ``Convert roman to arabic numerals`` arabicNumeral expected =
28
+ toRoman arabicNumeral |> should equal expected
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,5 @@
1
+ module RunLengthEncoding
2
+
3
+ let encode input = failwith "You need to implement this function."
4
+
5
+ let decode input = failwith "You need to implement this function."
@@ -0,0 +1,22 @@
1
+ <Project Sdk="Microsoft.NET.Sdk">
2
+
3
+ <PropertyGroup>
4
+ <TargetFramework>netcoreapp2.0</TargetFramework>
5
+
6
+ <IsPackable>false</IsPackable>
7
+ </PropertyGroup>
8
+
9
+ <ItemGroup>
10
+ <Compile Include="RunLengthEncoding.fs" />
11
+ <Compile Include="RunLengthEncodingTest.fs" />
12
+ <Compile Include="Program.fs" />
13
+ </ItemGroup>
14
+
15
+ <ItemGroup>
16
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
17
+ <PackageReference Include="xunit" Version="2.3.0-beta5-build3769" />
18
+ <PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta5-build3769" />
19
+ <PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
20
+ </ItemGroup>
21
+
22
+ </Project>
@@ -1,54 +1,49 @@
1
- module RunLengthEncodingTest
1
+ module RunLengthEncodingTest
2
2
 
3
- open NUnit.Framework
3
+ open Xunit
4
+ open FsUnit.Xunit
4
5
  open System.Text
5
6
 
6
7
  open RunLengthEncoding
7
8
 
8
- [<Test>]
9
+ [<Fact>]
9
10
  let ``Encode simple`` () =
10
11
  let input = "AABBBCCCC"
11
12
  let expected = "2A3B4C"
12
- Assert.That(encode input, Is.EqualTo(expected))
13
+ encode input |> should equal expected
13
14
 
14
- [<Test>]
15
- [<Ignore("Remove to run test")>]
15
+ [<Fact(Skip = "Remove to run test")>]
16
16
  let ``Decode simple`` () =
17
17
  let input = "2A3B4C"
18
18
  let expected = "AABBBCCCC"
19
- Assert.That(decode input, Is.EqualTo(expected))
19
+ decode input |> should equal expected
20
20
 
21
- [<Test>]
22
- [<Ignore("Remove to run test")>]
21
+ [<Fact(Skip = "Remove to run test")>]
23
22
  let ``Encode with single values`` () =
24
23
  let input = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWB"
25
24
  let expected = "12WB12W3B24WB"
26
- Assert.That(encode input, Is.EqualTo(expected))
25
+ encode input |> should equal expected
27
26
 
28
- [<Test>]
29
- [<Ignore("Remove to run test")>]
27
+ [<Fact(Skip = "Remove to run test")>]
30
28
  let ``Decode with single values`` () =
31
29
  let input = "12WB12W3B24WB"
32
30
  let expected = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWB"
33
- Assert.That(decode input, Is.EqualTo(expected))
31
+ decode input |> should equal expected
34
32
 
35
- [<Test>]
36
- [<Ignore("Remove to run test")>]
33
+ [<Fact(Skip = "Remove to run test")>]
37
34
  let ``Encode and then decode`` () =
38
35
  let input = "zzz ZZ zZ"
39
36
  let expected = "zzz ZZ zZ"
40
- Assert.That(encode input |> decode, Is.EqualTo(expected))
37
+ encode input |> decode |> should equal expected
41
38
 
42
- [<Test>]
43
- [<Ignore("Remove to run test")>]
39
+ [<Fact(Skip = "Remove to run test")>]
44
40
  let ``Encode unicode`` () =
45
41
  let input = Encoding.Unicode.GetString([|240uy; 35uy; 189uy; 38uy; 189uy; 38uy; 189uy; 38uy; 80uy; 43uy; 80uy; 43uy; 240uy; 35uy|])
46
42
  let expected = Encoding.Unicode.GetString([|240uy; 35uy; 51uy; 0uy; 189uy; 38uy; 50uy; 0uy; 80uy; 43uy; 240uy; 35uy|])
47
- Assert.That(encode input, Is.EqualTo(expected))
43
+ encode input |> should equal expected
48
44
 
49
- [<Test>]
50
- [<Ignore("Remove to run test")>]
45
+ [<Fact(Skip = "Remove to run test")>]
51
46
  let ``Decode unicode`` () =
52
47
  let input = Encoding.Unicode.GetString([|240uy; 35uy; 51uy; 0uy; 189uy; 38uy; 50uy; 0uy; 80uy; 43uy; 240uy; 35uy|])
53
48
  let expected = Encoding.Unicode.GetString([|240uy; 35uy; 189uy; 38uy; 189uy; 38uy; 189uy; 38uy; 80uy; 43uy; 80uy; 43uy; 240uy; 35uy|])
54
- Assert.That(decode input, Is.EqualTo(expected))
49
+ decode input |> should equal expected
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,3 @@
1
+ module SaddlePoints
2
+
3
+ let saddlePoints matrix = failwith "You need to implement this function."
@@ -0,0 +1,22 @@
1
+ <Project Sdk="Microsoft.NET.Sdk">
2
+
3
+ <PropertyGroup>
4
+ <TargetFramework>netcoreapp2.0</TargetFramework>
5
+
6
+ <IsPackable>false</IsPackable>
7
+ </PropertyGroup>
8
+
9
+ <ItemGroup>
10
+ <Compile Include="SaddlePoints.fs" />
11
+ <Compile Include="SaddlePointsTest.fs" />
12
+ <Compile Include="Program.fs" />
13
+ </ItemGroup>
14
+
15
+ <ItemGroup>
16
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
17
+ <PackageReference Include="xunit" Version="2.3.0-beta5-build3769" />
18
+ <PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta5-build3769" />
19
+ <PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
20
+ </ItemGroup>
21
+
22
+ </Project>
@@ -1,47 +1,44 @@
1
- module SaddlePointTest
1
+ module SaddlePointTest
2
2
 
3
- open NUnit.Framework
3
+ open Xunit
4
+ open FsUnit.Xunit
4
5
 
5
6
  open SaddlePoints
6
7
 
7
- [<Test>]
8
+ [<Fact>]
8
9
  let ``Readme example`` () =
9
10
  let values = [ [ 9; 8; 7 ];
10
11
  [ 5; 3; 2 ];
11
12
  [ 6; 6; 7 ] ]
12
13
  let actual = saddlePoints values
13
- Assert.That(actual, Is.EqualTo([(1, 0)]))
14
+ actual |> should equal [(1, 0)]
14
15
 
15
- [<Test>]
16
- [<Ignore("Remove to run test")>]
16
+ [<Fact(Skip = "Remove to run test")>]
17
17
  let ``No saddle point`` () =
18
18
  let values = [ [ 2; 1 ];
19
19
  [ 1; 2 ] ]
20
20
  let actual = saddlePoints values
21
- Assert.That(actual, Is.Empty)
21
+ actual |> should be Empty
22
22
 
23
- [<Test>]
24
- [<Ignore("Remove to run test")>]
23
+ [<Fact(Skip = "Remove to run test")>]
25
24
  let ``Saddle point`` () =
26
25
  let values = [ [ 1; 2 ];
27
26
  [ 3; 4 ] ]
28
27
  let actual = saddlePoints values
29
- Assert.That(actual, Is.EqualTo([(0, 1)]))
28
+ actual |> should equal [(0, 1)]
30
29
 
31
- [<Test>]
32
- [<Ignore("Remove to run test")>]
30
+ [<Fact(Skip = "Remove to run test")>]
33
31
  let ``Another saddle point`` () =
34
32
  let values = [ [ 18; 3; 39; 19; 91 ];
35
33
  [ 38; 10; 8; 77; 320 ];
36
34
  [ 3; 4; 8; 6; 7 ] ]
37
35
  let actual = saddlePoints values
38
- Assert.That(actual, Is.EqualTo([(2, 2)]))
36
+ actual |> should equal [(2, 2)]
39
37
 
40
- [<Test>]
41
- [<Ignore("Remove to run test")>]
38
+ [<Fact(Skip = "Remove to run test")>]
42
39
  let ``Multiple saddle points`` () =
43
40
  let values = [ [ 4; 5; 4 ];
44
41
  [ 3; 5; 5 ];
45
42
  [ 1; 5; 4 ] ]
46
43
  let actual = saddlePoints values
47
- Assert.That(actual, Is.EqualTo([(0, 1); (1, 1); (2, 1)]))
44
+ actual |> should equal [(0, 1); (1, 1); (2, 1)]
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,3 @@
1
+ module Say
2
+
3
+ // TODO: implement this module
@@ -0,0 +1,22 @@
1
+ <Project Sdk="Microsoft.NET.Sdk">
2
+
3
+ <PropertyGroup>
4
+ <TargetFramework>netcoreapp2.0</TargetFramework>
5
+
6
+ <IsPackable>false</IsPackable>
7
+ </PropertyGroup>
8
+
9
+ <ItemGroup>
10
+ <Compile Include="Say.fs" />
11
+ <Compile Include="SayTest.fs" />
12
+ <Compile Include="Program.fs" />
13
+ </ItemGroup>
14
+
15
+ <ItemGroup>
16
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
17
+ <PackageReference Include="xunit" Version="2.3.0-beta5-build3769" />
18
+ <PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta5-build3769" />
19
+ <PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
20
+ </ItemGroup>
21
+
22
+ </Project>
@@ -1,84 +1,70 @@
1
- module SayTest
1
+ module SayTest
2
2
 
3
- open NUnit.Framework
3
+ open Xunit
4
+ open FsUnit.Xunit
4
5
 
5
6
  open Say
6
7
 
7
- [<Test>]
8
+ [<Fact>]
8
9
  let ``Zero`` () =
9
- Assert.That(inEnglish 0L, Is.EqualTo(Some "zero"))
10
+ inEnglish 0L |> should equal <| Some "zero"
10
11
 
11
- [<Test>]
12
- [<Ignore("Remove to run test")>]
12
+ [<Fact(Skip = "Remove to run test")>]
13
13
  let ``One`` () =
14
- Assert.That(inEnglish 1L, Is.EqualTo(Some "one"))
14
+ inEnglish 1L |> should equal <| Some "one"
15
15
 
16
- [<Test>]
17
- [<Ignore("Remove to run test")>]
16
+ [<Fact(Skip = "Remove to run test")>]
18
17
  let ``Fourteen`` () =
19
- Assert.That(inEnglish 14L, Is.EqualTo(Some "fourteen"))
18
+ inEnglish 14L |> should equal <| Some "fourteen"
20
19
 
21
- [<Test>]
22
- [<Ignore("Remove to run test")>]
20
+ [<Fact(Skip = "Remove to run test")>]
23
21
  let ``Twenty`` () =
24
- Assert.That(inEnglish 20L, Is.EqualTo(Some "twenty"))
22
+ inEnglish 20L |> should equal <| Some "twenty"
25
23
 
26
- [<Test>]
27
- [<Ignore("Remove to run test")>]
24
+ [<Fact(Skip = "Remove to run test")>]
28
25
  let ``Twenty-two`` () =
29
- Assert.That(inEnglish 22L, Is.EqualTo(Some "twenty-two"))
26
+ inEnglish 22L |> should equal <| Some "twenty-two"
30
27
 
31
- [<Test>]
32
- [<Ignore("Remove to run test")>]
28
+ [<Fact(Skip = "Remove to run test")>]
33
29
  let ``One hundred`` () =
34
- Assert.That(inEnglish 100L, Is.EqualTo(Some "one hundred"))
30
+ inEnglish 100L |> should equal <| Some "one hundred"
35
31
 
36
- [<Test>]
37
- [<Ignore("Remove to run test")>]
32
+ [<Fact(Skip = "Remove to run test")>]
38
33
  let ``One hundred twenty-three`` () =
39
- Assert.That(inEnglish 123L, Is.EqualTo(Some "one hundred twenty-three"))
34
+ inEnglish 123L |> should equal <| Some "one hundred twenty-three"
40
35
 
41
- [<Test>]
42
- [<Ignore("Remove to run test")>]
36
+ [<Fact(Skip = "Remove to run test")>]
43
37
  let ``One thousand`` () =
44
- Assert.That(inEnglish 1000L, Is.EqualTo(Some "one thousand"))
38
+ inEnglish 1000L |> should equal <| Some "one thousand"
45
39
 
46
- [<Test>]
47
- [<Ignore("Remove to run test")>]
40
+ [<Fact(Skip = "Remove to run test")>]
48
41
  let ``One thousand two hundred thirty-four`` () =
49
- Assert.That(inEnglish 1234L, Is.EqualTo(Some "one thousand two hundred thirty-four"))
42
+ inEnglish 1234L |> should equal <| Some "one thousand two hundred thirty-four"
50
43
 
51
- [<Test>]
52
- [<Ignore("Remove to run test")>]
44
+ [<Fact(Skip = "Remove to run test")>]
53
45
  let ``One million`` () =
54
- Assert.That(inEnglish 1000000L, Is.EqualTo(Some "one million"))
46
+ inEnglish 1000000L |> should equal <| Some "one million"
55
47
 
56
- [<Test>]
57
- [<Ignore("Remove to run test")>]
48
+ [<Fact(Skip = "Remove to run test")>]
58
49
  let ``One million two`` () =
59
- Assert.That(inEnglish 1000002L, Is.EqualTo(Some "one million two"))
50
+ inEnglish 1000002L |> should equal <| Some "one million two"
60
51
 
61
- [<Test>]
62
- [<Ignore("Remove to run test")>]
52
+ [<Fact(Skip = "Remove to run test")>]
63
53
  let ``One million two thousand three hundred forty-five`` () =
64
- Assert.That(inEnglish 1002345L, Is.EqualTo(Some "one million two thousand three hundred forty-five"))
54
+ inEnglish 1002345L |> should equal <| Some "one million two thousand three hundred forty-five"
65
55
 
66
- [<Test>]
67
- [<Ignore("Remove to run test")>]
56
+ [<Fact(Skip = "Remove to run test")>]
68
57
  let ``One billion`` () =
69
- Assert.That(inEnglish 1000000000L, Is.EqualTo(Some "one billion"))
58
+ inEnglish 1000000000L |> should equal <| Some "one billion"
70
59
 
71
- [<Test>]
72
- [<Ignore("Remove to run test")>]
60
+ [<Fact(Skip = "Remove to run test")>]
73
61
  let ``A big number`` () =
74
- Assert.That(inEnglish 987654321123L, Is.EqualTo(Some "nine hundred eighty-seven billion six hundred fifty-four million three hundred twenty-one thousand one hundred twenty-three"))
62
+ inEnglish 987654321123L |> should equal <| Some "nine hundred eighty-seven billion six hundred fifty-four million three hundred twenty-one thousand one hundred twenty-three"
75
63
 
76
- [<Test>]
77
- [<Ignore("Remove to run test")>]
64
+ [<Fact(Skip = "Remove to run test")>]
78
65
  let ``Lower bound`` () =
79
- Assert.That(inEnglish -1L, Is.EqualTo(None))
66
+ inEnglish -1L |> should equal None
80
67
 
81
- [<Test>]
82
- [<Ignore("Remove to run test")>]
68
+ [<Fact(Skip = "Remove to run test")>]
83
69
  let ``Upper bound`` () =
84
- Assert.That(inEnglish 1000000000000L, Is.EqualTo(None))
70
+ inEnglish 1000000000000L |> should equal None
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,3 @@
1
+ module ScaleGenerator
2
+
3
+ let pitches tonic pattern = failwith "You need to implement this function."
@@ -0,0 +1,22 @@
1
+ <Project Sdk="Microsoft.NET.Sdk">
2
+
3
+ <PropertyGroup>
4
+ <TargetFramework>netcoreapp2.0</TargetFramework>
5
+
6
+ <IsPackable>false</IsPackable>
7
+ </PropertyGroup>
8
+
9
+ <ItemGroup>
10
+ <Compile Include="ScaleGenerator.fs" />
11
+ <Compile Include="ScaleGeneratorTest.fs" />
12
+ <Compile Include="Program.fs" />
13
+ </ItemGroup>
14
+
15
+ <ItemGroup>
16
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
17
+ <PackageReference Include="xunit" Version="2.3.0-beta5-build3769" />
18
+ <PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta5-build3769" />
19
+ <PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
20
+ </ItemGroup>
21
+
22
+ </Project>
@@ -1,102 +1,90 @@
1
- module ScaleGeneratorTest
1
+ module ScaleGeneratorTest
2
2
 
3
- open NUnit.Framework
3
+ open Xunit
4
+ open FsUnit.Xunit
4
5
 
5
6
  open ScaleGenerator
6
7
 
7
- [<Test>]
8
+ [<Fact>]
8
9
  let ``Major scale`` () =
9
10
  let major = pitches "C" "MMmMMMm"
10
11
  let expected = ["C"; "D"; "E"; "F"; "G"; "A"; "B"]
11
- Assert.That(major, Is.EqualTo(expected))
12
+ major |> should equal expected
12
13
 
13
- [<Test>]
14
- [<Ignore("Remove to run test")>]
14
+ [<Fact(Skip = "Remove to run test")>]
15
15
  let ``Another major scale`` () =
16
16
  let major = pitches "G" "MMmMMMm"
17
17
  let expected = ["G"; "A"; "B"; "C"; "D"; "E"; "F#"]
18
- Assert.That(major, Is.EqualTo(expected))
18
+ major |> should equal expected
19
19
 
20
- [<Test>]
21
- [<Ignore("Remove to run test")>]
20
+ [<Fact(Skip = "Remove to run test")>]
22
21
  let ``Minor scale`` () =
23
22
  let minor = pitches "f#" "MmMMmMM"
24
23
  let expected = ["F#"; "G#"; "A"; "B"; "C#"; "D"; "E"]
25
- Assert.That(minor, Is.EqualTo(expected))
24
+ minor |> should equal expected
26
25
 
27
- [<Test>]
28
- [<Ignore("Remove to run test")>]
26
+ [<Fact(Skip = "Remove to run test")>]
29
27
  let ``Another minor scale`` () =
30
28
  let minor = pitches "bb" "MmMMmMM"
31
29
  let expected = ["Bb"; "C"; "Db"; "Eb"; "F"; "Gb"; "Ab"]
32
- Assert.That(minor, Is.EqualTo(expected))
30
+ minor |> should equal expected
33
31
 
34
- [<Test>]
35
- [<Ignore("Remove to run test")>]
32
+ [<Fact(Skip = "Remove to run test")>]
36
33
  let ``Dorian mode`` () =
37
34
  let dorian = pitches "d" "MmMMMmM"
38
35
  let expected = ["D"; "E"; "F"; "G"; "A"; "B"; "C"]
39
- Assert.That(dorian, Is.EqualTo(expected))
36
+ dorian |> should equal expected
40
37
 
41
- [<Test>]
42
- [<Ignore("Remove to run test")>]
38
+ [<Fact(Skip = "Remove to run test")>]
43
39
  let ``Mixolydian mode`` () =
44
40
  let mixolydian = pitches "Eb" "MMmMMmM"
45
41
  let expected = ["Eb"; "F"; "G"; "Ab"; "Bb"; "C"; "Db"]
46
- Assert.That(mixolydian, Is.EqualTo(expected))
42
+ mixolydian |> should equal expected
47
43
 
48
- [<Test>]
49
- [<Ignore("Remove to run test")>]
44
+ [<Fact(Skip = "Remove to run test")>]
50
45
  let ``Lydian mode`` () =
51
46
  let lydian = pitches "a" "MMMmMMm"
52
47
  let expected = ["A"; "B"; "C#"; "D#"; "E"; "F#"; "G#"]
53
- Assert.That(lydian, Is.EqualTo(expected))
48
+ lydian |> should equal expected
54
49
 
55
- [<Test>]
56
- [<Ignore("Remove to run test")>]
50
+ [<Fact(Skip = "Remove to run test")>]
57
51
  let ``Phrygian mode`` () =
58
52
  let phrygian = pitches "e" "mMMMmMM"
59
53
  let expected = ["E"; "F"; "G"; "A"; "B"; "C"; "D"]
60
- Assert.That(phrygian, Is.EqualTo(expected))
54
+ phrygian |> should equal expected
61
55
 
62
- [<Test>]
63
- [<Ignore("Remove to run test")>]
56
+ [<Fact(Skip = "Remove to run test")>]
64
57
  let ``Locrian mode`` () =
65
58
  let locrian = pitches "g" "mMMmMMM"
66
59
  let expected = ["G"; "Ab"; "Bb"; "C"; "Db"; "Eb"; "F"]
67
- Assert.That(locrian, Is.EqualTo(expected))
60
+ locrian |> should equal expected
68
61
 
69
- [<Test>]
70
- [<Ignore("Remove to run test")>]
62
+ [<Fact(Skip = "Remove to run test")>]
71
63
  let ``Harmonic minor`` () =
72
64
  let harmonicMinor = pitches "d" "MmMMmAm"
73
65
  let expected = ["D"; "E"; "F"; "G"; "A"; "Bb"; "Db"]
74
- Assert.That(harmonicMinor, Is.EqualTo(expected))
66
+ harmonicMinor |> should equal expected
75
67
 
76
- [<Test>]
77
- [<Ignore("Remove to run test")>]
68
+ [<Fact(Skip = "Remove to run test")>]
78
69
  let ``Octatonic`` () =
79
70
  let octatonic = pitches "C" "MmMmMmMm"
80
71
  let expected = ["C"; "D"; "D#"; "F"; "F#"; "G#"; "A"; "B"]
81
- Assert.That(octatonic, Is.EqualTo(expected))
72
+ octatonic |> should equal expected
82
73
 
83
- [<Test>]
84
- [<Ignore("Remove to run test")>]
74
+ [<Fact(Skip = "Remove to run test")>]
85
75
  let ``Hexatonic`` () =
86
76
  let hexatonic = pitches "Db" "MMMMMM"
87
77
  let expected = ["Db"; "Eb"; "F"; "G"; "A"; "B"]
88
- Assert.That(hexatonic, Is.EqualTo(expected))
78
+ hexatonic |> should equal expected
89
79
 
90
- [<Test>]
91
- [<Ignore("Remove to run test")>]
80
+ [<Fact(Skip = "Remove to run test")>]
92
81
  let ``Pentatonic`` () =
93
82
  let pentatonic = pitches "A" "MMAMA"
94
83
  let expected = ["A"; "B"; "C#"; "E"; "F#"]
95
- Assert.That(pentatonic, Is.EqualTo(expected))
84
+ pentatonic |> should equal expected
96
85
 
97
- [<Test>]
98
- [<Ignore("Remove to run test")>]
86
+ [<Fact(Skip = "Remove to run test")>]
99
87
  let ``Enigmatic`` () =
100
88
  let enigmatic = pitches "G" "mAMMMmm"
101
89
  let expected = ["G"; "G#"; "B"; "C#"; "D#"; "F"; "F#"]
102
- Assert.That(enigmatic, Is.EqualTo(expected))
90
+ enigmatic |> should equal expected
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,3 @@
1
+ module ScrabbleScore
2
+
3
+ let score word = failwith "You need to implement this function."
@@ -0,0 +1,22 @@
1
+ <Project Sdk="Microsoft.NET.Sdk">
2
+
3
+ <PropertyGroup>
4
+ <TargetFramework>netcoreapp2.0</TargetFramework>
5
+
6
+ <IsPackable>false</IsPackable>
7
+ </PropertyGroup>
8
+
9
+ <ItemGroup>
10
+ <Compile Include="ScrabbleScore.fs" />
11
+ <Compile Include="ScrabbleScoreTest.fs" />
12
+ <Compile Include="Program.fs" />
13
+ </ItemGroup>
14
+
15
+ <ItemGroup>
16
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
17
+ <PackageReference Include="xunit" Version="2.3.0-beta5-build3769" />
18
+ <PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta5-build3769" />
19
+ <PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
20
+ </ItemGroup>
21
+
22
+ </Project>
@@ -1,43 +1,37 @@
1
1
  module ScrabbleScoreTest
2
2
 
3
- open NUnit.Framework
3
+ open Xunit
4
+ open FsUnit.Xunit
4
5
  open ScrabbleScore
5
6
 
6
- [<Test>]
7
+ [<Fact>]
7
8
  let ``Empty word scores zero`` () =
8
- Assert.That(score "", Is.EqualTo(0))
9
+ score "" |> should equal 0
9
10
 
10
- [<Test>]
11
- [<Ignore("Remove to run test")>]
11
+ [<Fact(Skip = "Remove to run test")>]
12
12
  let ``Whitespace scores zero`` () =
13
- Assert.That(score " \t\n", Is.EqualTo(0))
13
+ score " \t\n" |> should equal 0
14
14
 
15
- [<Test>]
16
- [<Ignore("Remove to run test")>]
15
+ [<Fact(Skip = "Remove to run test")>]
17
16
  let ``Scores very short word`` () =
18
- Assert.That(score "a", Is.EqualTo(1))
17
+ score "a" |> should equal 1
19
18
 
20
- [<Test>]
21
- [<Ignore("Remove to run test")>]
19
+ [<Fact(Skip = "Remove to run test")>]
22
20
  let ``Scores other very short word`` () =
23
- Assert.That(score "f", Is.EqualTo(4))
21
+ score "f" |> should equal 4
24
22
 
25
- [<Test>]
26
- [<Ignore("Remove to run test")>]
23
+ [<Fact(Skip = "Remove to run test")>]
27
24
  let ``Simple word scores the number of letters`` () =
28
- Assert.That(score "street", Is.EqualTo(6))
25
+ score "street" |> should equal 6
29
26
 
30
- [<Test>]
31
- [<Ignore("Remove to run test")>]
27
+ [<Fact(Skip = "Remove to run test")>]
32
28
  let ``Complicated word scores more`` () =
33
- Assert.That(score "quirky", Is.EqualTo(22))
29
+ score "quirky" |> should equal 22
34
30
 
35
- [<Test>]
36
- [<Ignore("Remove to run test")>]
31
+ [<Fact(Skip = "Remove to run test")>]
37
32
  let ``Scores are case insensitive`` () =
38
- Assert.That(score "OXYPHENBUTAZONE", Is.EqualTo(41))
33
+ score "OXYPHENBUTAZONE" |> should equal 41
39
34
 
40
- [<Test>]
41
- [<Ignore("Remove to run test")>]
35
+ [<Fact(Skip = "Remove to run test")>]
42
36
  let ``Entire alphabet`` () =
43
- Assert.That(score "abcdefghijklmnopqrstuvwxyz", Is.EqualTo(87))
37
+ score "abcdefghijklmnopqrstuvwxyz" |> should equal 87
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,3 @@
1
+ module SecretHandshake
2
+
3
+ let handshake number = failwith "You need to implement this function."