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
@@ -1,10 +1,12 @@
1
- module TreeBuildingTest
1
+ module TreeBuildingTest
2
2
 
3
- open NUnit.Framework
3
+ open Xunit
4
+ open FsUnit.Xunit
5
+ open System
4
6
 
5
7
  open TreeBuilding
6
8
 
7
- [<Test>]
9
+ [<Fact>]
8
10
  let ``One node`` () =
9
11
  let input =
10
12
  [
@@ -13,11 +15,11 @@ let ``One node`` () =
13
15
 
14
16
  let tree = buildTree input
15
17
 
16
- Assert.That(isBranch tree, Is.False)
17
- Assert.That(recordId tree, Is.EqualTo(0))
18
- Assert.That(children tree, Is.EqualTo([]))
18
+ isBranch tree |> should equal false
19
+ recordId tree |> should equal 0
20
+ children tree |> should be Empty
19
21
 
20
- [<Test>]
22
+ [<Fact>]
21
23
  let ``Three nodes in order`` () =
22
24
  let input =
23
25
  [
@@ -28,17 +30,17 @@ let ``Three nodes in order`` () =
28
30
 
29
31
  let tree = buildTree input
30
32
 
31
- Assert.That(isBranch tree, Is.True)
32
- Assert.That(recordId tree, Is.EqualTo(0))
33
- Assert.That(children tree |> List.length, Is.EqualTo(2))
33
+ isBranch tree |> should equal true
34
+ recordId tree |> should equal 0
35
+ children tree |> List.length |> should equal 2
34
36
 
35
- Assert.That(children tree |> List.item 0 |> isBranch, Is.False)
36
- Assert.That(children tree |> List.item 0 |> recordId, Is.EqualTo(1))
37
+ children tree |> List.item 0 |> isBranch |> should equal false
38
+ children tree |> List.item 0 |> recordId |> should equal 1
37
39
 
38
- Assert.That(children tree |> List.item 1 |> isBranch, Is.False)
39
- Assert.That(children tree |> List.item 1 |> recordId, Is.EqualTo(2))
40
+ children tree |> List.item 1 |> isBranch |> should equal false
41
+ children tree |> List.item 1 |> recordId |> should equal 2
40
42
 
41
- [<Test>]
43
+ [<Fact>]
42
44
  let ``Three nodes in reverse order`` () =
43
45
  let input =
44
46
  [
@@ -49,17 +51,17 @@ let ``Three nodes in reverse order`` () =
49
51
 
50
52
  let tree = buildTree input
51
53
 
52
- Assert.That(isBranch tree, Is.True)
53
- Assert.That(recordId tree, Is.EqualTo(0))
54
- Assert.That(children tree |> List.length, Is.EqualTo(2))
54
+ isBranch tree |> should equal true
55
+ recordId tree |> should equal 0
56
+ children tree |> List.length |> should equal 2
55
57
 
56
- Assert.That(children tree |> List.item 0 |> isBranch, Is.False)
57
- Assert.That(children tree |> List.item 0 |> recordId, Is.EqualTo(1))
58
+ children tree |> List.item 0 |> isBranch |> should equal false
59
+ children tree |> List.item 0 |> recordId |> should equal 1
58
60
 
59
- Assert.That(children tree |> List.item 1 |> isBranch, Is.False)
60
- Assert.That(children tree |> List.item 1 |> recordId, Is.EqualTo(2))
61
+ children tree |> List.item 1 |> isBranch |> should equal false
62
+ children tree |> List.item 1 |> recordId |> should equal 2
61
63
 
62
- [<Test>]
64
+ [<Fact>]
63
65
  let ``More than two children`` () =
64
66
  let input =
65
67
  [
@@ -71,20 +73,20 @@ let ``More than two children`` () =
71
73
 
72
74
  let tree = buildTree input
73
75
 
74
- Assert.That(isBranch tree, Is.True)
75
- Assert.That(recordId tree, Is.EqualTo(0))
76
- Assert.That(children tree |> List.length, Is.EqualTo(3))
76
+ isBranch tree |> should equal true
77
+ recordId tree |> should equal 0
78
+ children tree |> List.length |> should equal 3
77
79
 
78
- Assert.That(children tree |> List.item 0 |> isBranch, Is.False)
79
- Assert.That(children tree |> List.item 0 |> recordId, Is.EqualTo(1))
80
+ children tree |> List.item 0 |> isBranch |> should equal false
81
+ children tree |> List.item 0 |> recordId |> should equal 1
80
82
 
81
- Assert.That(children tree |> List.item 1 |> isBranch, Is.False)
82
- Assert.That(children tree |> List.item 1 |> recordId, Is.EqualTo(2))
83
+ children tree |> List.item 1 |> isBranch |> should equal false
84
+ children tree |> List.item 1 |> recordId |> should equal 2
83
85
 
84
- Assert.That(children tree |> List.item 2 |> isBranch, Is.False)
85
- Assert.That(children tree |> List.item 2 |> recordId, Is.EqualTo(3))
86
+ children tree |> List.item 2 |> isBranch |> should equal false
87
+ children tree |> List.item 2 |> recordId |> should equal 3
86
88
 
87
- [<Test>]
89
+ [<Fact>]
88
90
  let ``Binary tree`` () =
89
91
  let input =
90
92
  [
@@ -99,31 +101,31 @@ let ``Binary tree`` () =
99
101
 
100
102
  let tree = buildTree input
101
103
 
102
- Assert.That(isBranch tree, Is.True)
103
- Assert.That(recordId tree, Is.EqualTo(0))
104
- Assert.That(children tree |> List.length, Is.EqualTo(2))
104
+ isBranch tree |> should equal true
105
+ recordId tree |> should equal 0
106
+ children tree |> List.length |> should equal 2
105
107
 
106
- Assert.That(children tree |> List.item 0 |> isBranch, Is.True)
107
- Assert.That(children tree |> List.item 0 |> recordId, Is.EqualTo(1))
108
- Assert.That(children tree |> List.item 0 |> children |> List.length, Is.EqualTo(2))
108
+ children tree |> List.item 0 |> isBranch |> should equal true
109
+ children tree |> List.item 0 |> recordId |> should equal 1
110
+ children tree |> List.item 0 |> children |> List.length |> should equal 2
109
111
 
110
- Assert.That(children tree |> List.item 0 |> children |> List.item 0 |> isBranch, Is.False)
111
- Assert.That(children tree |> List.item 0 |> children |> List.item 0 |> recordId, Is.EqualTo(4))
112
+ children tree |> List.item 0 |> children |> List.item 0 |> isBranch |> should equal false
113
+ children tree |> List.item 0 |> children |> List.item 0 |> recordId |> should equal 4
112
114
 
113
- Assert.That(children tree |> List.item 0 |> children |> List.item 1 |> isBranch, Is.False)
114
- Assert.That(children tree |> List.item 0 |> children |> List.item 1 |> recordId, Is.EqualTo(5))
115
+ children tree |> List.item 0 |> children |> List.item 1 |> isBranch |> should equal false
116
+ children tree |> List.item 0 |> children |> List.item 1 |> recordId |> should equal 5
115
117
 
116
- Assert.That(children tree |> List.item 1 |> isBranch, Is.True)
117
- Assert.That(children tree |> List.item 1 |> recordId, Is.EqualTo(2))
118
- Assert.That(children tree |> List.item 1 |> children |> List.length, Is.EqualTo(2))
118
+ children tree |> List.item 1 |> isBranch |> should equal true
119
+ children tree |> List.item 1 |> recordId |> should equal 2
120
+ children tree |> List.item 1 |> children |> List.length |> should equal 2
119
121
 
120
- Assert.That(children tree |> List.item 1 |> children |> List.item 0 |> isBranch, Is.False)
121
- Assert.That(children tree |> List.item 1 |> children |> List.item 0 |> recordId, Is.EqualTo(3))
122
+ children tree |> List.item 1 |> children |> List.item 0 |> isBranch |> should equal false
123
+ children tree |> List.item 1 |> children |> List.item 0 |> recordId |> should equal 3
122
124
 
123
- Assert.That(children tree |> List.item 1 |> children |> List.item 1 |> isBranch, Is.False)
124
- Assert.That(children tree |> List.item 1 |> children |> List.item 1 |> recordId, Is.EqualTo(6))
125
+ children tree |> List.item 1 |> children |> List.item 1 |> isBranch |> should equal false
126
+ children tree |> List.item 1 |> children |> List.item 1 |> recordId |> should equal 6
125
127
 
126
- [<Test>]
128
+ [<Fact>]
127
129
  let ``Unbalanced tree`` () =
128
130
  let input =
129
131
  [
@@ -138,48 +140,48 @@ let ``Unbalanced tree`` () =
138
140
 
139
141
  let tree = buildTree input
140
142
 
141
- Assert.That(isBranch tree, Is.True)
142
- Assert.That(recordId tree, Is.EqualTo(0))
143
- Assert.That(children tree |> List.length, Is.EqualTo(2))
143
+ isBranch tree |> should equal true
144
+ recordId tree |> should equal 0
145
+ children tree |> List.length |> should equal 2
144
146
 
145
- Assert.That(children tree |> List.item 0 |> isBranch, Is.True)
146
- Assert.That(children tree |> List.item 0 |> recordId, Is.EqualTo(1))
147
- Assert.That(children tree |> List.item 0 |> children |> List.length, Is.EqualTo(1))
147
+ children tree |> List.item 0 |> isBranch |> should equal true
148
+ children tree |> List.item 0 |> recordId |> should equal 1
149
+ children tree |> List.item 0 |> children |> List.length |> should equal 1
148
150
 
149
- Assert.That(children tree |> List.item 0 |> children |> List.item 0 |> isBranch, Is.False)
150
- Assert.That(children tree |> List.item 0 |> children |> List.item 0 |> recordId, Is.EqualTo(4))
151
+ children tree |> List.item 0 |> children |> List.item 0 |> isBranch |> should equal false
152
+ children tree |> List.item 0 |> children |> List.item 0 |> recordId |> should equal 4
151
153
 
152
- Assert.That(children tree |> List.item 1 |> isBranch, Is.True)
153
- Assert.That(children tree |> List.item 1 |> recordId, Is.EqualTo(2))
154
- Assert.That(children tree |> List.item 1 |> children |> List.length, Is.EqualTo(3))
154
+ children tree |> List.item 1 |> isBranch |> should equal true
155
+ children tree |> List.item 1 |> recordId |> should equal 2
156
+ children tree |> List.item 1 |> children |> List.length |> should equal 3
155
157
 
156
- Assert.That(children tree |> List.item 1 |> children |> List.item 0 |> isBranch, Is.False)
157
- Assert.That(children tree |> List.item 1 |> children |> List.item 0 |> recordId, Is.EqualTo(3))
158
+ children tree |> List.item 1 |> children |> List.item 0 |> isBranch |> should equal false
159
+ children tree |> List.item 1 |> children |> List.item 0 |> recordId |> should equal 3
158
160
 
159
- Assert.That(children tree |> List.item 1 |> children |> List.item 1 |> isBranch, Is.False)
160
- Assert.That(children tree |> List.item 1 |> children |> List.item 1 |> recordId, Is.EqualTo(5))
161
+ children tree |> List.item 1 |> children |> List.item 1 |> isBranch |> should equal false
162
+ children tree |> List.item 1 |> children |> List.item 1 |> recordId |> should equal 5
161
163
 
162
- Assert.That(children tree |> List.item 1 |> children |> List.item 2 |> isBranch, Is.False)
163
- Assert.That(children tree |> List.item 1 |> children |> List.item 2 |> recordId, Is.EqualTo(6))
164
+ children tree |> List.item 1 |> children |> List.item 2 |> isBranch |> should equal false
165
+ children tree |> List.item 1 |> children |> List.item 2 |> recordId |> should equal 6
164
166
 
165
- [<Test>]
167
+ [<Fact>]
166
168
  let ``Empty input`` () =
167
169
  let input = []
168
- Assert.That((fun () -> buildTree input |> ignore), Throws.Exception)
170
+ (fun () -> buildTree input |> ignore) |> should throw typeof<Exception>
169
171
 
170
- [<Test>]
172
+ [<Fact>]
171
173
  let ``Root node has parent`` () =
172
174
  let input =
173
175
  [ { RecordId = 0; ParentId = 1 };
174
176
  { RecordId = 1; ParentId = 0 } ]
175
- Assert.That((fun () -> buildTree input |> ignore), Throws.Exception)
177
+ (fun () -> buildTree input |> ignore) |> should throw typeof<Exception>
176
178
 
177
- [<Test>]
179
+ [<Fact>]
178
180
  let ``No root node`` () =
179
181
  let input = [ { RecordId = 1; ParentId = 0 } ]
180
- Assert.That((fun () -> buildTree input |> ignore), Throws.Exception)
182
+ (fun () -> buildTree input |> ignore) |> should throw typeof<Exception>
181
183
 
182
- [<Test>]
184
+ [<Fact>]
183
185
  let ``Non-continuous`` () =
184
186
  let input =
185
187
  [
@@ -188,9 +190,9 @@ let ``Non-continuous`` () =
188
190
  { RecordId = 1; ParentId = 0 };
189
191
  { RecordId = 0; ParentId = 0 }
190
192
  ]
191
- Assert.That((fun () -> buildTree input |> ignore), Throws.Exception)
193
+ (fun () -> buildTree input |> ignore) |> should throw typeof<Exception>
192
194
 
193
- [<Test>]
195
+ [<Fact>]
194
196
  let ``Cycle directly`` () =
195
197
  let input =
196
198
  [
@@ -202,9 +204,9 @@ let ``Cycle directly`` () =
202
204
  { RecordId = 0; ParentId = 0 };
203
205
  { RecordId = 6; ParentId = 3 }
204
206
  ]
205
- Assert.That((fun () -> buildTree input |> ignore), Throws.Exception)
207
+ (fun () -> buildTree input |> ignore) |> should throw typeof<Exception>
206
208
 
207
- [<Test>]
209
+ [<Fact>]
208
210
  let ``Cycle indirectly`` () =
209
211
  let input =
210
212
  [
@@ -216,9 +218,9 @@ let ``Cycle indirectly`` () =
216
218
  { RecordId = 0; ParentId = 0 };
217
219
  { RecordId = 6; ParentId = 3 }
218
220
  ]
219
- Assert.That((fun () -> buildTree input |> ignore), Throws.Exception)
221
+ (fun () -> buildTree input |> ignore) |> should throw typeof<Exception>
220
222
 
221
- [<Test>]
223
+ [<Fact>]
222
224
  let ``Higher id parent of lower id`` () =
223
225
  let input =
224
226
  [
@@ -226,4 +228,4 @@ let ``Higher id parent of lower id`` () =
226
228
  { RecordId = 2; ParentId = 0 };
227
229
  { RecordId = 1; ParentId = 2 }
228
230
  ]
229
- Assert.That((fun () -> buildTree input |> ignore), Throws.Exception)
231
+ (fun () -> buildTree input |> ignore) |> should throw typeof<Exception>
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,8 @@
1
+ module Triangle
2
+
3
+ type TriangleKind =
4
+ | Equilateral
5
+ | Isosceles
6
+ | Scalene
7
+
8
+ let kind x y z = 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="Triangle.fs" />
11
+ <Compile Include="TriangleTest.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,74 +1,62 @@
1
- module TriangleTest
1
+ module TriangleTest
2
2
 
3
- open NUnit.Framework
3
+ open Xunit
4
+ open FsUnit.Xunit
4
5
  open Triangle
5
6
  open System
6
7
 
7
- [<Test>]
8
+ [<Fact>]
8
9
  let ``Equilateral triangles have equal sides`` () =
9
- Assert.That(kind 2m 2m 2m, Is.EqualTo(TriangleKind.Equilateral))
10
+ kind 2m 2m 2m |> should equal TriangleKind.Equilateral
10
11
 
11
- [<Test>]
12
- [<Ignore("Remove to run test")>]
12
+ [<Fact(Skip = "Remove to run test")>]
13
13
  let ``Larger equilateral triangles also have equal sides`` () =
14
- Assert.That(kind 10m 10m 10m, Is.EqualTo(TriangleKind.Equilateral))
14
+ kind 10m 10m 10m |> should equal TriangleKind.Equilateral
15
15
 
16
- [<Test>]
17
- [<Ignore("Remove to run test")>]
16
+ [<Fact(Skip = "Remove to run test")>]
18
17
  let ``Isosceles triangles have last two sides equal`` () =
19
- Assert.That(kind 3m 4m 4m, Is.EqualTo(TriangleKind.Isosceles))
18
+ kind 3m 4m 4m |> should equal TriangleKind.Isosceles
20
19
 
21
- [<Test>]
22
- [<Ignore("Remove to run test")>]
20
+ [<Fact(Skip = "Remove to run test")>]
23
21
  let ``Isosceles triangles have first and last sides equal`` () =
24
- Assert.That(kind 4m 3m 4m, Is.EqualTo(TriangleKind.Isosceles))
22
+ kind 4m 3m 4m |> should equal TriangleKind.Isosceles
25
23
 
26
- [<Test>]
27
- [<Ignore("Remove to run test")>]
24
+ [<Fact(Skip = "Remove to run test")>]
28
25
  let ``Isosceles triangles have two first sides equal`` () =
29
- Assert.That(kind 4m 4m 3m, Is.EqualTo(TriangleKind.Isosceles))
26
+ kind 4m 4m 3m |> should equal TriangleKind.Isosceles
30
27
 
31
- [<Test>]
32
- [<Ignore("Remove to run test")>]
28
+ [<Fact(Skip = "Remove to run test")>]
33
29
  let ``Isosceles triangles have in fact exactly two sides equal`` () =
34
- Assert.That(kind 10m 10m 3m, Is.EqualTo(TriangleKind.Isosceles))
30
+ kind 10m 10m 3m |> should equal TriangleKind.Isosceles
35
31
 
36
- [<Test>]
37
- [<Ignore("Remove to run test")>]
32
+ [<Fact(Skip = "Remove to run test")>]
38
33
  let ``Scalene triangles have no equal sides`` () =
39
- Assert.That(kind 3m 4m 5m, Is.EqualTo(TriangleKind.Scalene))
34
+ kind 3m 4m 5m |> should equal TriangleKind.Scalene
40
35
 
41
- [<Test>]
42
- [<Ignore("Remove to run test")>]
36
+ [<Fact(Skip = "Remove to run test")>]
43
37
  let ``Scalene triangles have no equal sides at a larger scale too`` () =
44
- Assert.That(kind 10m 11m 12m, Is.EqualTo(TriangleKind.Scalene))
38
+ kind 10m 11m 12m |> should equal TriangleKind.Scalene
45
39
 
46
- [<Test>]
47
- [<Ignore("Remove to run test")>]
40
+ [<Fact(Skip = "Remove to run test")>]
48
41
  let ``Scalene triangles have no equal sides in descending order either`` () =
49
- Assert.That(kind 5m 4m 2m, Is.EqualTo(TriangleKind.Scalene))
42
+ kind 5m 4m 2m |> should equal TriangleKind.Scalene
50
43
 
51
- [<Test>]
52
- [<Ignore("Remove to run test")>]
44
+ [<Fact(Skip = "Remove to run test")>]
53
45
  let ``Very small triangles are legal`` () =
54
- Assert.That(kind 0.4m 0.6m 0.3m, Is.EqualTo(TriangleKind.Scalene))
46
+ kind 0.4m 0.6m 0.3m |> should equal TriangleKind.Scalene
55
47
 
56
- [<Test>]
57
- [<Ignore("Remove to run test")>]
48
+ [<Fact(Skip = "Remove to run test")>]
58
49
  let ``Triangles with no size are illegal`` () =
59
- Assert.That((fun () -> kind 0m 0m 0m |> ignore), Throws.InvalidOperationException)
50
+ (fun () -> kind 0m 0m 0m |> ignore) |> should throw typeof<InvalidOperationException>
60
51
 
61
- [<Test>]
62
- [<Ignore("Remove to run test")>]
52
+ [<Fact(Skip = "Remove to run test")>]
63
53
  let ``Triangles with negative sides are illegal`` () =
64
- Assert.That((fun () -> kind 3m 4m -5m |> ignore), Throws.InvalidOperationException)
54
+ (fun () -> kind 3m 4m -5m |> ignore) |> should throw typeof<InvalidOperationException>
65
55
 
66
- [<Test>]
67
- [<Ignore("Remove to run test")>]
56
+ [<Fact(Skip = "Remove to run test")>]
68
57
  let ``Triangles violating triangle inequality are illegal`` () =
69
- Assert.That((fun () -> kind 1m 1m 3m |> ignore), Throws.InvalidOperationException)
58
+ (fun () -> kind 1m 1m 3m |> ignore) |> should throw typeof<InvalidOperationException>
70
59
 
71
- [<Test>]
72
- [<Ignore("Remove to run test")>]
60
+ [<Fact(Skip = "Remove to run test")>]
73
61
  let ``Triangles violating triangle inequality are illegal 3`` () =
74
- Assert.That((fun () -> kind 7m 3m 2m |> ignore), Throws.InvalidOperationException)
62
+ (fun () -> kind 7m 3m 2m |> ignore) |> should throw typeof<InvalidOperationException>
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,7 @@
1
+ module TwelveDaysSong
2
+
3
+ let verse number = failwith "You need to implement this function."
4
+
5
+ let verses start stop = failwith "You need to implement this function."
6
+
7
+ let song: string = 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="TwelveDays.fs" />
11
+ <Compile Include="TwelveDaysTest.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,90 +1,78 @@
1
- module TwelveDaysTest
1
+ module TwelveDaysTest
2
2
 
3
- open NUnit.Framework
3
+ open Xunit
4
+ open FsUnit.Xunit
4
5
 
5
6
  open TwelveDaysSong
6
7
 
7
- [<Test>]
8
+ [<Fact>]
8
9
  let ``Return verse 1`` () =
9
10
  let expected = "On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.\n"
10
- Assert.That(verse 1, Is.EqualTo(expected))
11
+ verse 1 |> should equal expected
11
12
 
12
- [<Test>]
13
- [<Ignore("Remove to run test")>]
13
+ [<Fact(Skip = "Remove to run test")>]
14
14
  let ``Return verse 2`` () =
15
15
  let expected = "On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.\n"
16
- Assert.That(verse 2, Is.EqualTo(expected))
16
+ verse 2 |> should equal expected
17
17
 
18
- [<Test>]
19
- [<Ignore("Remove to run test")>]
18
+ [<Fact(Skip = "Remove to run test")>]
20
19
  let ``Return verse 3`` () =
21
20
  let expected = "On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"
22
- Assert.That(verse 3, Is.EqualTo(expected))
21
+ verse 3 |> should equal expected
23
22
 
24
- [<Test>]
25
- [<Ignore("Remove to run test")>]
23
+ [<Fact(Skip = "Remove to run test")>]
26
24
  let ``Return verse 4`` () =
27
25
  let expected = "On the fourth day of Christmas my true love gave to me, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"
28
- Assert.That(verse 4, Is.EqualTo(expected))
26
+ verse 4 |> should equal expected
29
27
 
30
- [<Test>]
31
- [<Ignore("Remove to run test")>]
28
+ [<Fact(Skip = "Remove to run test")>]
32
29
  let ``Return verse 5`` () =
33
30
  let expected = "On the fifth day of Christmas my true love gave to me, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"
34
- Assert.That(verse 5, Is.EqualTo(expected))
31
+ verse 5 |> should equal expected
35
32
 
36
- [<Test>]
37
- [<Ignore("Remove to run test")>]
33
+ [<Fact(Skip = "Remove to run test")>]
38
34
  let ``Return verse 6`` () =
39
35
  let expected = "On the sixth day of Christmas my true love gave to me, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"
40
- Assert.That(verse 6, Is.EqualTo(expected))
36
+ verse 6 |> should equal expected
41
37
 
42
- [<Test>]
43
- [<Ignore("Remove to run test")>]
38
+ [<Fact(Skip = "Remove to run test")>]
44
39
  let ``Return verse 7`` () =
45
40
  let expected = "On the seventh day of Christmas my true love gave to me, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"
46
- Assert.That(verse 7, Is.EqualTo(expected))
41
+ verse 7 |> should equal expected
47
42
 
48
- [<Test>]
49
- [<Ignore("Remove to run test")>]
43
+ [<Fact(Skip = "Remove to run test")>]
50
44
  let ``Return verse 8`` () =
51
45
  let expected = "On the eighth day of Christmas my true love gave to me, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"
52
- Assert.That(verse 8, Is.EqualTo(expected))
46
+ verse 8 |> should equal expected
53
47
 
54
- [<Test>]
55
- [<Ignore("Remove to run test")>]
48
+ [<Fact(Skip = "Remove to run test")>]
56
49
  let ``Return verse 9`` () =
57
50
  let expected = "On the ninth day of Christmas my true love gave to me, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"
58
- Assert.That(verse 9, Is.EqualTo(expected))
51
+ verse 9 |> should equal expected
59
52
 
60
- [<Test>]
61
- [<Ignore("Remove to run test")>]
53
+ [<Fact(Skip = "Remove to run test")>]
62
54
  let ``Return verse 10`` () =
63
55
  let expected = "On the tenth day of Christmas my true love gave to me, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"
64
- Assert.That(verse 10, Is.EqualTo(expected))
56
+ verse 10 |> should equal expected
65
57
 
66
- [<Test>]
67
- [<Ignore("Remove to run test")>]
58
+ [<Fact(Skip = "Remove to run test")>]
68
59
  let ``Return verse 11`` () =
69
60
  let expected = "On the eleventh day of Christmas my true love gave to me, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"
70
- Assert.That(verse 11, Is.EqualTo(expected))
61
+ verse 11 |> should equal expected
71
62
 
72
- [<Test>]
73
- [<Ignore("Remove to run test")>]
63
+ [<Fact(Skip = "Remove to run test")>]
74
64
  let ``Return verse 12`` () =
75
65
  let expected = "On the twelfth day of Christmas my true love gave to me, twelve Drummers Drumming, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"
76
- Assert.That(verse 12, Is.EqualTo(expected))
66
+ verse 12 |> should equal expected
77
67
 
78
- [<Test>]
79
- [<Ignore("Remove to run test")>]
68
+ [<Fact(Skip = "Remove to run test")>]
80
69
  let ``Return multiple verses`` () =
81
70
  let expected = "On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.\n\n" +
82
71
  "On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.\n\n" +
83
72
  "On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\n"
84
73
 
85
- Assert.That(verses 1 3, Is.EqualTo(expected))
74
+ verses 1 3 |> should equal expected
86
75
 
87
- [<Test>]
88
- [<Ignore("Remove to run test")>]
76
+ [<Fact(Skip = "Remove to run test")>]
89
77
  let ``Return entire song`` () =
90
- Assert.That(verses 1 12, Is.EqualTo(song))
78
+ verses 1 12 |> should equal song
@@ -0,0 +1 @@
1
+ module Program = let [<EntryPoint>] main _ = 0
@@ -0,0 +1,3 @@
1
+ module TwoBucket
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="TwoBucket.fs" />
11
+ <Compile Include="TwoBucketTest.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>