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,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="Meetup.fs" />
11
+ <Compile Include="MeetupTest.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,72 +1,79 @@
1
1
  module MeetupTest
2
2
 
3
3
  open System
4
- open NUnit.Framework
4
+ open Xunit
5
+ open FsUnit.Xunit
5
6
 
6
7
  open Meetup
7
8
 
8
- [<TestCase(5, DayOfWeek.Monday, ExpectedResult = "2013-5-13")>]
9
- [<TestCase(3, DayOfWeek.Tuesday, ExpectedResult = "2013-3-19", Ignore = "Remove to run test case")>]
10
- [<TestCase(1, DayOfWeek.Wednesday, ExpectedResult = "2013-1-16", Ignore = "Remove to run test case")>]
11
- [<TestCase(5, DayOfWeek.Thursday, ExpectedResult = "2013-5-16", Ignore = "Remove to run test case")>]
12
- [<TestCase(4, DayOfWeek.Friday, ExpectedResult = "2013-4-19", Ignore = "Remove to run test case")>]
13
- [<TestCase(2, DayOfWeek.Saturday, ExpectedResult = "2013-2-16", Ignore = "Remove to run test case")>]
14
- [<TestCase(10, DayOfWeek.Sunday, ExpectedResult = "2013-10-13", Ignore = "Remove to run test case")>]
15
- let ``Finds first teenth day of week in a month``(month: int) (dayOfWeek: DayOfWeek) =
9
+ [<Theory>]
10
+ [<InlineData(5, DayOfWeek.Monday, "2013-5-13")>]
11
+ [<InlineData(3, DayOfWeek.Tuesday, "2013-3-19")>]
12
+ [<InlineData(1, DayOfWeek.Wednesday, "2013-1-16")>]
13
+ [<InlineData(5, DayOfWeek.Thursday, "2013-5-16")>]
14
+ [<InlineData(4, DayOfWeek.Friday, "2013-4-19")>]
15
+ [<InlineData(2, DayOfWeek.Saturday, "2013-2-16")>]
16
+ [<InlineData(10, DayOfWeek.Sunday, "2013-10-13")>]
17
+ let ``Finds first teenth day of week in a month``(month: int) (dayOfWeek: DayOfWeek) (expected: string) =
16
18
  let day = meetupDay dayOfWeek Schedule.Teenth 2013 month
17
- day.ToString("yyyy-M-d")
18
-
19
- [<TestCase(3, DayOfWeek.Monday, ExpectedResult = "2013-3-4", Ignore = "Remove to run test case")>]
20
- [<TestCase(5, DayOfWeek.Tuesday, ExpectedResult = "2013-5-7", Ignore = "Remove to run test case")>]
21
- [<TestCase(7, DayOfWeek.Wednesday, ExpectedResult = "2013-7-3", Ignore = "Remove to run test case")>]
22
- [<TestCase(9, DayOfWeek.Thursday, ExpectedResult = "2013-9-5", Ignore = "Remove to run test case")>]
23
- [<TestCase(11, DayOfWeek.Friday, ExpectedResult = "2013-11-1", Ignore = "Remove to run test case")>]
24
- [<TestCase(1, DayOfWeek.Saturday, ExpectedResult = "2013-1-5", Ignore = "Remove to run test case")>]
25
- [<TestCase(4, DayOfWeek.Sunday, ExpectedResult = "2013-4-7", Ignore = "Remove to run test case")>]
26
- let ``Finds first day of week in a month``(month: int) (dayOfWeek: DayOfWeek) =
19
+ day.ToString("yyyy-M-d") |> should equal expected
20
+
21
+ [<Theory(Skip = "Remove to run test")>]
22
+ [<InlineData(3, DayOfWeek.Monday, "2013-3-4")>]
23
+ [<InlineData(5, DayOfWeek.Tuesday, "2013-5-7")>]
24
+ [<InlineData(7, DayOfWeek.Wednesday, "2013-7-3")>]
25
+ [<InlineData(9, DayOfWeek.Thursday, "2013-9-5")>]
26
+ [<InlineData(11, DayOfWeek.Friday, "2013-11-1")>]
27
+ [<InlineData(1, DayOfWeek.Saturday, "2013-1-5")>]
28
+ [<InlineData(4, DayOfWeek.Sunday, "2013-4-7")>]
29
+ let ``Finds first day of week in a month``(month: int) (dayOfWeek: DayOfWeek) (expected: string) =
27
30
  let day = meetupDay dayOfWeek Schedule.First 2013 month
