trackler 2.0.6.15 → 2.0.6.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (489) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/go/config.json +5 -1
  4. data/tracks/go/exercises/clock/clock_test.go +13 -8
  5. data/tracks/ruby/.github/ISSUE_TEMPLATE.md +43 -0
  6. data/tracks/ruby/.github/PULL_REQUEST_TEMPLATE.md +36 -0
  7. data/tracks/swift/.swiftlint.yml +8 -3
  8. data/tracks/swift/.travis.yml +26 -17
  9. data/tracks/swift/Dangerfile +0 -7
  10. data/tracks/swift/Package.swift +26 -0
  11. data/tracks/swift/README.md +1 -1
  12. data/tracks/swift/docs/ABOUT.md +9 -1
  13. data/tracks/swift/docs/INSTALLATION.md +10 -2
  14. data/tracks/swift/docs/TESTS.md +45 -80
  15. data/tracks/swift/docs/img/file-inspector.png +0 -0
  16. data/tracks/swift/docs/img/tests-fail.png +0 -0
  17. data/tracks/swift/docs/img/tests-pass.png +0 -0
  18. data/tracks/swift/docs/img/tests.png +0 -0
  19. data/tracks/swift/exercises/accumulate/.gitignore +4 -0
  20. data/tracks/swift/exercises/accumulate/Package.swift +5 -0
  21. data/tracks/swift/exercises/accumulate/{AccumulateExample.swift → Sources/AccumulateExample.swift} +0 -0
  22. data/tracks/swift/exercises/accumulate/Sources/deleteme.swift +1 -0
  23. data/tracks/swift/exercises/accumulate/{AccumulateTest.swift → Tests/AccumulateTests/AccumulateTests.swift} +13 -16
  24. data/tracks/swift/exercises/accumulate/Tests/LinuxMain.swift +6 -0
  25. data/tracks/swift/exercises/acronym/.gitignore +4 -0
  26. data/tracks/swift/exercises/acronym/Package.swift +5 -0
  27. data/tracks/swift/exercises/acronym/{AcronymExample.swift → Sources/AcronymExample.swift} +2 -0
  28. data/tracks/swift/exercises/acronym/Sources/deleteme.swift +1 -0
  29. data/tracks/swift/exercises/acronym/{AcronymTest.swift → Tests/AcronymTests/AcronymTests.swift} +13 -5
  30. data/tracks/swift/exercises/acronym/Tests/LinuxMain.swift +6 -0
  31. data/tracks/swift/exercises/all-your-base/.gitignore +4 -0
  32. data/tracks/swift/exercises/all-your-base/Package.swift +5 -0
  33. data/tracks/swift/exercises/all-your-base/{AllYourBaseExample.swift → Sources/AllYourBaseExample.swift} +0 -0
  34. data/tracks/swift/exercises/all-your-base/Sources/deleteme.swift +1 -0
  35. data/tracks/swift/exercises/all-your-base/{AllYourBaseTest.swift → Tests/AllYourBaseTests/AllYourBaseTests.swift} +27 -6
  36. data/tracks/swift/exercises/all-your-base/Tests/LinuxMain.swift +6 -0
  37. data/tracks/swift/exercises/allergies/.gitignore +4 -0
  38. data/tracks/swift/exercises/allergies/Package.swift +5 -0
  39. data/tracks/swift/exercises/allergies/{AllergiesExample.swift → Sources/AllergiesExample.swift} +0 -0
  40. data/tracks/swift/exercises/allergies/Sources/deleteme.swift +1 -0
  41. data/tracks/swift/exercises/allergies/{AllergiesTest.swift → Tests/AllergiesTests/AllergiesTests.swift} +12 -4
  42. data/tracks/swift/exercises/allergies/Tests/LinuxMain.swift +6 -0
  43. data/tracks/swift/exercises/anagram/.gitignore +4 -0
  44. data/tracks/swift/exercises/anagram/Package.swift +5 -0
  45. data/tracks/swift/exercises/anagram/{AnagramExample.swift → Sources/AnagramExample.swift} +0 -0
  46. data/tracks/swift/exercises/anagram/Sources/deleteme.swift +1 -0
  47. data/tracks/swift/exercises/anagram/{AnagramTest.swift → Tests/AnagramTests/AnagramTests.swift} +17 -4
  48. data/tracks/swift/exercises/anagram/Tests/LinuxMain.swift +6 -0
  49. data/tracks/swift/exercises/atbash-cipher/.gitignore +4 -0
  50. data/tracks/swift/exercises/atbash-cipher/Package.swift +5 -0
  51. data/tracks/swift/exercises/atbash-cipher/{AtbashExample.swift → Sources/AtbashExample.swift} +2 -0
  52. data/tracks/swift/exercises/atbash-cipher/Sources/deleteme.swift +1 -0
  53. data/tracks/swift/exercises/atbash-cipher/{AtbashTest.swift → Tests/AtbashTests/AtbashTests.swift} +15 -4
  54. data/tracks/swift/exercises/atbash-cipher/Tests/LinuxMain.swift +6 -0
  55. data/tracks/swift/exercises/beer-song/.gitignore +4 -0
  56. data/tracks/swift/exercises/beer-song/Package.swift +5 -0
  57. data/tracks/swift/exercises/beer-song/{BeerSongExample.swift → Sources/BeerSongExample.swift} +0 -0
  58. data/tracks/swift/exercises/beer-song/Sources/deleteme.swift +1 -0
  59. data/tracks/swift/exercises/beer-song/{BeerSongTest.swift → Tests/BeerSongTests/BeerSongTests.swift} +12 -4
  60. data/tracks/swift/exercises/beer-song/Tests/LinuxMain.swift +6 -0
  61. data/tracks/swift/exercises/binary-search-tree/.gitignore +4 -0
  62. data/tracks/swift/exercises/binary-search-tree/Package.swift +5 -0
  63. data/tracks/swift/exercises/binary-search-tree/{BinarySearchTreeExample.swift → Sources/BinarySearchTreeExample.swift} +0 -0
  64. data/tracks/swift/exercises/binary-search-tree/Sources/deleteme.swift +1 -0
  65. data/tracks/swift/exercises/binary-search-tree/{BinarySearchTreeTest.swift → Tests/BinarySearchTreeTests/BinarySearchTreeTests.swift} +16 -4
  66. data/tracks/swift/exercises/binary-search-tree/Tests/LinuxMain.swift +6 -0
  67. data/tracks/swift/exercises/binary-search/.gitignore +4 -0
  68. data/tracks/swift/exercises/binary-search/Package.swift +5 -0
  69. data/tracks/swift/exercises/binary-search/{BinarySearchExample.swift → Sources/BinarySearchExample.swift} +0 -0
  70. data/tracks/swift/exercises/binary-search/Sources/deleteme.swift +1 -0
  71. data/tracks/swift/exercises/binary-search/{BinarySearchTest.swift → Tests/BinarySearchTests/BinarySearchTests.swift} +15 -5
  72. data/tracks/swift/exercises/binary-search/Tests/LinuxMain.swift +6 -0
  73. data/tracks/swift/exercises/binary/.gitignore +4 -0
  74. data/tracks/swift/exercises/binary/Package.swift +5 -0
  75. data/tracks/swift/exercises/binary/{BinaryExample.swift → Sources/BinaryExample.swift} +0 -0
  76. data/tracks/swift/exercises/binary/Sources/deleteme.swift +1 -0
  77. data/tracks/swift/exercises/binary/{BinaryTest.swift → Tests/BinaryTests/BinaryTests.swift} +18 -4
  78. data/tracks/swift/exercises/binary/Tests/LinuxMain.swift +6 -0
  79. data/tracks/swift/exercises/bob/.gitignore +4 -0
  80. data/tracks/swift/exercises/bob/Package.swift +5 -0
  81. data/tracks/swift/exercises/bob/{BobExample.swift → Sources/BobExample.swift} +2 -0
  82. data/tracks/swift/exercises/bob/Sources/deleteme.swift +1 -0
  83. data/tracks/swift/exercises/bob/{BobTest.swift → Tests/BobTests/BobTests.swift} +24 -4
  84. data/tracks/swift/exercises/bob/Tests/LinuxMain.swift +6 -0
  85. data/tracks/swift/exercises/bowling/.gitignore +4 -0
  86. data/tracks/swift/exercises/bowling/Package.swift +5 -0
  87. data/tracks/swift/exercises/bowling/{BowlingExample.swift → Sources/BowlingExample.swift} +1 -1
  88. data/tracks/swift/exercises/bowling/Sources/deleteme.swift +1 -0
  89. data/tracks/swift/exercises/bowling/{BowlingTest.swift → Tests/BowlingTests/BowlingTests.swift} +31 -5
  90. data/tracks/swift/exercises/bowling/Tests/LinuxMain.swift +6 -0
  91. data/tracks/swift/exercises/bracket-push/.gitignore +4 -0
  92. data/tracks/swift/exercises/bracket-push/Package.swift +5 -0
  93. data/tracks/swift/exercises/bracket-push/{BracketPushExample.swift → Sources/BracketPushExample.swift} +3 -3
  94. data/tracks/swift/exercises/bracket-push/Sources/deleteme.swift +1 -0
  95. data/tracks/swift/exercises/bracket-push/{BracketPushTest.swift → Tests/BracketPushTests/BracketPushTests.swift} +21 -4
  96. data/tracks/swift/exercises/bracket-push/Tests/LinuxMain.swift +6 -0
  97. data/tracks/swift/exercises/clock/.gitignore +4 -0
  98. data/tracks/swift/exercises/clock/Package.swift +5 -0
  99. data/tracks/swift/exercises/clock/{ClockExample.swift → Sources/ClockExample.swift} +2 -0
  100. data/tracks/swift/exercises/clock/Sources/deleteme.swift +1 -0
  101. data/tracks/swift/exercises/clock/{ClockTest.swift → Tests/ClockTests/ClockTests.swift} +55 -4
  102. data/tracks/swift/exercises/clock/Tests/LinuxMain.swift +6 -0
  103. data/tracks/swift/exercises/crypto-square/.gitignore +4 -0
  104. data/tracks/swift/exercises/crypto-square/Package.swift +5 -0
  105. data/tracks/swift/exercises/crypto-square/{CryptoSquareExample.swift → Sources/CryptoSquareExample.swift} +2 -2
  106. data/tracks/swift/exercises/crypto-square/Sources/deleteme.swift +1 -0
  107. data/tracks/swift/exercises/crypto-square/{CryptoSquareTest.swift → Tests/CryptoSquareTests/CryptoSquareTests.swift} +23 -4
  108. data/tracks/swift/exercises/crypto-square/Tests/LinuxMain.swift +6 -0
  109. data/tracks/swift/exercises/custom-set/.gitignore +4 -0
  110. data/tracks/swift/exercises/custom-set/Package.swift +5 -0
  111. data/tracks/swift/exercises/custom-set/{CustomSetExample.swift → Sources/CustomSetExample.swift} +0 -0
  112. data/tracks/swift/exercises/custom-set/Sources/deleteme.swift +1 -0
  113. data/tracks/swift/exercises/custom-set/{CustomSetTest.swift → Tests/CustomSetTests/CustomSetTests.swift} +21 -5
  114. data/tracks/swift/exercises/custom-set/Tests/LinuxMain.swift +6 -0
  115. data/tracks/swift/exercises/difference-of-squares/.gitignore +4 -0
  116. data/tracks/swift/exercises/difference-of-squares/Package.swift +5 -0
  117. data/tracks/swift/exercises/difference-of-squares/{DifferenceOfSquaresExample.swift → Sources/DifferenceOfSquaresExample.swift} +0 -0
  118. data/tracks/swift/exercises/difference-of-squares/Sources/deleteme.swift +1 -0
  119. data/tracks/swift/exercises/difference-of-squares/{DifferenceOfSquaresTest.swift → Tests/DifferenceOfSquaresTests/DifferenceOfSquaresTests.swift} +16 -4
  120. data/tracks/swift/exercises/difference-of-squares/Tests/LinuxMain.swift +6 -0
  121. data/tracks/swift/exercises/dominoes/.gitignore +4 -0
  122. data/tracks/swift/exercises/dominoes/Package.swift +5 -0
  123. data/tracks/swift/exercises/dominoes/{DominoesExample.swift → Sources/DominoesExample.swift} +0 -0
  124. data/tracks/swift/exercises/dominoes/Sources/deleteme.swift +1 -0
  125. data/tracks/swift/exercises/dominoes/{DominoesTest.swift → Tests/DominoesTests/DominoesTests.swift} +19 -4
  126. data/tracks/swift/exercises/dominoes/Tests/LinuxMain.swift +6 -0
  127. data/tracks/swift/exercises/etl/.gitignore +4 -0
  128. data/tracks/swift/exercises/etl/Package.swift +5 -0
  129. data/tracks/swift/exercises/etl/{EtlExample.swift → Sources/EtlExample.swift} +0 -0
  130. data/tracks/swift/exercises/etl/Sources/deleteme.swift +1 -0
  131. data/tracks/swift/exercises/etl/Tests/EtlTests/EtlTests.swift +59 -0
  132. data/tracks/swift/exercises/etl/Tests/LinuxMain.swift +6 -0
  133. data/tracks/swift/exercises/flatten-array/.gitignore +4 -0
  134. data/tracks/swift/exercises/flatten-array/Package.swift +5 -0
  135. data/tracks/swift/exercises/flatten-array/{FlattenArrayExample.swift → Sources/FlattenArrayExample.swift} +0 -0
  136. data/tracks/swift/exercises/flatten-array/Sources/deleteme.swift +1 -0
  137. data/tracks/swift/exercises/flatten-array/{FlattenArrayTest.swift → Tests/FlattenArrayTests/FlattenArrayTests.swift} +14 -1
  138. data/tracks/swift/exercises/flatten-array/Tests/LinuxMain.swift +6 -0
  139. data/tracks/swift/exercises/food-chain/.gitignore +4 -0
  140. data/tracks/swift/exercises/food-chain/Package.swift +5 -0
  141. data/tracks/swift/exercises/food-chain/{FoodChainExample.swift → Sources/FoodChainExample.swift} +0 -0
  142. data/tracks/swift/exercises/food-chain/Sources/deleteme.swift +1 -0
  143. data/tracks/swift/exercises/food-chain/{FoodChainTest.swift → Tests/FoodChainTests/FoodChainTests.swift} +13 -4
  144. data/tracks/swift/exercises/food-chain/Tests/LinuxMain.swift +6 -0
  145. data/tracks/swift/exercises/gigasecond/.gitignore +4 -0
  146. data/tracks/swift/exercises/gigasecond/Package.swift +5 -0
  147. data/tracks/swift/exercises/gigasecond/{GigasecondExample.swift → Sources/GigasecondExample.swift} +1 -1
  148. data/tracks/swift/exercises/gigasecond/Sources/deleteme.swift +1 -0
  149. data/tracks/swift/exercises/gigasecond/{GigasecondTest.swift → Tests/GigasecondTests/GigasecondTests.swift} +14 -4
  150. data/tracks/swift/exercises/gigasecond/Tests/LinuxMain.swift +6 -0
  151. data/tracks/swift/exercises/grade-school/.gitignore +4 -0
  152. data/tracks/swift/exercises/grade-school/Package.swift +5 -0
  153. data/tracks/swift/exercises/grade-school/{GradeSchoolExample.swift → Sources/GradeSchoolExample.swift} +0 -0
  154. data/tracks/swift/exercises/grade-school/Sources/deleteme.swift +1 -0
  155. data/tracks/swift/exercises/grade-school/{GradeSchoolTest.swift → Tests/GradeSchoolTests/GradeSchoolTests.swift} +17 -13
  156. data/tracks/swift/exercises/grade-school/Tests/LinuxMain.swift +6 -0
  157. data/tracks/swift/exercises/grains/.gitignore +4 -0
  158. data/tracks/swift/exercises/grains/Package.swift +5 -0
  159. data/tracks/swift/exercises/grains/{GrainsExample.swift → Sources/GrainsExample.swift} +1 -1
  160. data/tracks/swift/exercises/grains/Sources/deleteme.swift +1 -0
  161. data/tracks/swift/exercises/grains/{GrainsTest.swift → Tests/GrainsTests/GrainsTests.swift} +19 -5
  162. data/tracks/swift/exercises/grains/Tests/LinuxMain.swift +6 -0
  163. data/tracks/swift/exercises/hamming/.gitignore +4 -0
  164. data/tracks/swift/exercises/hamming/Package.swift +5 -0
  165. data/tracks/swift/exercises/hamming/{HammingExample.swift → Sources/HammingExample.swift} +0 -0
  166. data/tracks/swift/exercises/hamming/Sources/deleteme.swift +1 -0
  167. data/tracks/swift/exercises/hamming/{HammingTest.swift → Tests/HammingTests/HammingTests.swift} +15 -4
  168. data/tracks/swift/exercises/hamming/Tests/LinuxMain.swift +6 -0
  169. data/tracks/swift/exercises/hello-world/.gitignore +4 -0
  170. data/tracks/swift/exercises/hello-world/Package.swift +5 -0
  171. data/tracks/swift/exercises/hello-world/{HelloWorldExample.swift → Sources/HelloWorldExample.swift} +0 -0
  172. data/tracks/swift/exercises/hello-world/Sources/deleteme.swift +1 -0
  173. data/tracks/swift/exercises/hello-world/{helloWorldTest.swift → Tests/HelloWorldTests/HelloWorldTests.swift} +11 -4
  174. data/tracks/swift/exercises/hello-world/Tests/LinuxMain.swift +6 -0
  175. data/tracks/swift/exercises/hexadecimal/.gitignore +4 -0
  176. data/tracks/swift/exercises/hexadecimal/Package.swift +5 -0
  177. data/tracks/swift/exercises/hexadecimal/{HexadecimalExample.swift → Sources/HexadecimalExample.swift} +16 -16
  178. data/tracks/swift/exercises/hexadecimal/Sources/deleteme.swift +1 -0
  179. data/tracks/swift/exercises/hexadecimal/{HexadecimalTest.swift → Tests/HexadecimalTests/HexadecimalTests.swift} +17 -4
  180. data/tracks/swift/exercises/hexadecimal/Tests/LinuxMain.swift +6 -0
  181. data/tracks/swift/exercises/house/.gitignore +4 -0
  182. data/tracks/swift/exercises/house/Package.swift +5 -0
  183. data/tracks/swift/exercises/house/{HouseExample.swift → Sources/HouseExample.swift} +0 -0
  184. data/tracks/swift/exercises/house/Sources/deleteme.swift +1 -0
  185. data/tracks/swift/exercises/house/{HouseTest.swift → Tests/HouseTests/HouseTests.swift} +9 -4
  186. data/tracks/swift/exercises/house/Tests/LinuxMain.swift +6 -0
  187. data/tracks/swift/exercises/isogram/.gitignore +4 -0
  188. data/tracks/swift/exercises/isogram/Package.swift +5 -0
  189. data/tracks/swift/exercises/isogram/{IsogramExample.swift → Sources/IsogramExample.swift} +0 -0
  190. data/tracks/swift/exercises/isogram/Sources/deleteme.swift +1 -0
  191. data/tracks/swift/exercises/isogram/{IsogramTest.swift → Tests/IsogramTests/IsogramTests.swift} +16 -4
  192. data/tracks/swift/exercises/isogram/Tests/LinuxMain.swift +6 -0
  193. data/tracks/swift/exercises/kindergarten-garden/.gitignore +4 -0
  194. data/tracks/swift/exercises/kindergarten-garden/Package.swift +5 -0
  195. data/tracks/swift/exercises/kindergarten-garden/{KindergartenGardenExample.swift → Sources/KindergartenGardenExample.swift} +1 -1
  196. data/tracks/swift/exercises/kindergarten-garden/Sources/deleteme.swift +1 -0
  197. data/tracks/swift/exercises/kindergarten-garden/{KindergartenGardenTest.swift → Tests/KindergartenGardenTests/KindergartenGardenTests.swift} +28 -5
  198. data/tracks/swift/exercises/kindergarten-garden/Tests/LinuxMain.swift +6 -0
  199. data/tracks/swift/exercises/largest-series-product/.gitignore +4 -0
  200. data/tracks/swift/exercises/largest-series-product/Package.swift +5 -0
  201. data/tracks/swift/exercises/largest-series-product/{LargestSeriesProductExample.swift → Sources/LargestSeriesProductExample.swift} +0 -0
  202. data/tracks/swift/exercises/largest-series-product/Sources/deleteme.swift +1 -0
  203. data/tracks/swift/exercises/largest-series-product/{LargestSeriesProductTest.swift → Tests/LargestSeriesProductTests/LargestSeriesProductTests.swift} +24 -4
  204. data/tracks/swift/exercises/largest-series-product/Tests/LinuxMain.swift +6 -0
  205. data/tracks/swift/exercises/leap/.gitignore +4 -0
  206. data/tracks/swift/exercises/leap/Package.swift +5 -0
  207. data/tracks/swift/exercises/leap/{LeapExample.swift → Sources/LeapExample.swift} +0 -0
  208. data/tracks/swift/exercises/leap/Sources/deleteme.swift +1 -0
  209. data/tracks/swift/exercises/leap/{LeapTest.swift → Tests/LeapTests/LeapTests.swift} +11 -4
  210. data/tracks/swift/exercises/leap/Tests/LinuxMain.swift +6 -0
  211. data/tracks/swift/exercises/linked-list/.gitignore +4 -0
  212. data/tracks/swift/exercises/linked-list/Package.swift +5 -0
  213. data/tracks/swift/exercises/linked-list/{LinkedListExample.swift → Sources/LinkedListExample.swift} +3 -3
  214. data/tracks/swift/exercises/linked-list/Sources/deleteme.swift +1 -0
  215. data/tracks/swift/exercises/linked-list/{LinkedListTest.swift → Tests/LinkedListTests/LinkedListTests.swift} +12 -4
  216. data/tracks/swift/exercises/linked-list/Tests/LinuxMain.swift +6 -0
  217. data/tracks/swift/exercises/luhn/.gitignore +4 -0
  218. data/tracks/swift/exercises/luhn/Package.swift +5 -0
  219. data/tracks/swift/exercises/luhn/{LuhnExample.swift → Sources/LuhnExample.swift} +1 -1
  220. data/tracks/swift/exercises/luhn/Sources/deleteme.swift +1 -0
  221. data/tracks/swift/exercises/luhn/Tests/LinuxMain.swift +6 -0
  222. data/tracks/swift/exercises/luhn/{LuhnTest.swift → Tests/LuhnTests/LuhnTests.swift} +16 -4
  223. data/tracks/swift/exercises/matrix/.gitignore +4 -0
  224. data/tracks/swift/exercises/matrix/Package.swift +5 -0
  225. data/tracks/swift/exercises/matrix/{MatrixExample.swift → Sources/MatrixExample.swift} +0 -0
  226. data/tracks/swift/exercises/matrix/Sources/deleteme.swift +1 -0
  227. data/tracks/swift/exercises/matrix/Tests/LinuxMain.swift +6 -0
  228. data/tracks/swift/exercises/matrix/{MatrixTest.swift → Tests/MatrixTests/MatrixTests.swift} +13 -5
  229. data/tracks/swift/exercises/meetup/.gitignore +4 -0
  230. data/tracks/swift/exercises/meetup/Package.swift +5 -0
  231. data/tracks/swift/exercises/meetup/{MeetupExample.swift → Sources/MeetupExample.swift} +1 -1
  232. data/tracks/swift/exercises/meetup/Sources/deleteme.swift +1 -0
  233. data/tracks/swift/exercises/meetup/Tests/LinuxMain.swift +6 -0
  234. data/tracks/swift/exercises/meetup/{MeetupTest.swift → Tests/MeetupTests/MeetupTests.swift} +17 -5
  235. data/tracks/swift/exercises/minesweeper/.gitignore +4 -0
  236. data/tracks/swift/exercises/minesweeper/Package.swift +5 -0
  237. data/tracks/swift/exercises/minesweeper/{MinesweeperExample.swift → Sources/MinesweeperExample.swift} +8 -2
  238. data/tracks/swift/exercises/minesweeper/Sources/deleteme.swift +1 -0
  239. data/tracks/swift/exercises/minesweeper/Tests/LinuxMain.swift +6 -0
  240. data/tracks/swift/exercises/minesweeper/{MinesweeperTest.swift → Tests/MinesweeperTests/MinesweeperTests.swift} +19 -6
  241. data/tracks/swift/exercises/nth-prime/.gitignore +4 -0
  242. data/tracks/swift/exercises/nth-prime/Package.swift +5 -0
  243. data/tracks/swift/exercises/nth-prime/{NthPrimeExample.swift → Sources/NthPrimeExample.swift} +5 -1
  244. data/tracks/swift/exercises/nth-prime/Sources/deleteme.swift +1 -0
  245. data/tracks/swift/exercises/nth-prime/Tests/LinuxMain.swift +6 -0
  246. data/tracks/swift/exercises/nth-prime/Tests/NthPrimeTests/NthPrimeTests.swift +34 -0
  247. data/tracks/swift/exercises/nucleotide-count/.gitignore +4 -0
  248. data/tracks/swift/exercises/nucleotide-count/Package.swift +5 -0
  249. data/tracks/swift/exercises/nucleotide-count/{NucleotideCountExample.swift → Sources/NucleotideCountExample.swift} +1 -1
  250. data/tracks/swift/exercises/nucleotide-count/Sources/deleteme.swift +1 -0
  251. data/tracks/swift/exercises/nucleotide-count/Tests/LinuxMain.swift +6 -0
  252. data/tracks/swift/exercises/nucleotide-count/{NucleotideCountTest.swift → Tests/NucleotideCountTests/NucleotideCountTests.swift} +17 -5
  253. data/tracks/swift/exercises/ocr-numbers/.gitignore +4 -0
  254. data/tracks/swift/exercises/ocr-numbers/Package.swift +5 -0
  255. data/tracks/swift/exercises/ocr-numbers/{OcrNumbersExample.swift → Sources/OcrNumbersExample.swift} +0 -0
  256. data/tracks/swift/exercises/ocr-numbers/Sources/deleteme.swift +1 -0
  257. data/tracks/swift/exercises/ocr-numbers/Tests/LinuxMain.swift +6 -0
  258. data/tracks/swift/exercises/ocr-numbers/{OcrNumbersTest.swift → Tests/OcrNumbersTests/OcrNumbersTests.swift} +25 -5
  259. data/tracks/swift/exercises/octal/.gitignore +4 -0
  260. data/tracks/swift/exercises/octal/Package.swift +5 -0
  261. data/tracks/swift/exercises/octal/{OctalExample.swift → Sources/OctalExample.swift} +5 -1
  262. data/tracks/swift/exercises/octal/Sources/deleteme.swift +1 -0
  263. data/tracks/swift/exercises/octal/Tests/LinuxMain.swift +6 -0
  264. data/tracks/swift/exercises/octal/{OctalTest.swift → Tests/OctalTests/OctalTests.swift} +22 -5
  265. data/tracks/swift/exercises/palindrome-products/.gitignore +4 -0
  266. data/tracks/swift/exercises/palindrome-products/Package.swift +5 -0
  267. data/tracks/swift/exercises/palindrome-products/{PalindromeProductsExample.swift → Sources/PalindromeProductsExample.swift} +1 -0
  268. data/tracks/swift/exercises/palindrome-products/Sources/deleteme.swift +1 -0
  269. data/tracks/swift/exercises/palindrome-products/Tests/LinuxMain.swift +6 -0
  270. data/tracks/swift/exercises/palindrome-products/{PalindromeProductsTest.swift → Tests/PalindromeProductsTests/PalindromeProductsTests.swift} +12 -5
  271. data/tracks/swift/exercises/pangram/.gitignore +4 -0
  272. data/tracks/swift/exercises/pangram/Package.swift +5 -0
  273. data/tracks/swift/exercises/pangram/{PangramExample.swift → Sources/PangramExample.swift} +0 -0
  274. data/tracks/swift/exercises/pangram/Sources/deleteme.swift +1 -0
  275. data/tracks/swift/exercises/pangram/Tests/LinuxMain.swift +6 -0
  276. data/tracks/swift/exercises/pangram/{PangramTest.swift → Tests/PangramTests/PangramTests.swift} +16 -5
  277. data/tracks/swift/exercises/pascals-triangle/.gitignore +4 -0
  278. data/tracks/swift/exercises/pascals-triangle/Package.swift +5 -0
  279. data/tracks/swift/exercises/pascals-triangle/{PascalsTriangleExample.swift → Sources/PascalsTriangleExample.swift} +0 -0
  280. data/tracks/swift/exercises/pascals-triangle/Sources/deleteme.swift +1 -0
  281. data/tracks/swift/exercises/pascals-triangle/Tests/LinuxMain.swift +6 -0
  282. data/tracks/swift/exercises/pascals-triangle/{PascalsTriangleTest.swift → Tests/PascalsTriangleTests/PascalsTriangleTests.swift} +13 -5
  283. data/tracks/swift/exercises/perfect-numbers/.gitignore +4 -0
  284. data/tracks/swift/exercises/perfect-numbers/Package.swift +5 -0
  285. data/tracks/swift/exercises/perfect-numbers/{PerfectNumbersExample.swift → Sources/PerfectNumbersExample.swift} +0 -0
  286. data/tracks/swift/exercises/perfect-numbers/Sources/deleteme.swift +1 -0
  287. data/tracks/swift/exercises/perfect-numbers/Tests/LinuxMain.swift +6 -0
  288. data/tracks/swift/exercises/perfect-numbers/{PerfectNumbersTest.swift → Tests/PerfectNumbersTests/PerfectNumbersTests.swift} +11 -4
  289. data/tracks/swift/exercises/phone-number/.gitignore +4 -0
  290. data/tracks/swift/exercises/phone-number/Package.swift +5 -0
  291. data/tracks/swift/exercises/phone-number/{PhoneNumberExample.swift → Sources/PhoneNumberExample.swift} +2 -0
  292. data/tracks/swift/exercises/phone-number/Sources/deleteme.swift +1 -0
  293. data/tracks/swift/exercises/phone-number/Tests/LinuxMain.swift +6 -0
  294. data/tracks/swift/exercises/phone-number/{PhoneNumberTest.swift → Tests/PhoneNumberTests/PhoneNumberTests.swift} +16 -5
  295. data/tracks/swift/exercises/pig-latin/.gitignore +4 -0
  296. data/tracks/swift/exercises/pig-latin/Package.swift +5 -0
  297. data/tracks/swift/exercises/pig-latin/{PigLatinExample.swift → Sources/PigLatinExample.swift} +2 -0
  298. data/tracks/swift/exercises/pig-latin/Sources/deleteme.swift +1 -0
  299. data/tracks/swift/exercises/pig-latin/Tests/LinuxMain.swift +6 -0
  300. data/tracks/swift/exercises/pig-latin/{PigLatinTest.swift → Tests/PigLatinTests/PigLatinTests.swift} +22 -4
  301. data/tracks/swift/exercises/poker/.gitignore +4 -0
  302. data/tracks/swift/exercises/poker/Package.swift +5 -0
  303. data/tracks/swift/exercises/poker/{PokerExample.swift → Sources/PokerExample.swift} +3 -1
  304. data/tracks/swift/exercises/poker/Sources/deleteme.swift +1 -0
  305. data/tracks/swift/exercises/poker/Tests/LinuxMain.swift +6 -0
  306. data/tracks/swift/exercises/poker/{PokerTest.swift → Tests/PokerTests/PokerTests.swift} +10 -5
  307. data/tracks/swift/exercises/prime-factors/.gitignore +4 -0
  308. data/tracks/swift/exercises/prime-factors/Package.swift +5 -0
  309. data/tracks/swift/exercises/prime-factors/{PrimeFactorsExample.swift → Sources/PrimeFactorsExample.swift} +0 -0
  310. data/tracks/swift/exercises/prime-factors/Sources/deleteme.swift +1 -0
  311. data/tracks/swift/exercises/prime-factors/Tests/LinuxMain.swift +6 -0
  312. data/tracks/swift/exercises/prime-factors/{PrimeFactorsTest.swift → Tests/PrimeFactorsTests/PrimeFactorsTests.swift} +18 -5
  313. data/tracks/swift/exercises/pythagorean-triplet/.gitignore +4 -0
  314. data/tracks/swift/exercises/pythagorean-triplet/Package.swift +5 -0
  315. data/tracks/swift/exercises/pythagorean-triplet/{PythagoreanTripletExample.swift → Sources/PythagoreanTripletExample.swift} +5 -1
  316. data/tracks/swift/exercises/pythagorean-triplet/Sources/deleteme.swift +1 -0
  317. data/tracks/swift/exercises/pythagorean-triplet/Tests/LinuxMain.swift +6 -0
  318. data/tracks/swift/exercises/pythagorean-triplet/{PythagoreanTripletTest.swift → Tests/PythagoreanTripletTests/PythagoreanTripletTests.swift} +15 -4
  319. data/tracks/swift/exercises/queen-attack/.gitignore +4 -0
  320. data/tracks/swift/exercises/queen-attack/Package.swift +5 -0
  321. data/tracks/swift/exercises/queen-attack/{QueenAttackExample.swift → Sources/QueenAttackExample.swift} +0 -0
  322. data/tracks/swift/exercises/queen-attack/Sources/deleteme.swift +1 -0
  323. data/tracks/swift/exercises/queen-attack/Tests/LinuxMain.swift +6 -0
  324. data/tracks/swift/exercises/queen-attack/{QueenAttackTest.swift → Tests/QueenAttackTests/QueenAttackTests.swift} +24 -6
  325. data/tracks/swift/exercises/raindrops/.gitignore +4 -0
  326. data/tracks/swift/exercises/raindrops/Package.swift +5 -0
  327. data/tracks/swift/exercises/raindrops/{RaindropsExample.swift → Sources/RaindropsExample.swift} +0 -0
  328. data/tracks/swift/exercises/raindrops/Sources/deleteme.swift +1 -0
  329. data/tracks/swift/exercises/raindrops/Tests/LinuxMain.swift +6 -0
  330. data/tracks/swift/exercises/raindrops/{RaindropsTest.swift → Tests/RaindropsTests/RaindropsTests.swift} +23 -5
  331. data/tracks/swift/exercises/rna-transcription/.gitignore +4 -0
  332. data/tracks/swift/exercises/rna-transcription/Package.swift +5 -0
  333. data/tracks/swift/exercises/rna-transcription/{RnaTranscriptionExample.swift → Sources/RnaTranscriptionExample.swift} +0 -0
  334. data/tracks/swift/exercises/rna-transcription/Sources/deleteme.swift +1 -0
  335. data/tracks/swift/exercises/rna-transcription/Tests/LinuxMain.swift +6 -0
  336. data/tracks/swift/exercises/rna-transcription/Tests/RnaTranscriptionTests/RnaTranscriptionTests.swift +34 -0
  337. data/tracks/swift/exercises/robot-name/.gitignore +4 -0
  338. data/tracks/swift/exercises/robot-name/Package.swift +5 -0
  339. data/tracks/swift/exercises/robot-name/{RobotNameExample.swift → Sources/RobotNameExample.swift} +9 -4
  340. data/tracks/swift/exercises/robot-name/Sources/deleteme.swift +1 -0
  341. data/tracks/swift/exercises/robot-name/Tests/LinuxMain.swift +6 -0
  342. data/tracks/swift/exercises/robot-name/{RobotNameTest.swift → Tests/RobotNameTests/RobotNameTests.swift} +19 -5
  343. data/tracks/swift/exercises/robot-simulator/.gitignore +4 -0
  344. data/tracks/swift/exercises/robot-simulator/Package.swift +5 -0
  345. data/tracks/swift/exercises/robot-simulator/{RobotSimulatorExample.swift → Sources/RobotSimulatorExample.swift} +0 -0
  346. data/tracks/swift/exercises/robot-simulator/Sources/deleteme.swift +1 -0
  347. data/tracks/swift/exercises/robot-simulator/Tests/LinuxMain.swift +6 -0
  348. data/tracks/swift/exercises/robot-simulator/{RobotSimulatorTest.swift → Tests/RobotSimulatorTests/RobotSimulatorTests.swift} +31 -5
  349. data/tracks/swift/exercises/roman-numerals/.gitignore +4 -0
  350. data/tracks/swift/exercises/roman-numerals/Package.swift +5 -0
  351. data/tracks/swift/exercises/roman-numerals/{RomanNumeralsExample.swift → Sources/RomanNumeralsExample.swift} +0 -0
  352. data/tracks/swift/exercises/roman-numerals/Sources/deleteme.swift +1 -0
  353. data/tracks/swift/exercises/roman-numerals/Tests/LinuxMain.swift +6 -0
  354. data/tracks/swift/exercises/roman-numerals/{RomanNumeralsTest.swift → Tests/RomanNumeralsTests/RomanNumeralsTests.swift} +25 -5
  355. data/tracks/swift/exercises/run-length-encoding/.gitignore +4 -0
  356. data/tracks/swift/exercises/run-length-encoding/Package.swift +5 -0
  357. data/tracks/swift/exercises/run-length-encoding/{RunLengthEncodingExample.swift → Sources/RunLengthEncodingExample.swift} +0 -0
  358. data/tracks/swift/exercises/run-length-encoding/Sources/deleteme.swift +1 -0
  359. data/tracks/swift/exercises/run-length-encoding/Tests/LinuxMain.swift +6 -0
  360. data/tracks/swift/exercises/run-length-encoding/{RunLengthEncodingTest.swift → Tests/RunLengthEncodingTests/RunLengthEncodingTests.swift} +15 -5
  361. data/tracks/swift/exercises/saddle-points/.gitignore +4 -0
  362. data/tracks/swift/exercises/saddle-points/Package.swift +5 -0
  363. data/tracks/swift/exercises/saddle-points/{SaddlePointsExample.swift → Sources/SaddlePointsExample.swift} +0 -0
  364. data/tracks/swift/exercises/saddle-points/Sources/deleteme.swift +1 -0
  365. data/tracks/swift/exercises/saddle-points/Tests/LinuxMain.swift +6 -0
  366. data/tracks/swift/exercises/saddle-points/{SaddlePointsTest.swift → Tests/SaddlePointsTests/SaddlePointsTests.swift} +17 -5
  367. data/tracks/swift/exercises/scrabble-score/.gitignore +4 -0
  368. data/tracks/swift/exercises/scrabble-score/Package.swift +5 -0
  369. data/tracks/swift/exercises/scrabble-score/{ScrabbleScoreExample.swift → Sources/ScrabbleScoreExample.swift} +2 -0
  370. data/tracks/swift/exercises/scrabble-score/Sources/deleteme.swift +1 -0
  371. data/tracks/swift/exercises/scrabble-score/Tests/LinuxMain.swift +6 -0
  372. data/tracks/swift/exercises/scrabble-score/{ScrabbleScoreTest.swift → Tests/ScrabbleScoreTests/ScrabbleScoreTests.swift} +16 -5
  373. data/tracks/swift/exercises/secret-handshake/.gitignore +4 -0
  374. data/tracks/swift/exercises/secret-handshake/Package.swift +5 -0
  375. data/tracks/swift/exercises/secret-handshake/{SecretHandshakeExample.swift → Sources/SecretHandshakeExample.swift} +0 -0
  376. data/tracks/swift/exercises/secret-handshake/Sources/deleteme.swift +1 -0
  377. data/tracks/swift/exercises/secret-handshake/Tests/LinuxMain.swift +6 -0
  378. data/tracks/swift/exercises/secret-handshake/{SecretHandshakeTest.swift → Tests/SecretHandshakeTests/SecretHandshakeTests.swift} +15 -5
  379. data/tracks/swift/exercises/series/.gitignore +4 -0
  380. data/tracks/swift/exercises/series/Package.swift +5 -0
  381. data/tracks/swift/exercises/series/{SeriesExample.swift → Sources/SeriesExample.swift} +0 -0
  382. data/tracks/swift/exercises/series/Sources/deleteme.swift +1 -0
  383. data/tracks/swift/exercises/series/Tests/LinuxMain.swift +6 -0
  384. data/tracks/swift/exercises/series/{SeriesTest.swift → Tests/SeriesTests/SeriesTests.swift} +21 -5
  385. data/tracks/swift/exercises/sieve/.gitignore +4 -0
  386. data/tracks/swift/exercises/sieve/Package.swift +5 -0
  387. data/tracks/swift/exercises/sieve/{SieveExample.swift → Sources/SieveExample.swift} +0 -0
  388. data/tracks/swift/exercises/sieve/Sources/deleteme.swift +1 -0
  389. data/tracks/swift/exercises/sieve/Tests/LinuxMain.swift +6 -0
  390. data/tracks/swift/exercises/sieve/{SieveTest.swift → Tests/SieveTests/SieveTests.swift} +9 -5
  391. data/tracks/swift/exercises/simple-cipher/.gitignore +4 -0
  392. data/tracks/swift/exercises/simple-cipher/Package.swift +5 -0
  393. data/tracks/swift/exercises/simple-cipher/{SimpleCipherExample.swift → Sources/SimpleCipherExample.swift} +14 -3
  394. data/tracks/swift/exercises/simple-cipher/Sources/deleteme.swift +1 -0
  395. data/tracks/swift/exercises/simple-cipher/Tests/LinuxMain.swift +6 -0
  396. data/tracks/swift/exercises/simple-cipher/{SimpleCipherTest.swift → Tests/SimpleCipherTests/SimpleCipherTests.swift} +22 -5
  397. data/tracks/swift/exercises/simple-linked-list/.gitignore +4 -0
  398. data/tracks/swift/exercises/simple-linked-list/Package.swift +5 -0
  399. data/tracks/swift/exercises/simple-linked-list/{SimpleLinkedListExample.swift → Sources/SimpleLinkedListExample.swift} +2 -2
  400. data/tracks/swift/exercises/simple-linked-list/Sources/deleteme.swift +1 -0
  401. data/tracks/swift/exercises/simple-linked-list/Tests/LinuxMain.swift +6 -0
  402. data/tracks/swift/exercises/simple-linked-list/{SimpleLinkedListTest.swift → Tests/SimpleLinkedListTests/SimpleLinkedListTests.swift} +16 -6
  403. data/tracks/swift/exercises/space-age/.gitignore +4 -0
  404. data/tracks/swift/exercises/space-age/Package.swift +5 -0
  405. data/tracks/swift/exercises/space-age/{SpaceAgeExample.swift → Sources/SpaceAgeExample.swift} +5 -1
  406. data/tracks/swift/exercises/space-age/Sources/deleteme.swift +1 -0
  407. data/tracks/swift/exercises/space-age/Tests/LinuxMain.swift +6 -0
  408. data/tracks/swift/exercises/space-age/{SpaceAgeTest.swift → Tests/SpaceAgeTests/SpaceAgeTests.swift} +17 -5
  409. data/tracks/swift/exercises/strain/.gitignore +4 -0
  410. data/tracks/swift/exercises/strain/Package.swift +5 -0
  411. data/tracks/swift/exercises/strain/{StrainExample.swift → Sources/StrainExample.swift} +0 -0
  412. data/tracks/swift/exercises/strain/Sources/deleteme.swift +1 -0
  413. data/tracks/swift/exercises/strain/Tests/LinuxMain.swift +6 -0
  414. data/tracks/swift/exercises/strain/{StrainTest.swift → Tests/StrainTests/StrainTests.swift} +20 -5
  415. data/tracks/swift/exercises/sublist/.gitignore +4 -0
  416. data/tracks/swift/exercises/sublist/Package.swift +5 -0
  417. data/tracks/swift/exercises/sublist/{SublistExample.swift → Sources/SublistExample.swift} +0 -0
  418. data/tracks/swift/exercises/sublist/Sources/deleteme.swift +1 -0
  419. data/tracks/swift/exercises/sublist/Tests/LinuxMain.swift +6 -0
  420. data/tracks/swift/exercises/sublist/{SubListTest.swift → Tests/SublistTests/SublistTests.swift} +24 -2
  421. data/tracks/swift/exercises/sum-of-multiples/.gitignore +4 -0
  422. data/tracks/swift/exercises/sum-of-multiples/Package.swift +5 -0
  423. data/tracks/swift/exercises/sum-of-multiples/{SumOfMultiplesExample.swift → Sources/SumOfMultiplesExample.swift} +0 -0
  424. data/tracks/swift/exercises/sum-of-multiples/Sources/deleteme.swift +1 -0
  425. data/tracks/swift/exercises/sum-of-multiples/Tests/LinuxMain.swift +6 -0
  426. data/tracks/swift/exercises/sum-of-multiples/{SumOfMultiplesTest.swift → Tests/SumOfMultiplesTests/SumOfMultiplesTests.swift} +18 -5
  427. data/tracks/swift/exercises/tournament/.gitignore +4 -0
  428. data/tracks/swift/exercises/tournament/Package.swift +5 -0
  429. data/tracks/swift/exercises/tournament/{TournamentExample.swift → Sources/TournamentExample.swift} +8 -9
  430. data/tracks/swift/exercises/tournament/Sources/deleteme.swift +1 -0
  431. data/tracks/swift/exercises/tournament/Tests/LinuxMain.swift +6 -0
  432. data/tracks/swift/exercises/tournament/{TournamentTest.swift → Tests/TournamentTests/TournamentTests.swift} +12 -8
  433. data/tracks/swift/exercises/transpose/.gitignore +4 -0
  434. data/tracks/swift/exercises/transpose/Package.swift +5 -0
  435. data/tracks/swift/exercises/transpose/{TransposeExample.swift → Sources/TransposeExample.swift} +2 -0
  436. data/tracks/swift/exercises/transpose/Sources/deleteme.swift +1 -0
  437. data/tracks/swift/exercises/transpose/Tests/LinuxMain.swift +6 -0
  438. data/tracks/swift/exercises/transpose/{TransposeTest.swift → Tests/TransposeTests/TransposeTests.swift} +18 -5
  439. data/tracks/swift/exercises/triangle/.gitignore +4 -0
  440. data/tracks/swift/exercises/triangle/Package.swift +5 -0
  441. data/tracks/swift/exercises/triangle/{TriangleExample.swift → Sources/TriangleExample.swift} +0 -0
  442. data/tracks/swift/exercises/triangle/Sources/deleteme.swift +1 -0
  443. data/tracks/swift/exercises/triangle/Tests/LinuxMain.swift +6 -0
  444. data/tracks/swift/exercises/triangle/{TriangleTest.swift → Tests/TriangleTests/TriangleTests.swift} +22 -5
  445. data/tracks/swift/exercises/trinary/.gitignore +4 -0
  446. data/tracks/swift/exercises/trinary/Package.swift +5 -0
  447. data/tracks/swift/exercises/trinary/{TrinaryExample.swift → Sources/TrinaryExample.swift} +5 -1
  448. data/tracks/swift/exercises/trinary/Sources/deleteme.swift +1 -0
  449. data/tracks/swift/exercises/trinary/Tests/LinuxMain.swift +6 -0
  450. data/tracks/swift/exercises/trinary/{TrinaryTest.swift → Tests/TrinaryTests/TrinaryTests.swift} +17 -5
  451. data/tracks/swift/exercises/twelve-days/.gitignore +4 -0
  452. data/tracks/swift/exercises/twelve-days/Package.swift +5 -0
  453. data/tracks/swift/exercises/twelve-days/Sources/TwelveDaysExample.swift +24 -0
  454. data/tracks/swift/exercises/twelve-days/Sources/deleteme.swift +1 -0
  455. data/tracks/swift/exercises/twelve-days/Tests/LinuxMain.swift +6 -0
  456. data/tracks/swift/exercises/twelve-days/{TwelveDaysTest.swift → Tests/TwelveDaysTests/TwelveDaysTests.swift} +21 -4
  457. data/tracks/swift/exercises/word-count/.gitignore +4 -0
  458. data/tracks/swift/exercises/word-count/Package.swift +5 -0
  459. data/tracks/swift/exercises/word-count/{WordCountExample.swift → Sources/WordCountExample.swift} +1 -1
  460. data/tracks/swift/exercises/word-count/Sources/deleteme.swift +1 -0
  461. data/tracks/swift/exercises/word-count/Tests/LinuxMain.swift +6 -0
  462. data/tracks/swift/exercises/word-count/{WordCountTest.swift → Tests/WordCountTests/WordCountTests.swift} +18 -10
  463. data/tracks/swift/exercises/wordy/.gitignore +4 -0
  464. data/tracks/swift/exercises/wordy/Package.swift +5 -0
  465. data/tracks/swift/exercises/wordy/{WordyExample.swift → Sources/WordyExample.swift} +6 -4
  466. data/tracks/swift/exercises/wordy/Sources/deleteme.swift +1 -0
  467. data/tracks/swift/exercises/wordy/Tests/LinuxMain.swift +6 -0
  468. data/tracks/swift/exercises/wordy/{WordyTest.swift → Tests/WordyTests/WordyTests.swift} +23 -5
  469. data/tracks/swift/xswift-test-spm +5 -0
  470. metadata +460 -167
  471. data/tracks/swift/docs/img/tests_001-splash.png +0 -0
  472. data/tracks/swift/docs/img/tests_002-templateChooser.png +0 -0
  473. data/tracks/swift/docs/img/tests_003-nameProject.jpg +0 -0
  474. data/tracks/swift/docs/img/tests_004-saveProject.jpg +0 -0
  475. data/tracks/swift/docs/img/tests_005-folderLayout.png +0 -0
  476. data/tracks/swift/docs/img/tests_006-newProjectInitial.jpg +0 -0
  477. data/tracks/swift/docs/img/tests_007-fileInspectorUpdate.png +0 -0
  478. data/tracks/swift/docs/img/tests_008-templateChooserSwift.png +0 -0
  479. data/tracks/swift/docs/img/tests_009-importTestSource.png +0 -0
  480. data/tracks/swift/docs/img/tests_010-testsImportExample.png +0 -0
  481. data/tracks/swift/docs/img/tests_011-finalLayoutExample.png +0 -0
  482. data/tracks/swift/exercises/etl/EtlTest.swift +0 -51
  483. data/tracks/swift/exercises/nth-prime/NthPrimeTest.swift +0 -27
  484. data/tracks/swift/exercises/rna-transcription/RnaTranscriptionTest.swift +0 -27
  485. data/tracks/swift/exercises/twelve-days/TwelveDaysExample.swift +0 -24
  486. data/tracks/swift/xcodeProject/xSwift Tests/Info.plist +0 -24
  487. data/tracks/swift/xcodeProject/xSwift.xcodeproj/project.pbxproj +0 -1521
  488. data/tracks/swift/xcodeProject/xSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  489. data/tracks/swift/xcodeProject/xSwift.xcodeproj/xcshareddata/xcschemes/xSwiftTests.xcscheme +0 -99