28
- day.ToString("yyyy-M-d")
29
-
30
- [<TestCase(3, DayOfWeek.Monday, ExpectedResult = "2013-3-11", Ignore = "Remove to run test case")>]
31
- [<TestCase(5, DayOfWeek.Tuesday, ExpectedResult = "2013-5-14", Ignore = "Remove to run test case")>]
32
- [<TestCase(7, DayOfWeek.Wednesday, ExpectedResult = "2013-7-10", Ignore = "Remove to run test case")>]
33
- [<TestCase(9, DayOfWeek.Thursday, ExpectedResult = "2013-9-12", Ignore = "Remove to run test case")>]
34
- [<TestCase(12, DayOfWeek.Friday, ExpectedResult = "2013-12-13", Ignore = "Remove to run test case")>]
35
- [<TestCase(2, DayOfWeek.Saturday, ExpectedResult = "2013-2-9", Ignore = "Remove to run test case")>]
36
- [<TestCase(4, DayOfWeek.Sunday, ExpectedResult = "2013-4-14", Ignore = "Remove to run test case")>]
37
- let ``Finds second day of week in a month``(month: int) (dayOfWeek: DayOfWeek) =
31
+ day.ToString("yyyy-M-d") |> should equal expected
32
+
33
+ [<Theory(Skip = "Remove to run test")>]
34
+ [<InlineData(3, DayOfWeek.Monday, "2013-3-11")>]
35
+ [<InlineData(5, DayOfWeek.Tuesday, "2013-5-14")>]
36
+ [<InlineData(7, DayOfWeek.Wednesday, "2013-7-10")>]
37
+ [<InlineData(9, DayOfWeek.Thursday, "2013-9-12")>]
38
+ [<InlineData(12, DayOfWeek.Friday, "2013-12-13")>]
39
+ [<InlineData(2, DayOfWeek.Saturday, "2013-2-9")>]
40
+ [<InlineData(4, DayOfWeek.Sunday, "2013-4-14")>]
41
+ let ``Finds second day of week in a month``(month: int) (dayOfWeek: DayOfWeek) (expected: string) =
38
42
  let day = meetupDay dayOfWeek Schedule.Second 2013 month
39
- day.ToString("yyyy-M-d")
40
-
41
- [<TestCase(3, DayOfWeek.Monday, ExpectedResult = "2013-3-18", Ignore = "Remove to run test case")>]
42
- [<TestCase(5, DayOfWeek.Tuesday, ExpectedResult = "2013-5-21", Ignore = "Remove to run test case")>]
43
- [<TestCase(7, DayOfWeek.Wednesday, ExpectedResult = "2013-7-17", Ignore = "Remove to run test case")>]
44
- [<TestCase(9, DayOfWeek.Thursday, ExpectedResult = "2013-9-19", Ignore = "Remove to run test case")>]
45
- [<TestCase(12, DayOfWeek.Friday, ExpectedResult = "2013-12-20", Ignore = "Remove to run test case")>]
46
- [<TestCase(2, DayOfWeek.Saturday, ExpectedResult = "2013-2-16", Ignore = "Remove to run test case")>]
47
- [<TestCase(4, DayOfWeek.Sunday, ExpectedResult = "2013-4-21", Ignore = "Remove to run test case")>]
48
- let ``Finds third day of week in a month``(month: int) (dayOfWeek: DayOfWeek) =
43
+ day.ToString("yyyy-M-d") |> should equal expected
44
+
45
+ [<Theory(Skip = "Remove to run test")>]
46
+ [<InlineData(3, DayOfWeek.Monday, "2013-3-18")>]
47
+ [<InlineData(5, DayOfWeek.Tuesday, "2013-5-21")>]
48
+ [<InlineData(7, DayOfWeek.Wednesday, "2013-7-17")>]
49
+ [<InlineData(9, DayOfWeek.Thursday, "2013-9-19")>]
50
+ [<InlineData(12, DayOfWeek.Friday, "2013-12-20")>]
51
+ [<InlineData(2, DayOfWeek.Saturday, "2013-2-16")>]
52
+ [<InlineData(4, DayOfWeek.Sunday, "2013-4-21")>]
53
+ let ``Finds third day of week in a month``(month: int) (dayOfWeek: DayOfWeek) (expected: string) =
49
54
  let day = meetupDay dayOfWeek Schedule.Third 2013 month
50
- day.ToString("yyyy-M-d")
51
-
52
- [<TestCase(3, DayOfWeek.Monday, ExpectedResult = "2013-3-25", Ignore = "Remove to run test case")>]
53
- [<TestCase(5, DayOfWeek.Tuesday, ExpectedResult = "2013-5-28", Ignore = "Remove to run test case")>]
54
- [<TestCase(7, DayOfWeek.Wednesday, ExpectedResult = "2013-7-24", Ignore = "Remove to run test case")>]
55
- [<TestCase(9, DayOfWeek.Thursday, ExpectedResult = "2013-9-26", Ignore = "Remove to run test case")>]
56
- [<TestCase(12, DayOfWeek.Friday, ExpectedResult = "2013-12-27", Ignore = "Remove to run test case")>]
57
- [<TestCase(2, DayOfWeek.Saturday, ExpectedResult = "2013-2-23", Ignore = "Remove to run test case")>]
58
- [<TestCase(4, DayOfWeek.Sunday, ExpectedResult = "2013-4-28", Ignore = "Remove to run test case")>]
59
- let ``Finds fourth day of week in a month``(month: int) (dayOfWeek: DayOfWeek) =
55
+ day.ToString("yyyy-M-d") |> should equal expected
56
+
57
+ [<Theory(Skip = "Remove to run test")>]
58
+ [<InlineData(3, DayOfWeek.Monday, "2013-3-25")>]
59
+ [<InlineData(5, DayOfWeek.Tuesday, "2013-5-28")>]
60
+ [<InlineData(7, DayOfWeek.Wednesday, "2013-7-24")>]
61
+ [<InlineData(9, DayOfWeek.Thursday, "2013-9-26")>]
62
+ [<InlineData(12, DayOfWeek.Friday, "2013-12-27")>]
63
+ [<InlineData(2, DayOfWeek.Saturday, "2013-2-23")>]
64
+ [<InlineData(4, DayOfWeek.Sunday, "2013-4-28")>]
65
+ let ``Finds fourth day of week in a month``(month: int) (dayOfWeek: DayOfWeek) (expected: string) =
60
66
  let day = meetupDay dayOfWeek Schedule.Fourth 2013 month
61
- day.ToString("yyyy-M-d")
62
-
63
- [<TestCase(3, DayOfWeek.Monday, ExpectedResult = "2013-3-25", Ignore = "Remove to run test case")>]
64
- [<TestCase(5, DayOfWeek.Tuesday, ExpectedResult = "2013-5-28", Ignore = "Remove to run test case")>]
65
- [<TestCase(7, DayOfWeek.Wednesday, ExpectedResult = "2013-7-31", Ignore = "Remove to run test case")>]
66
- [<TestCase(9, DayOfWeek.Thursday, ExpectedResult = "2013-9-26", Ignore = "Remove to run test case")>]
67
- [<TestCase(12, DayOfWeek.Friday, ExpectedResult = "2013-12-27", Ignore = "Remove to run test case")>]
68
- [<TestCase(2, DayOfWeek.Saturday, ExpectedResult = "2013-2-23", Ignore = "Remove to run test case")>]
69
- [<TestCase(3, DayOfWeek.Sunday, ExpectedResult = "2013-3-31", Ignore = "Remove to run test case")>]
70
- let ``Finds last day of week in a month``(month: int) (dayOfWeek: DayOfWeek) =
67
+ day.ToString("yyyy-M-d") |> should equal expected
68
+
69
+ [<Theory(Skip = "Remove to run test")>]
70
+ [<InlineData(3, DayOfWeek.Monday, "2013-3-25")>]
71
+ [<InlineData(5, DayOfWeek.Tuesday, "2013-5-28")>]
72
+ [<InlineData(7, DayOfWeek.Wednesday, "2013-7-31")>]
73
+ [<InlineData(9, DayOfWeek.Thursday, "2013-9-26")>]
74
+ [<InlineData(12, DayOfWeek.Friday, "2013-12-27")>]
75
+ [<InlineData(2, DayOfWeek.Saturday, "2013-2-23")>]
76
+ [<InlineData(3, DayOfWeek.Sunday, "2013-3-31")>]
77
+ let ``Finds last day of week in a month``(month: int) (dayOfWeek: DayOfWeek) (expected: string) =
71
78
  let day = meetupDay dayOfWeek Schedule.Last 2013 month