@@ -1,3 +1,5 @@
1
+ import Foundation
2
+
1
3
  struct Transpose {
2
4
  static func transpose(_ input: [String]) -> [String] {
3
5
  let maxLineLength = input.map { $0.characters.count }.max()
@@ -0,0 +1 @@
1
+ //Solution goes in Sources
@@ -0,0 +1,6 @@
1
+ import XCTest
2
+ @testable import TransposeTests
3
+
4
+ XCTMain([
5
+ testCase(TransposeTests.allTests),
6
+ ])
@@ -1,9 +1,7 @@
1
- #if swift(>=3.0)
2
- import XCTest
3
- #endif
4
-
5
- class TransposeTest: XCTestCase {
1
+ import XCTest
2
+ @testable import Transpose
6
3
 
4
+ class TransposeTests: XCTestCase {
7
5
  func testEmptyInput() {
8
6
  XCTAssertEqual(Transpose.transpose([]), [])
9
7
  }
@@ -132,4 +130,19 @@ class TransposeTest: XCTestCase {
132
130
  XCTAssertEqual(Transpose.transpose(input), expected)
133
131
  }
134
132
 
133
+ static var allTests: [(String, (TransposeTests) -> () throws -> Void)] {
134
+ return [
135
+ ("testEmptyInput", testEmptyInput),
136
+ ("testTwoCharactersInARow", testTwoCharactersInARow),
137
+ ("testTwoCharactersInAColumn", testTwoCharactersInAColumn),
138
+ ("testSimple", testSimple),
139
+ ("testSingleLine", testSingleLine),
140
+ ("testFirstLineLongerThanSecondLine", testFirstLineLongerThanSecondLine),
141
+ ("testSecondLineLongerThanFirstLine", testSecondLineLongerThanFirstLine),
142
+ ("testSquare", testSquare),
143
+ ("testRectangle", testRectangle),
144
+ ("testTriangle", testTriangle),
145
+ ("testManyLines", testManyLines),
146
+ ]
147
+ }
135
148
  }
@@ -0,0 +1,4 @@
1
+ .DS_Store
2
+ /.build
3
+ /Packages
4
+ /*.xcodeproj
@@ -0,0 +1,5 @@
1
+ import PackageDescription
2
+
3
+ let package = Package(
4
+ name: "Triangle"
5
+ )
@@ -0,0 +1 @@
1
+ //Solution goes in Sources
@@ -0,0 +1,6 @@
1
+ import XCTest
2
+ @testable import TriangleTests
3
+
4
+ XCTMain([
5
+ testCase(TriangleTests.allTests),
6
+ ])
@@ -1,9 +1,7 @@
1
- #if swift(>=3.0)
2
- import XCTest
3
- #endif
4
-
5
- class TriangleTest: XCTestCase {
1
+ import XCTest
2
+ @testable import Triangle
6
3
 
4
+ class TriangleTests: XCTestCase {
7
5
  let triangleKind = (Equilateral:"Equilateral", Isosceles:"Isosceles", Scalene:"Scalene", ErrorKind:"ErrorKind")
8
6
  func testEquilateralTrianglesHaveEqualSides() {
9
7
  XCTAssertEqual(triangleKind.Equilateral, Triangle(2, 2, 2).kind)
@@ -60,4 +58,23 @@ class TriangleTest: XCTestCase {
60
58
  func testTrianglesViolatingTriangleInequalityAreIllegal3() {
61
59
  XCTAssertEqual(triangleKind.ErrorKind, Triangle(7, 3, 2).kind)
62
60
  }
61
+
62
+ static var allTests: [(String, (TriangleTests) -> () throws -> Void)] {
63
+ return [
64
+ ("testEquilateralTrianglesHaveEqualSides", testEquilateralTrianglesHaveEqualSides),
65
+ ("testLargerEquilateralTrianglesAlsoHaveEqualSides", testLargerEquilateralTrianglesAlsoHaveEqualSides),
66
+ ("testIsoscelesTrianglesHaveLastTwoSidesEqual", testIsoscelesTrianglesHaveLastTwoSidesEqual),
67
+ ("testIsoscelesTrianglesHaveFirstAndLastSidesEqual", testIsoscelesTrianglesHaveFirstAndLastSidesEqual),
68
+ ("testIsoscelesTrianglesHaveTwoFirstSidesEqual", testIsoscelesTrianglesHaveTwoFirstSidesEqual),
69
+ ("testIsoscelesTrianglesHaveInFactExactlyTwoSidesEqual", testIsoscelesTrianglesHaveInFactExactlyTwoSidesEqual),
70
+ ("testScaleneTrianglesHaveNoEqualSides", testScaleneTrianglesHaveNoEqualSides),
71
+ ("testScaleneTrianglesHaveNoEqualSidesAtALargerScaleToo", testScaleneTrianglesHaveNoEqualSidesAtALargerScaleToo),
72
+ ("testScaleneTrianglesHaveNoEqualSidesInDescendingOrderEither", testScaleneTrianglesHaveNoEqualSidesInDescendingOrderEither),
73
+ ("testVerySmallTrianglesAreLegal", testVerySmallTrianglesAreLegal),
74
+ ("testTrianglesWithNoSizeAreIllegal", testTrianglesWithNoSizeAreIllegal),
75
+ ("testTrianglesWithNegativeSidesAreIllegal", testTrianglesWithNegativeSidesAreIllegal),
76
+ ("testTrianglesViolatingTriangleInequalityAreIllegal", testTrianglesViolatingTriangleInequalityAreIllegal),
77
+ ("testTrianglesViolatingTriangleInequalityAreIllegal3", testTrianglesViolatingTriangleInequalityAreIllegal3),
78
+ ]
79
+ }
63
80
  }
@@ -0,0 +1,4 @@
1
+ .DS_Store
2
+ /.build
3
+ /Packages
4
+ /*.xcodeproj
@@ -0,0 +1,5 @@
1
+ import PackageDescription
2
+
3
+ let package = Package(
4
+ name: "Trinary"
5
+ )
@@ -1,4 +1,8 @@
1
- import Darwin
1
+ #if os(Linux)
2
+ import Glibc
3
+ #elseif os(OSX)
4
+ import Darwin
5
+ #endif
2
6
 
3
7
  extension Int {
4
8
  init(_ value: Trinary) {
@@ -0,0 +1 @@
1
+ //Solution goes in Sources
@@ -0,0 +1,6 @@
1
+ import XCTest
2
+ @testable import TrinaryTests
3
+
4
+ XCTMain([
5
+ testCase(TrinaryTests.allTests),
6
+ ])
@@ -1,9 +1,7 @@
1
- #if swift(>=3.0)
2
- import XCTest
3
- #endif
4
-
5
- class TrinaryTest: XCTestCase {
1
+ import XCTest
2
+ @testable import Trinary
6
3
 
4
+ class TrinaryTests: XCTestCase {
7
5
  func testTrinary1IsDecimal1() {
8
6
  XCTAssertEqual(1, Int(Trinary("1")))
9
7
  }
@@ -39,4 +37,18 @@ class TrinaryTest: XCTestCase {
39
37
  func testInvalidTrinaryIsDecimal0() {
40
38
  XCTAssertEqual(0, Int(Trinary("carrot")))
41
39
  }
40
+
41
+ static var allTests: [(String, (TrinaryTests) -> () throws -> Void)] {
42
+ return [
43
+ ("testTrinary1IsDecimal1", testTrinary1IsDecimal1),
44
+ ("testTrinary2IsDecimal2", testTrinary2IsDecimal2),
45
+ ("testTrinary10IsDecimal3", testTrinary10IsDecimal3),
46
+ ("testTrinary11IsDecimal4", testTrinary11IsDecimal4),
47
+ ("testTrinary100IsDecimal9", testTrinary100IsDecimal9),
48
+ ("testTrinary112IsDecimal14", testTrinary112IsDecimal14),
49
+ ("testTrinary222Is26", testTrinary222Is26),
50
+ ("testTrinary1122000120Is32091", testTrinary1122000120Is32091),
51
+ ("testInvalidTrinaryIsDecimal0", testInvalidTrinaryIsDecimal0),
52
+ ]
53
+ }
42
54
  }
@@ -0,0 +1,4 @@
1
+ .DS_Store
2
+ /.build
3
+ /Packages
4
+ /*.xcodeproj
@@ -0,0 +1,5 @@
1
+ import PackageDescription
2
+
3
+ let package = Package(
4
+ name: "TwelveDays"
5
+ )
@@ -0,0 +1,24 @@
1
+ struct TwelveDaysSong {
2
+
3
+ static func sing() -> String {
4
+ return verses(1, 12)
5
+ }
6
+
7
+ static func verses(_ start: Int, _ end: Int) -> String {
8
+ var string2return = ""
9
+ for each in start...end {
10
+ string2return += verse(each) + "\n"
11
+ }
12
+
13
+ return string2return
14
+ }
15
+ static func verse(_ number: Int) -> String {
16
+ let dictionary = [
17
+ 1: "On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.\n", 2: "On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.\n", 3: "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", 4: "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", 5: "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", 6: "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", 7: "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", 8: "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", 9: "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", 10: "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", 11: "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", 12: "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"
18
+ ]
19
+
20
+ return dictionary[number] ?? ""
21
+
22
+ }
23
+
24
+ }
@@ -0,0 +1 @@
1
+ //Solution goes in Sources
@@ -0,0 +1,6 @@
1
+ import XCTest
2
+ @testable import TwelveDaysTests
3
+
4
+ XCTMain([
5
+ testCase(TwelveDaysTests.allTests),
6
+ ])
@@ -1,8 +1,7 @@
1
- #if swift(>=3.0)
2
- import XCTest
3
- #endif
1
+ import XCTest
2
+ @testable import TwelveDays
4
3
 
5
- class TwelveDaysTest: XCTestCase {
4
+ class TwelveDaysTests: XCTestCase {
6
5
  func testVerse1() {
7
6
  let expected = "On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.\n"
8
7
  let result = TwelveDaysSong.verse(1)
@@ -90,4 +89,22 @@ class TwelveDaysTest: XCTestCase {
90
89
 
91
90
  }
92
91
 
92
+ static var allTests: [(String, (TwelveDaysTests) -> () throws -> Void)] {
93
+ return [
94
+ ("testVerse1", testVerse1),
95
+ ("testVerse2", testVerse2),
96
+ ("testVerse3", testVerse3),
97
+ ("testVerse4", testVerse4),
98
+ ("testVerse5", testVerse5),
99
+ ("testVerse6", testVerse6),
100
+ ("testVerse7", testVerse7),
101
+ ("testVerse8", testVerse8),
102
+ ("testVerse9", testVerse9),
103
+ ("testVerse10", testVerse10),
104
+ ("testVerse11", testVerse11),
105
+ ("testVerse12", testVerse12),
106
+ ("testMultipleVerses", testMultipleVerses),
107
+ ("testTheWholeSong", testTheWholeSong),
108
+ ]
109
+ }
93
110
  }
@@ -0,0 +1,4 @@
1
+ .DS_Store
2
+ /.build
3
+ /Packages
4
+ /*.xcodeproj
@@ -0,0 +1,5 @@
1
+ import PackageDescription
2
+
3
+ let package = Package(
4
+ name: "WordCount"
5
+ )
@@ -20,7 +20,7 @@ struct WordCount {
20
20
  }
21
21
 
22
22
  func count() -> [String: Int] {
23
- var dict = [String:Int]()
23
+ var dict = [String: Int]()
24
24
  let cleanArray = splitStringToArray(words)
25
25
 
26
26
  cleanArray.forEach { string in
@@ -0,0 +1 @@
1
+ //Solution goes in Sources
@@ -0,0 +1,6 @@
1
+ import XCTest
2
+ @testable import WordCountTests
3
+
4
+ XCTMain([
5
+ testCase(WordCountTests.allTests),
6
+ ])
@@ -1,9 +1,7 @@
1
- #if swift(>=3.0)
2
- import XCTest
3
- #endif
4
-
5
- class WordCountTest: XCTestCase {
1
+ import XCTest
2
+ @testable import WordCount
6
3
 
4
+ class WordCountTests: XCTestCase {
7
5
  func testCountOneWord() {
8
6
  let words = WordCount(words: "word")
9
7
  let expected = ["word": 1]
@@ -14,7 +12,7 @@ class WordCountTest: XCTestCase {
14
12
 
15
13
  func testCountOneOfEeach() {
16
14
  let words = WordCount(words: "one of each")
17
- let expected = ["one" : 1, "of" : 1, "each" : 1 ]
15
+ let expected = ["one": 1, "of": 1, "each": 1 ]
18
16
  let result = words.count()
19
17
 
20
18
  XCTAssertEqual(expected, result)
@@ -22,7 +20,7 @@ class WordCountTest: XCTestCase {
22
20
 
23
21
  func testCountMultipleOccurrences() {
24
22
  let words = WordCount(words: "one fish two fish red fish blue fish")
25
- let expected = ["one" : 1, "fish" : 4, "two" : 1, "red" : 1, "blue" : 1 ]
23
+ let expected = ["one": 1, "fish": 4, "two": 1, "red": 1, "blue": 1 ]
26
24
  let result = words.count()
27
25
 
28
26
  XCTAssertEqual(expected, result)
@@ -30,7 +28,7 @@ class WordCountTest: XCTestCase {
30
28
 
31
29
  func testIgnorePunctation() {
32
30
  let words = WordCount(words: "car : carpet as java : javascript!!&$%^&")
33
- let expected = ["car" : 1, "carpet" : 1, "as" : 1, "java" : 1, "javascript" : 1 ]
31
+ let expected = ["car": 1, "carpet": 1, "as": 1, "java": 1, "javascript": 1 ]
34
32
  let result = words.count()
35
33
 
36
34
  XCTAssertEqual(expected, result)
@@ -38,7 +36,7 @@ class WordCountTest: XCTestCase {
38
36
 
39
37
  func testIncludeNumbers() {
40
38
  let words = WordCount(words: "testing, 1, 2 testing")
41
- let expected = [ "testing" : 2, "1" : 1, "2" : 1 ]
39
+ let expected = [ "testing": 2, "1": 1, "2": 1 ]
42
40
  let result = words.count()
43
41
 
44
42
  XCTAssertEqual(expected, result)
@@ -46,10 +44,20 @@ class WordCountTest: XCTestCase {
46
44
 
47
45
  func testNormalizeCase() {
48
46
  let words = WordCount(words:"go Go GO")
49
- let expected = [ "go" : 3]
47
+ let expected = [ "go": 3]
50
48
  let result = words.count()
51
49
 
52
50
  XCTAssertEqual(expected, result)
53
51
  }
54
52
 
53
+ static var allTests: [(String, (WordCountTests) -> () throws -> Void)] {
54
+ return [
55
+ ("testCountOneWord", testCountOneWord),
56
+ ("testCountOneOfEeach", testCountOneOfEeach),
57
+ ("testCountMultipleOccurrences", testCountMultipleOccurrences),
58
+ ("testIgnorePunctation", testIgnorePunctation),
59
+ ("testIncludeNumbers", testIncludeNumbers),
60
+ ("testNormalizeCase", testNormalizeCase),
61
+ ]
62
+ }
55
63
  }
@@ -0,0 +1,4 @@
1
+ .DS_Store
2
+ /.build
3
+ /Packages
4
+ /*.xcodeproj
@@ -0,0 +1,5 @@
1
+ import PackageDescription
2
+
3
+ let package = Package(
4
+ name: "Wordy"
5
+ )
@@ -1,3 +1,5 @@
1
+ import Foundation
2
+
1
3
  private extension String {
2
4
 
3
5
  func trimWhiteSpace() -> String {
@@ -45,10 +47,10 @@ struct WordProblem {
45
47
  }
46
48
 
47
49
  private let operans =
48
- ["plus" : "+",
49
- "minus" : "-",
50
- "multiplied by" : "*",
51
- "divided by" : "/"]
50
+ ["plus": "+",
51
+ "minus": "-",
52
+ "multiplied by": "*",
53
+ "divided by": "/"]
52
54
 
53
55
  private let funcs =
54
56
  ["+": {(a: Int, b: Int) -> Int in return a + b},
@@ -0,0 +1 @@
1
+ //Solution goes in Sources
@@ -0,0 +1,6 @@
1
+ import XCTest
2
+ @testable import WordyTests
3
+
4
+ XCTMain([
5
+ testCase(WordyTests.allTests),
6
+ ])
@@ -1,9 +1,7 @@
1
- #if swift(>=3.0)
2
- import XCTest
3
- #endif
4
-
5
- class WordyTest: XCTestCase {
1
+ import XCTest
2
+ @testable import Wordy
6
3
 
4
+ class WordyTests: XCTestCase {
7
5
  func testAdd1() {
8
6
  XCTAssertEqual(2, try? WordProblem("What is 1 plus 1?").answer())
9
7
  }
@@ -69,4 +67,24 @@ class WordyTest: XCTestCase {
69
67
  func testIrrelevant() {
70
68
  XCTAssertNil(try? WordProblem("Who is the president of the United States?").answer()) }
71
69
 
70
+ static var allTests: [(String, (WordyTests) -> () throws -> Void)] {
71
+ return [
72
+ ("testAdd1", testAdd1),
73
+ ("testAdd2", testAdd2),
74
+ ("testAddNegativeNumbers", testAddNegativeNumbers),
75
+ ("testAddMoreDigits", testAddMoreDigits),
76
+ ("testSubtract", testSubtract),
77
+ ("testMultiply", testMultiply),
78
+ ("testDivide", testDivide),
79
+ ("testAddTwice", testAddTwice),
80
+ ("testAddThenSubtract", testAddThenSubtract),
81
+ ("testSubtractTwice", testSubtractTwice),
82
+ ("testSubtractThenAdd", testSubtractThenAdd),
83
+ ("testMultiplyTwice", testMultiplyTwice),
84
+ ("testAddThenMultiply", testAddThenMultiply),
85
+ ("testDivideTwice", testDivideTwice),
86
+ ("testTooAdvanced", testTooAdvanced),
87
+ ("testIrrelevant", testIrrelevant),
88
+ ]
89
+ }
72
90
  }