72
- day.ToString("yyyy-M-d")
79
+ day.ToString("yyyy-M-d") |> should equal expected
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,3 @@
1
+ module Minesweeper
2
+
3
+ let annotate 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="Minesweeper.fs" />
11
+ <Compile Include="MinesweeperTest.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,19 +1,19 @@
1
- module MinesweeperTest
1
+ module MinesweeperTest
2
2
 
3
- open NUnit.Framework
3
+ open Xunit
4
+ open FsUnit.Xunit
4
5
 
5
6
  open Minesweeper
6
7
 
7
8
  let concat = List.reduce (fun x y -> x + "\n" + y)
8
9
 
9
- [<Test>]
10
+ [<Fact>]
10
11
  let ``Zero size board`` () =
11
12
  let actual = ""
12
13
  let expected = ""
13
- Assert.That(annotate actual, Is.EqualTo(expected))
14
+ annotate actual |> should equal expected
14
15
 
15
- [<Test>]
16
- [<Ignore("Remove to run test")>]
16
+ [<Fact(Skip = "Remove to run test")>]
17
17
  let ``Empty board`` () =
18
18
  let actual =
19
19
  [" ";
@@ -27,10 +27,9 @@ let ``Empty board`` () =
27
27
  " "]
28
28
  |> concat
29
29
 
30
- Assert.That(annotate actual, Is.EqualTo(expected))
30
+ annotate actual |> should equal expected
31
31
 
32
- [<Test>]
33
- [<Ignore("Remove to run test")>]
32
+ [<Fact(Skip = "Remove to run test")>]
34
33
  let ``Board full of mines`` () =
35
34
  let actual =
36
35
  ["***";
@@ -44,10 +43,9 @@ let ``Board full of mines`` () =
44
43
  "***"]
45
44
  |> concat
46
45
 
47
- Assert.That(annotate actual, Is.EqualTo(expected))
46
+ annotate actual |> should equal expected
48
47
 
49
- [<Test>]
50
- [<Ignore("Remove to run test")>]
48
+ [<Fact(Skip = "Remove to run test")>]
51
49
  let ``Surrounded`` () =
52
50
  let actual =
53
51
  ["***";
@@ -61,18 +59,16 @@ let ``Surrounded`` () =
61
59
  "***"]
62
60
  |> concat
63
61
 
64
- Assert.That(annotate actual, Is.EqualTo(expected))
62
+ annotate actual |> should equal expected
65
63
 
66
- [<Test>]
67
- [<Ignore("Remove to run test")>]
64
+ [<Fact(Skip = "Remove to run test")>]
68
65
  let ``Horizontal line`` () =
69
66
  let actual = [" * * "] |> concat
70
67
  let expected = ["1*2*1"] |> concat
71
68
 
72
- Assert.That(annotate actual, Is.EqualTo(expected))
69
+ annotate actual |> should equal expected
73
70
 
74
- [<Test>]
75
- [<Ignore("Remove to run test")>]
71
+ [<Fact(Skip = "Remove to run test")>]
76
72
  let ``Vertical line`` () =
77
73
  let actual =
78
74
  [" ";
@@ -90,10 +86,9 @@ let ``Vertical line`` () =
90
86
  "1"]
91
87
  |> concat
92
88
 
93
- Assert.That(annotate actual, Is.EqualTo(expected))
89
+ annotate actual |> should equal expected
94
90
 
95
- [<Test>]
96
- [<Ignore("Remove to run test")>]
91
+ [<Fact(Skip = "Remove to run test")>]
97
92
  let ``Cross`` () =
98
93
  let actual =
99
94
  [" * ";
@@ -111,5 +106,5 @@ let ``Cross`` () =
111
106
  " 2*2 "]
112
107
  |> concat
113
108
 
114
- Assert.That(annotate actual, Is.EqualTo(expected))
109
+ annotate actual |> should equal expected
115
110
 
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,3 @@
1
+ module NthPrime
2
+
3
+ let nthPrime nth = 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="NthPrime.fs" />
11
+ <Compile Include="NthPrimeTest.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,58 +1,49 @@
1
- module NthPrimeTest
1
+ module NthPrimeTest
2
2
 
3
- open NUnit.Framework
3
+ open Xunit
4
+ open FsUnit.Xunit
4
5
  open NthPrime
5
6
 
6
- [<Test>]
7
+ [<Fact>]
7
8
  let ``First prime`` () =
8
- Assert.That(nthPrime 1, Is.EqualTo(2))
9
+ nthPrime 1 |> should equal 2
9
10
 
10
- [<Test>]
11
- [<Ignore("Remove to run test")>]
11
+ [<Fact(Skip = "Remove to run test")>]
12
12
  let ``Second prime`` () =
13
- Assert.That(nthPrime 2, Is.EqualTo(3))
13
+ nthPrime 2 |> should equal 3
14
14
 
15
- [<Test>]
16
- [<Ignore("Remove to run test")>]
15
+ [<Fact(Skip = "Remove to run test")>]
17
16
  let ``Third prime`` () =
18
- Assert.That(nthPrime 3, Is.EqualTo(5))
17
+ nthPrime 3 |> should equal 5
19
18
 
20
- [<Test>]
21
- [<Ignore("Remove to run test")>]
19
+ [<Fact(Skip = "Remove to run test")>]
22
20
  let ``4th prime`` () =
23
- Assert.That(nthPrime 4, Is.EqualTo(7))
21
+ nthPrime 4 |> should equal 7
24
22
 
25
- [<Test>]
26
- [<Ignore("Remove to run test")>]
23
+ [<Fact(Skip = "Remove to run test")>]
27
24
  let ``5th prime`` () =
28
- Assert.That(nthPrime 5, Is.EqualTo(11))
25
+ nthPrime 5 |> should equal 11
29
26
 
30
- [<Test>]
31
- [<Ignore("Remove to run test")>]
27
+ [<Fact(Skip = "Remove to run test")>]
32
28
  let ``6th prime`` () =
33
- Assert.That(nthPrime 6, Is.EqualTo(13))
29
+ nthPrime 6 |> should equal 13
34
30
 
35
- [<Test>]
36
- [<Ignore("Remove to run test")>]
31
+ [<Fact(Skip = "Remove to run test")>]
37
32
  let ``7th prime`` () =
38
- Assert.That(nthPrime 7, Is.EqualTo(17))
33
+ nthPrime 7 |> should equal 17
39
34
 
40
- [<Test>]
41
- [<Ignore("Remove to run test")>]
35
+ [<Fact(Skip = "Remove to run test")>]
42
36
  let ``8th prime`` () =
43
- Assert.That(nthPrime 8, Is.EqualTo(19))
37
+ nthPrime 8 |> should equal 19
44
38
 
45
- [<Test>]
46
- [<Ignore("Remove to run test")>]
39
+ [<Fact(Skip = "Remove to run test")>]
47
40
  let ``1000th prime`` () =
48
- Assert.That(nthPrime 1000, Is.EqualTo(7919))
41
+ nthPrime 1000 |> should equal 7919
49
42
 
50
- [<Test>]
51
- [<Ignore("Remove to run test")>]
43
+ [<Fact(Skip = "Remove to run test")>]
52
44
  let ``10000th prime`` () =
53
- Assert.That(nthPrime 10000, Is.EqualTo(104729))
45
+ nthPrime 10000 |> should equal 104729
54
46
 
55
- [<Test>]
56
- [<Ignore("Remove to run test")>]
47
+ [<Fact(Skip = "Remove to run test")>]
57
48
  let ``10001th prime`` () =
58
- Assert.That(nthPrime 10001, Is.EqualTo(104743))
49
+ nthPrime 10001 |> should equal 104743
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,5 @@
1
+ module NucleoTideCount
2
+
3
+ let count (nucleotide: char) (strand: string): int = failwith "You need to implement this function."
4
+
5
+ let nucleotideCounts (strand: string): Map<char, int> = 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="NucleotideCount.fs" />
11
+ <Compile Include="NucleotideCountTest.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,49 +1,45 @@
1
1
  module NucleoTideCountTest
2
2
 
3
- open NUnit.Framework
3
+ open Xunit
4
+ open FsUnit.Xunit
5
+ open System
4
6
 
5
7
  open NucleoTideCount
6
8
 
7
- [<Test>]
9
+ [<Fact>]
8
10
  let ``Has no nucleotides`` () =
9
11
  let strand = ""
10
12
  let expected = [ ( 'A', 0 ); ( 'T', 0 ); ( 'C', 0 ); ( 'G', 0 ) ] |> Map.ofSeq
11
- Assert.That(nucleotideCounts strand, Is.EqualTo(expected))
13
+ nucleotideCounts strand |> should equal expected
12
14
 
13
- [<Test>]
14
- [<Ignore("Remove to run test")>]
15
+ [<Fact(Skip = "Remove to run test")>]
15
16
  let ``Has no adenosine`` () =
16
17
  let strand = ""
17
- Assert.That(count 'A' strand, Is.EqualTo(0))
18
+ count 'A' strand |> should equal 0
18
19
 
19
- [<Test>]
20
- [<Ignore("Remove to run test")>]
20
+ [<Fact(Skip = "Remove to run test")>]
21
21
  let ``Repetitive cytidine gets counts`` () =
22
22
  let strand = "CCCCC"
23
- Assert.That(count 'C' strand, Is.EqualTo(5))
23
+ count 'C' strand |> should equal 5
24
24
 
25
- [<Test>]
26
- [<Ignore("Remove to run test")>]
25
+ [<Fact(Skip = "Remove to run test")>]
27
26
  let ``Repetitive sequence has only guanosine`` () =
28
27
  let strand = "GGGGGGGG"
29
28
  let expected = [ ( 'A', 0 ); ( 'T', 0 ); ( 'C', 0 ); ( 'G', 8 ) ] |> Map.ofSeq
30
- Assert.That(nucleotideCounts strand, Is.EqualTo(expected))
29
+ nucleotideCounts strand |> should equal expected
31
30
 
32
- [<Test>]
33
- [<Ignore("Remove to run test")>]
31
+ [<Fact(Skip = "Remove to run test")>]
34
32
  let ``Counts only thymidine`` () =
35
33
  let strand = "GGGGTAACCCGG"
36
- Assert.That(count 'T' strand, Is.EqualTo(1))
34
+ count 'T' strand |> should equal 1
37
35
 
38
- [<Test>]
39
- [<Ignore("Remove to run test")>]
36
+ [<Fact(Skip = "Remove to run test")>]
40
37
  let ``Validates nucleotides`` () =
41
38
  let strand = "GGTTGG"
42
- Assert.Throws(fun () -> count 'X' strand |> ignore) |> ignore
39
+ (fun () -> count 'X' strand |> ignore) |> should throw typeof<Exception>
43
40
 
44
- [<Test>]
45
- [<Ignore("Remove to run test")>]
41
+ [<Fact(Skip = "Remove to run test")>]
46
42
  let ``Counts all nucleotides`` () =
47
43
  let strand = "AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC"
48
44
  let expected = [ ( 'A', 20 ); ( 'T', 21 ); ( 'C', 12 ); ( 'G', 17 ) ] |> Map.ofSeq
49
- Assert.That(nucleotideCounts strand, Is.EqualTo(expected))
45
+ nucleotideCounts strand |> should equal expected
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,3 @@
1
+ module OcrNumbers
2
+
3
+ let convert 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="OcrNumbers.fs" />
11
+ <Compile Include="OcrNumbersTest.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>