trackler 2.2.1.109 → 2.2.1.110

Sign up to get free protection for your applications and to get access to all the features.
Files changed (277) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/c/config.json +2 -0
  4. data/tracks/clojure/exercises/armstrong-numbers/test/armstrong_numbers_test.clj +1 -1
  5. data/tracks/elixir/.formatter.exs +3 -0
  6. data/tracks/elixir/exercises/accumulate/accumulate_test.exs +8 -8
  7. data/tracks/elixir/exercises/acronym/acronym_test.exs +2 -2
  8. data/tracks/elixir/exercises/acronym/example.exs +3 -4
  9. data/tracks/elixir/exercises/all-your-base/all-your-base-test.exs +2 -2
  10. data/tracks/elixir/exercises/all-your-base/example.exs +14 -7
  11. data/tracks/elixir/exercises/allergies/allergies.exs +2 -4
  12. data/tracks/elixir/exercises/allergies/allergies_test.exs +17 -11
  13. data/tracks/elixir/exercises/anagram/anagram.exs +1 -2
  14. data/tracks/elixir/exercises/anagram/anagram_test.exs +13 -13
  15. data/tracks/elixir/exercises/anagram/example.exs +2 -1
  16. data/tracks/elixir/exercises/atbash-cipher/atbash_cipher.exs +2 -2
  17. data/tracks/elixir/exercises/atbash-cipher/atbash_cipher_test.exs +2 -2
  18. data/tracks/elixir/exercises/bank-account/bank_account_test.exs +10 -5
  19. data/tracks/elixir/exercises/beer-song/beer_song.exs +2 -2
  20. data/tracks/elixir/exercises/beer-song/beer_song_test.exs +225 -225
  21. data/tracks/elixir/exercises/beer-song/example.exs +5 -3
  22. data/tracks/elixir/exercises/binary-search-tree/binary_search_tree_test.exs +2 -2
  23. data/tracks/elixir/exercises/binary-search-tree/example.exs +1 -1
  24. data/tracks/elixir/exercises/binary-search/binary_search.exs +0 -1
  25. data/tracks/elixir/exercises/binary-search/binary_search_test.exs +2 -2
  26. data/tracks/elixir/exercises/binary-search/example.exs +3 -1
  27. data/tracks/elixir/exercises/binary/binary.exs +1 -1
  28. data/tracks/elixir/exercises/binary/binary_test.exs +2 -2
  29. data/tracks/elixir/exercises/binary/example.exs +2 -2
  30. data/tracks/elixir/exercises/bob/bob.exs +1 -2
  31. data/tracks/elixir/exercises/bob/bob_test.exs +2 -2
  32. data/tracks/elixir/exercises/bowling/bowling.exs +2 -3
  33. data/tracks/elixir/exercises/bowling/bowling_test.exs +54 -275
  34. data/tracks/elixir/exercises/bowling/example.exs +24 -10
  35. data/tracks/elixir/exercises/bracket-push/bracket_push.exs +1 -2
  36. data/tracks/elixir/exercises/bracket-push/bracket_push_test.exs +5 -3
  37. data/tracks/elixir/exercises/bracket-push/example.exs +8 -3
  38. data/tracks/elixir/exercises/change/change.exs +1 -2
  39. data/tracks/elixir/exercises/change/change_test.exs +2 -2
  40. data/tracks/elixir/exercises/change/example.exs +5 -1
  41. data/tracks/elixir/exercises/clock/clock_test.exs +8 -8
  42. data/tracks/elixir/exercises/clock/example.exs +5 -3
  43. data/tracks/elixir/exercises/collatz-conjecture/collatz_conjecture.exs +0 -1
  44. data/tracks/elixir/exercises/collatz-conjecture/collatz_conjecture_test.exs +3 -3
  45. data/tracks/elixir/exercises/collatz-conjecture/example.exs +1 -1
  46. data/tracks/elixir/exercises/connect/connect.exs +1 -2
  47. data/tracks/elixir/exercises/connect/connect_test.exs +40 -30
  48. data/tracks/elixir/exercises/connect/example.exs +12 -10
  49. data/tracks/elixir/exercises/crypto-square/crypto_square.exs +1 -2
  50. data/tracks/elixir/exercises/crypto-square/crypto_square_test.exs +2 -2
  51. data/tracks/elixir/exercises/crypto-square/example.exs +6 -5
  52. data/tracks/elixir/exercises/custom-set/custom_set.exs +1 -1
  53. data/tracks/elixir/exercises/custom-set/custom_set_test.exs +2 -2
  54. data/tracks/elixir/exercises/custom-set/example.exs +5 -4
  55. data/tracks/elixir/exercises/diamond/diamond.exs +1 -2
  56. data/tracks/elixir/exercises/diamond/diamond_test.exs +20 -18
  57. data/tracks/elixir/exercises/diamond/example.exs +10 -10
  58. data/tracks/elixir/exercises/difference-of-squares/difference_of_squares.exs +1 -5
  59. data/tracks/elixir/exercises/difference-of-squares/difference_of_squares_test.exs +5 -6
  60. data/tracks/elixir/exercises/difference-of-squares/example.exs +3 -4
  61. data/tracks/elixir/exercises/diffie-hellman/diffie_hellman.exs +7 -3
  62. data/tracks/elixir/exercises/diffie-hellman/diffie_hellman_test.exs +43 -23
  63. data/tracks/elixir/exercises/diffie-hellman/example.exs +10 -6
  64. data/tracks/elixir/exercises/dominoes/dominoes.exs +0 -1
  65. data/tracks/elixir/exercises/dominoes/dominoes_test.exs +16 -6
  66. data/tracks/elixir/exercises/dominoes/example.exs +9 -5
  67. data/tracks/elixir/exercises/dot-dsl/dot.exs +0 -1
  68. data/tracks/elixir/exercises/dot-dsl/dot_dsl_test.exs +107 -58
  69. data/tracks/elixir/exercises/dot-dsl/example.exs +18 -10
  70. data/tracks/elixir/exercises/etl/etl.exs +0 -1
  71. data/tracks/elixir/exercises/etl/etl_test.exs +34 -13
  72. data/tracks/elixir/exercises/etl/example.exs +6 -6
  73. data/tracks/elixir/exercises/flatten-array/flatten_array.exs +0 -1
  74. data/tracks/elixir/exercises/flatten-array/flatten_array_test.exs +8 -8
  75. data/tracks/elixir/exercises/forth/example.exs +5 -5
  76. data/tracks/elixir/exercises/forth/forth.exs +6 -9
  77. data/tracks/elixir/exercises/forth/forth_test.exs +107 -64
  78. data/tracks/elixir/exercises/gigasecond/example.exs +1 -1
  79. data/tracks/elixir/exercises/gigasecond/gigasecond.exs +2 -2
  80. data/tracks/elixir/exercises/gigasecond/gigasecond_test.exs +2 -2
  81. data/tracks/elixir/exercises/grade-school/example.exs +3 -3
  82. data/tracks/elixir/exercises/grade-school/grade_school_test.exs +26 -22
  83. data/tracks/elixir/exercises/grade-school/school.exs +3 -6
  84. data/tracks/elixir/exercises/grains/example.exs +10 -3
  85. data/tracks/elixir/exercises/grains/grains.exs +0 -2
  86. data/tracks/elixir/exercises/grains/grains_test.exs +16 -14
  87. data/tracks/elixir/exercises/grep/example.exs +22 -18
  88. data/tracks/elixir/exercises/grep/grep.exs +1 -2
  89. data/tracks/elixir/exercises/grep/grep_test.exs +108 -112
  90. data/tracks/elixir/exercises/hamming/example.exs +3 -2
  91. data/tracks/elixir/exercises/hamming/hamming_test.exs +7 -4
  92. data/tracks/elixir/exercises/hello-world/example.exs +1 -1
  93. data/tracks/elixir/exercises/hello-world/hello_world.exs +1 -1
  94. data/tracks/elixir/exercises/hello-world/hello_world_test.exs +2 -2
  95. data/tracks/elixir/exercises/hexadecimal/example.exs +8 -7
  96. data/tracks/elixir/exercises/hexadecimal/hexadecimal.exs +0 -1
  97. data/tracks/elixir/exercises/hexadecimal/hexadecimal_test.exs +3 -3
  98. data/tracks/elixir/exercises/isbn-verifier/example.exs +1 -1
  99. data/tracks/elixir/exercises/isbn-verifier/isbn_verifier.exs +1 -2
  100. data/tracks/elixir/exercises/isbn-verifier/isbn_verifier_test.exs +2 -2
  101. data/tracks/elixir/exercises/isogram/example.exs +5 -5
  102. data/tracks/elixir/exercises/isogram/isogram.exs +1 -3
  103. data/tracks/elixir/exercises/isogram/isogram_test.exs +2 -3
  104. data/tracks/elixir/exercises/kindergarten-garden/example.exs +15 -3
  105. data/tracks/elixir/exercises/kindergarten-garden/garden_test.exs +17 -4
  106. data/tracks/elixir/exercises/largest-series-product/example.exs +10 -9
  107. data/tracks/elixir/exercises/largest-series-product/largest_series_product.exs +1 -3
  108. data/tracks/elixir/exercises/largest-series-product/largest_series_product_test.exs +6 -4
  109. data/tracks/elixir/exercises/leap/example.exs +2 -2
  110. data/tracks/elixir/exercises/leap/leap.exs +0 -1
  111. data/tracks/elixir/exercises/leap/leap_test.exs +2 -2
  112. data/tracks/elixir/exercises/list-ops/example.exs +10 -9
  113. data/tracks/elixir/exercises/list-ops/list_ops.exs +1 -8
  114. data/tracks/elixir/exercises/list-ops/list_ops_test.exs +22 -25
  115. data/tracks/elixir/exercises/luhn/example.exs +16 -17
  116. data/tracks/elixir/exercises/luhn/luhn.exs +0 -2
  117. data/tracks/elixir/exercises/luhn/luhn_test.exs +2 -2
  118. data/tracks/elixir/exercises/markdown/example.exs +40 -14
  119. data/tracks/elixir/exercises/markdown/markdown.exs +8 -4
  120. data/tracks/elixir/exercises/markdown/markdown_test.exs +6 -3
  121. data/tracks/elixir/exercises/matrix/example.exs +6 -6
  122. data/tracks/elixir/exercises/matrix/matrix.exs +0 -1
  123. data/tracks/elixir/exercises/matrix/matrix_test.exs +11 -11
  124. data/tracks/elixir/exercises/meetup/example.exs +20 -13
  125. data/tracks/elixir/exercises/meetup/meetup.exs +8 -4
  126. data/tracks/elixir/exercises/meetup/meetup_test.exs +2 -2
  127. data/tracks/elixir/exercises/minesweeper/minesweeper.exs +1 -3
  128. data/tracks/elixir/exercises/minesweeper/minesweeper_test.exs +7 -21
  129. data/tracks/elixir/exercises/nth-prime/example.exs +7 -7
  130. data/tracks/elixir/exercises/nth-prime/nth_prime.exs +0 -1
  131. data/tracks/elixir/exercises/nth-prime/nth_prime_test.exs +3 -3
  132. data/tracks/elixir/exercises/nucleotide-count/example.exs +4 -3
  133. data/tracks/elixir/exercises/nucleotide-count/nucleotide_count.exs +0 -3
  134. data/tracks/elixir/exercises/nucleotide-count/nucleotide_count_test.exs +2 -2
  135. data/tracks/elixir/exercises/ocr-numbers/example.exs +3 -3
  136. data/tracks/elixir/exercises/ocr-numbers/ocr_numbers.exs +1 -2
  137. data/tracks/elixir/exercises/ocr-numbers/ocr_numbers_test.exs +54 -70
  138. data/tracks/elixir/exercises/palindrome-products/example.exs +3 -6
  139. data/tracks/elixir/exercises/palindrome-products/palindrome_products.exs +0 -1
  140. data/tracks/elixir/exercises/palindrome-products/palindrome_products_test.exs +8 -8
  141. data/tracks/elixir/exercises/pangram/pangram.exs +1 -1
  142. data/tracks/elixir/exercises/pangram/pangram_test.exs +5 -3
  143. data/tracks/elixir/exercises/parallel-letter-frequency/example.exs +7 -5
  144. data/tracks/elixir/exercises/parallel-letter-frequency/frequency.exs +1 -2
  145. data/tracks/elixir/exercises/parallel-letter-frequency/parallel_letter_frequency_test.exs +3 -4
  146. data/tracks/elixir/exercises/pascals-triangle/example.exs +2 -1
  147. data/tracks/elixir/exercises/pascals-triangle/pascals_triangle_test.exs +26 -8
  148. data/tracks/elixir/exercises/perfect-numbers/example.exs +8 -6
  149. data/tracks/elixir/exercises/perfect-numbers/perfect_numbers.exs +1 -2
  150. data/tracks/elixir/exercises/perfect-numbers/perfect_numbers_test.exs +18 -17
  151. data/tracks/elixir/exercises/phone-number/example.exs +19 -11
  152. data/tracks/elixir/exercises/phone-number/phone_number.exs +3 -3
  153. data/tracks/elixir/exercises/phone-number/phone_number_test.exs +2 -2
  154. data/tracks/elixir/exercises/pig-latin/pig_latin.exs +0 -1
  155. data/tracks/elixir/exercises/pig-latin/pig_latin_test.exs +3 -3
  156. data/tracks/elixir/exercises/poker/example.exs +104 -41
  157. data/tracks/elixir/exercises/poker/poker.exs +0 -1
  158. data/tracks/elixir/exercises/poker/poker_test.exs +7 -5
  159. data/tracks/elixir/exercises/prime-factors/example.exs +4 -8
  160. data/tracks/elixir/exercises/prime-factors/prime_factors.exs +0 -1
  161. data/tracks/elixir/exercises/prime-factors/prime_factors_test.exs +5 -5
  162. data/tracks/elixir/exercises/protein-translation/example.exs +14 -12
  163. data/tracks/elixir/exercises/protein-translation/protein_translation.exs +2 -3
  164. data/tracks/elixir/exercises/protein-translation/protein_translation_test.exs +26 -26
  165. data/tracks/elixir/exercises/pythagorean-triplet/example.exs +5 -4
  166. data/tracks/elixir/exercises/pythagorean-triplet/pythagorean_triplet.exs +0 -5
  167. data/tracks/elixir/exercises/pythagorean-triplet/pythagorean_triplet_test.exs +3 -3
  168. data/tracks/elixir/exercises/queen-attack/example.exs +9 -7
  169. data/tracks/elixir/exercises/queen-attack/queen_attack.exs +1 -4
  170. data/tracks/elixir/exercises/rail-fence-cipher/example.exs +18 -15
  171. data/tracks/elixir/exercises/rail-fence-cipher/rail_fence_cipher.exs +2 -4
  172. data/tracks/elixir/exercises/rail-fence-cipher/rail_fence_cipher_test.exs +2 -2
  173. data/tracks/elixir/exercises/raindrops/example.exs +3 -2
  174. data/tracks/elixir/exercises/raindrops/raindrops.exs +1 -2
  175. data/tracks/elixir/exercises/raindrops/raindrops_test.exs +2 -2
  176. data/tracks/elixir/exercises/rna-transcription/example.exs +1 -1
  177. data/tracks/elixir/exercises/rna-transcription/rna_transcription.exs +0 -1
  178. data/tracks/elixir/exercises/rna-transcription/rna_transcription_test.exs +2 -2
  179. data/tracks/elixir/exercises/robot-simulator/example.exs +33 -19
  180. data/tracks/elixir/exercises/robot-simulator/robot_simulator.exs +3 -5
  181. data/tracks/elixir/exercises/robot-simulator/robot_simulator_test.exs +26 -25
  182. data/tracks/elixir/exercises/roman-numerals/example.exs +14 -13
  183. data/tracks/elixir/exercises/roman-numerals/roman.exs +1 -1
  184. data/tracks/elixir/exercises/roman-numerals/roman_numerals_test.exs +2 -2
  185. data/tracks/elixir/exercises/rotational-cipher/example.exs +12 -8
  186. data/tracks/elixir/exercises/rotational-cipher/rotational_cipher.exs +0 -1
  187. data/tracks/elixir/exercises/rotational-cipher/rotational_cipher_test.exs +6 -4
  188. data/tracks/elixir/exercises/run-length-encoding/example.exs +20 -8
  189. data/tracks/elixir/exercises/run-length-encoding/rle.exs +2 -4
  190. data/tracks/elixir/exercises/run-length-encoding/rle_test.exs +6 -4
  191. data/tracks/elixir/exercises/saddle-points/example.exs +4 -3
  192. data/tracks/elixir/exercises/saddle-points/saddle_points.exs +0 -3
  193. data/tracks/elixir/exercises/saddle-points/saddle_points_test.exs +2 -2
  194. data/tracks/elixir/exercises/say/say.exs +1 -1
  195. data/tracks/elixir/exercises/say/say_test.exs +5 -3
  196. data/tracks/elixir/exercises/scale-generator/example.exs +20 -9
  197. data/tracks/elixir/exercises/scale-generator/scale_generator.exs +2 -2
  198. data/tracks/elixir/exercises/scale-generator/scale_generator_test.exs +16 -17
  199. data/tracks/elixir/exercises/scrabble-score/scrabble.exs +1 -2
  200. data/tracks/elixir/exercises/scrabble-score/scrabble_score_test.exs +2 -2
  201. data/tracks/elixir/exercises/secret-handshake/example.exs +4 -4
  202. data/tracks/elixir/exercises/secret-handshake/secret_handshake.exs +0 -1
  203. data/tracks/elixir/exercises/secret-handshake/secret_handshake_test.exs +3 -3
  204. data/tracks/elixir/exercises/series/example.exs +2 -2
  205. data/tracks/elixir/exercises/series/series.exs +0 -1
  206. data/tracks/elixir/exercises/series/series_test.exs +3 -4
  207. data/tracks/elixir/exercises/sieve/example.exs +4 -5
  208. data/tracks/elixir/exercises/sieve/sieve.exs +0 -3
  209. data/tracks/elixir/exercises/sieve/sieve_test.exs +173 -21
  210. data/tracks/elixir/exercises/simple-cipher/example.exs +8 -8
  211. data/tracks/elixir/exercises/simple-cipher/simple_cipher.exs +0 -1
  212. data/tracks/elixir/exercises/simple-cipher/simple_cipher_test.exs +3 -4
  213. data/tracks/elixir/exercises/simple-linked-list/example.exs +3 -1
  214. data/tracks/elixir/exercises/simple-linked-list/linked_list_test.exs +5 -2
  215. data/tracks/elixir/exercises/space-age/example.exs +5 -6
  216. data/tracks/elixir/exercises/space-age/space_age.exs +9 -3
  217. data/tracks/elixir/exercises/space-age/space_age_test.exs +2 -2
  218. data/tracks/elixir/exercises/spiral-matrix/example.exs +10 -5
  219. data/tracks/elixir/exercises/spiral-matrix/spiral.exs +0 -1
  220. data/tracks/elixir/exercises/spiral-matrix/spiral_test.exs +21 -21
  221. data/tracks/elixir/exercises/strain/example.exs +5 -4
  222. data/tracks/elixir/exercises/strain/strain.exs +2 -2
  223. data/tracks/elixir/exercises/strain/strain_test.exs +12 -7
  224. data/tracks/elixir/exercises/sublist/example.exs +11 -7
  225. data/tracks/elixir/exercises/sublist/sublist.exs +0 -1
  226. data/tracks/elixir/exercises/sublist/sublist_test.exs +16 -18
  227. data/tracks/elixir/exercises/sum-of-multiples/example.exs +3 -4
  228. data/tracks/elixir/exercises/sum-of-multiples/sum_of_multiples.exs +0 -1
  229. data/tracks/elixir/exercises/sum-of-multiples/sum_of_multiples_test.exs +4 -4
  230. data/tracks/elixir/exercises/test_helper.exs +4 -4
  231. data/tracks/elixir/exercises/tournament/example.exs +20 -13
  232. data/tracks/elixir/exercises/tournament/tournament.exs +0 -1
  233. data/tracks/elixir/exercises/tournament/tournament_test.exs +37 -30
  234. data/tracks/elixir/exercises/transpose/example.exs +4 -4
  235. data/tracks/elixir/exercises/transpose/transpose.exs +1 -1
  236. data/tracks/elixir/exercises/transpose/transpose_test.exs +89 -156
  237. data/tracks/elixir/exercises/triangle/example.exs +7 -7
  238. data/tracks/elixir/exercises/triangle/triangle.exs +1 -2
  239. data/tracks/elixir/exercises/triangle/triangle_test.exs +17 -17
  240. data/tracks/elixir/exercises/twelve-days/example.exs +10 -6
  241. data/tracks/elixir/exercises/twelve-days/twelve_days.exs +1 -2
  242. data/tracks/elixir/exercises/twelve-days/twelve_days_test.exs +55 -45
  243. data/tracks/elixir/exercises/word-count/example.exs +5 -5
  244. data/tracks/elixir/exercises/word-count/word_count.exs +1 -2
  245. data/tracks/elixir/exercises/word-count/word_count_test.exs +5 -5
  246. data/tracks/elixir/exercises/wordy/example.exs +13 -14
  247. data/tracks/elixir/exercises/wordy/wordy.exs +1 -4
  248. data/tracks/elixir/exercises/wordy/wordy_test.exs +2 -2
  249. data/tracks/elixir/exercises/zipper/example.exs +48 -37
  250. data/tracks/elixir/exercises/zipper/zipper.exs +20 -14
  251. data/tracks/elixir/exercises/zipper/zipper_test.exs +19 -20
  252. data/tracks/go/.travis.yml +1 -1
  253. data/tracks/go/exercises/paasio/paasio_test.go +76 -0
  254. data/tracks/ocaml/exercises/acronym/test.ml +3 -5
  255. data/tracks/ocaml/exercises/all-your-base/test.ml +2 -2
  256. data/tracks/ocaml/exercises/anagram/test.ml +1 -9
  257. data/tracks/ocaml/exercises/atbash-cipher/test.ml +1 -1
  258. data/tracks/ocaml/exercises/binary-search/test.ml +1 -1
  259. data/tracks/ocaml/exercises/bob/test.ml +1 -1
  260. data/tracks/ocaml/exercises/bracket-push/test.ml +1 -1
  261. data/tracks/ocaml/exercises/connect/test.ml +1 -1
  262. data/tracks/ocaml/exercises/difference-of-squares/test.ml +1 -1
  263. data/tracks/ocaml/exercises/dominoes/test.ml +1 -1
  264. data/tracks/ocaml/exercises/hello-world/test.ml +1 -1
  265. data/tracks/ocaml/exercises/leap/test.ml +2 -2
  266. data/tracks/ocaml/exercises/luhn/test.ml +2 -2
  267. data/tracks/ocaml/exercises/pangram/test.ml +1 -1
  268. data/tracks/ocaml/exercises/phone-number/test.ml +7 -3
  269. data/tracks/ocaml/exercises/prime-factors/test.ml +1 -1
  270. data/tracks/ocaml/exercises/raindrops/test.ml +1 -1
  271. data/tracks/ocaml/exercises/react/example.ml +1 -1
  272. data/tracks/ocaml/exercises/roman-numerals/test.ml +3 -1
  273. data/tracks/ocaml/exercises/run-length-encoding/test.ml +1 -1
  274. data/tracks/ocaml/exercises/space-age/test.ml +1 -1
  275. data/tracks/ocaml/exercises/word-count/test.ml +1 -1
  276. data/tracks/swift/circle.yml +21 -2
  277. metadata +3 -2
@@ -1,6 +1,6 @@
1
1
  defmodule Gigasecond do
2
2
  def from(time) do
3
3
  seconds = :calendar.datetime_to_gregorian_seconds(time)
4
- :calendar.gregorian_seconds_to_datetime(seconds + 1000000000)
4
+ :calendar.gregorian_seconds_to_datetime(seconds + 1_000_000_000)
5
5
  end
6
6
  end
@@ -2,9 +2,9 @@ defmodule Gigasecond do
2
2
  @doc """
3
3
  Calculate a date one billion seconds after an input date.
4
4
  """
5
- @spec from({{pos_integer, pos_integer, pos_integer}, {pos_integer, pos_integer, pos_integer}}) :: :calendar.datetime
5
+ @spec from({{pos_integer, pos_integer, pos_integer}, {pos_integer, pos_integer, pos_integer}}) ::
6
+ :calendar.datetime()
6
7
 
7
8
  def from({{year, month, day}, {hours, minutes, seconds}}) do
8
-
9
9
  end
10
10
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("gigasecond.exs", __DIR__)
3
3
  end
4
4
 
5
- ExUnit.start
6
- ExUnit.configure exclude: :pending, trace: true
5
+ ExUnit.start()
6
+ ExUnit.configure(exclude: :pending, trace: true)
7
7
 
8
8
  defmodule GigasecondTest do
9
9
  use ExUnit.Case
@@ -1,6 +1,6 @@
1
1
  defmodule School do
2
2
  def add(db, name, grade) do
3
- Map.update(db, grade, [name], &[name|&1])
3
+ Map.update(db, grade, [name], &[name | &1])
4
4
  end
5
5
 
6
6
  def grade(db, grade) do
@@ -9,7 +9,7 @@ defmodule School do
9
9
 
10
10
  def sort(db) do
11
11
  db
12
- |> Enum.map(fn {k,v} -> {k, Enum.sort(v)} end)
13
- |> Enum.sort
12
+ |> Enum.map(fn {k, v} -> {k, Enum.sort(v)} end)
13
+ |> Enum.sort()
14
14
  end
15
15
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("school.exs", __DIR__)
3
3
  end
4
4
 
5
- ExUnit.start
6
- ExUnit.configure exclude: :pending, trace: true
5
+ ExUnit.start()
6
+ ExUnit.configure(exclude: :pending, trace: true)
7
7
 
8
8
  defmodule SchoolTest do
9
9
  use ExUnit.Case
@@ -12,35 +12,38 @@ defmodule SchoolTest do
12
12
 
13
13
  test "add student" do
14
14
  actual = School.add(@db, "Aimee", 2)
15
- assert actual == %{2 =>["Aimee"]}
15
+ assert actual == %{2 => ["Aimee"]}
16
16
  end
17
17
 
18
18
  @tag :pending
19
19
  test "add more students in same class" do
20
- actual = @db
21
- |> School.add("James", 2)
22
- |> School.add("Blair", 2)
23
- |> School.add("Paul", 2)
20
+ actual =
21
+ @db
22
+ |> School.add("James", 2)
23
+ |> School.add("Blair", 2)
24
+ |> School.add("Paul", 2)
24
25
 
25
26
  assert Enum.sort(actual[2]) == ["Blair", "James", "Paul"]
26
27
  end
27
28
 
28
29
  @tag :pending
29
30
  test "add students to different grades" do
30
- actual = @db
31
- |> School.add("Chelsea", 3)
32
- |> School.add("Logan", 7)
31
+ actual =
32
+ @db
33
+ |> School.add("Chelsea", 3)
34
+ |> School.add("Logan", 7)
33
35
 
34
36
  assert actual == %{3 => ["Chelsea"], 7 => ["Logan"]}
35
37
  end
36
38
 
37
39
  @tag :pending
38
40
  test "get students in a grade" do
39
- actual = @db
40
- |> School.add("Bradley", 5)
41
- |> School.add("Franklin", 5)
42
- |> School.add("Jeff", 1)
43
- |> School.grade(5)
41
+ actual =
42
+ @db
43
+ |> School.add("Bradley", 5)
44
+ |> School.add("Franklin", 5)
45
+ |> School.add("Jeff", 1)
46
+ |> School.grade(5)
44
47
 
45
48
  assert Enum.sort(actual) == ["Bradley", "Franklin"]
46
49
  end
@@ -52,13 +55,14 @@ defmodule SchoolTest do
52
55
 
53
56
  @tag :pending
54
57
  test "sort school by grade and by student name" do
55
- actual = @db
56
- |> School.add("Bart", 4)
57
- |> School.add("Jennifer", 4)
58
- |> School.add("Christopher", 4)
59
- |> School.add("Kareem", 6)
60
- |> School.add("Kyle", 3)
61
- |> School.sort
58
+ actual =
59
+ @db
60
+ |> School.add("Bart", 4)
61
+ |> School.add("Jennifer", 4)
62
+ |> School.add("Christopher", 4)
63
+ |> School.add("Kareem", 6)
64
+ |> School.add("Kyle", 3)
65
+ |> School.sort()
62
66
 
63
67
  expected = [
64
68
  {3, ["Kyle"]},
@@ -8,24 +8,21 @@ defmodule School do
8
8
  @doc """
9
9
  Add a student to a particular grade in school.
10
10
  """
11
- @spec add(map, String.t, integer) :: map
11
+ @spec add(map, String.t(), integer) :: map
12
12
  def add(db, name, grade) do
13
-
14
13
  end
15
14
 
16
15
  @doc """
17
16
  Return the names of the students in a particular grade.
18
17
  """
19
- @spec grade(map, integer) :: [String.t]
18
+ @spec grade(map, integer) :: [String.t()]
20
19
  def grade(db, grade) do
21
-
22
20
  end
23
21
 
24
22
  @doc """
25
23
  Sorts the school by grade and name.
26
24
  """
27
- @spec sort(map) :: [{integer, [String.t]}]
25
+ @spec sort(map) :: [{integer, [String.t()]}]
28
26
  def sort(db) do
29
-
30
27
  end
31
28
  end
@@ -1,6 +1,13 @@
1
1
  defmodule Grains do
2
2
  use Bitwise, only_operators: true
3
- def square(number) when number in (1..64), do: { :ok, 1 <<< (number - 1) }
4
- def square(_), do: { :error, "The requested square must be between 1 and 64 (inclusive)" }
5
- def total, do: { :ok, Enum.reduce(1..64, 0, fn(n, acc) -> {:ok, sq} = square(n); acc + sq end) }
3
+ def square(number) when number in 1..64, do: {:ok, 1 <<< (number - 1)}
4
+ def square(_), do: {:error, "The requested square must be between 1 and 64 (inclusive)"}
5
+
6
+ def total,
7
+ do:
8
+ {:ok,
9
+ Enum.reduce(1..64, 0, fn n, acc ->
10
+ {:ok, sq} = square(n)
11
+ acc + sq
12
+ end)}
6
13
  end
@@ -4,7 +4,6 @@ defmodule Grains do
4
4
  """
5
5
  @spec square(pos_integer) :: pos_integer
6
6
  def square(number) do
7
-
8
7
  end
9
8
 
10
9
  @doc """
@@ -12,6 +11,5 @@ defmodule Grains do
12
11
  """
13
12
  @spec total :: pos_integer
14
13
  def total do
15
-
16
14
  end
17
15
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("grains.exs", __DIR__)
3
3
  end
4
4
 
5
- ExUnit.start
6
- ExUnit.configure exclude: :pending, trace: true
5
+ ExUnit.start()
6
+ ExUnit.configure(exclude: :pending, trace: true)
7
7
 
8
8
  # NOTE: :math.pow/2 doesn't do what you'd expect:
9
9
  # `:math.pow(2, 64) == :math.pow(2, 64) - 1` is true.
@@ -16,57 +16,59 @@ defmodule GrainsTest do
16
16
 
17
17
  # @tag :pending
18
18
  test "square 1" do
19
- assert Grains.square(1) === { :ok, 1 }
19
+ assert Grains.square(1) === {:ok, 1}
20
20
  end
21
21
 
22
22
  @tag :pending
23
23
  test "square 2" do
24
- assert Grains.square(2) === { :ok, 2 }
24
+ assert Grains.square(2) === {:ok, 2}
25
25
  end
26
26
 
27
27
  @tag :pending
28
28
  test "square 3" do
29
- assert Grains.square(3) === { :ok, 4 }
29
+ assert Grains.square(3) === {:ok, 4}
30
30
  end
31
31
 
32
32
  @tag :pending
33
33
  test "square 4" do
34
- assert Grains.square(4) === { :ok, 8 }
34
+ assert Grains.square(4) === {:ok, 8}
35
35
  end
36
36
 
37
37
  @tag :pending
38
38
  test "square 16" do
39
- assert Grains.square(16) === { :ok, 32768 }
39
+ assert Grains.square(16) === {:ok, 32768}
40
40
  end
41
41
 
42
42
  @tag :pending
43
43
  test "square 32" do
44
- assert Grains.square(32) === { :ok, 2147483648 }
44
+ assert Grains.square(32) === {:ok, 2_147_483_648}
45
45
  end
46
46
 
47
47
  @tag :pending
48
48
  test "square 64" do
49
- assert Grains.square(64) === { :ok, 9223372036854775808 }
49
+ assert Grains.square(64) === {:ok, 9_223_372_036_854_775_808}
50
50
  end
51
51
 
52
52
  @tag :pending
53
53
  test "total grains" do
54
- assert Grains.total === { :ok, 18446744073709551615 }
54
+ assert Grains.total() === {:ok, 18_446_744_073_709_551_615}
55
55
  end
56
56
 
57
57
  @tag :pending
58
58
  test "square greater than 64 returns an error" do
59
- assert Grains.square(65) === { :error, "The requested square must be between 1 and 64 (inclusive)" }
59
+ assert Grains.square(65) ===
60
+ {:error, "The requested square must be between 1 and 64 (inclusive)"}
60
61
  end
61
62
 
62
63
  @tag :pending
63
64
  test "negative square returns an error" do
64
- assert Grains.square(-1) === { :error, "The requested square must be between 1 and 64 (inclusive)" }
65
+ assert Grains.square(-1) ===
66
+ {:error, "The requested square must be between 1 and 64 (inclusive)"}
65
67
  end
66
68
 
67
69
  @tag :pending
68
70
  test "square 0 returns an error" do
69
- assert Grains.square(0) === { :error, "The requested square must be between 1 and 64 (inclusive)" }
71
+ assert Grains.square(0) ===
72
+ {:error, "The requested square must be between 1 and 64 (inclusive)"}
70
73
  end
71
-
72
74
  end
@@ -17,22 +17,25 @@ defmodule Grep do
17
17
  defp parse_flags(flags) do
18
18
  flags
19
19
  |> Enum.map(&parse_flag/1)
20
- |> Enum.reduce(0, fn(a,b) -> a ||| b end)
20
+ |> Enum.reduce(0, fn a, b -> a ||| b end)
21
21
  end
22
22
 
23
23
  defp has_flag(flags, flag), do: (flags &&& flag) > 0
24
24
 
25
25
  defp is_match(pattern, flags) do
26
- pat = if has_flag(flags, @entire_lines) do
27
- "^#{pattern}$"
28
- else
29
- pattern
30
- end
31
- cas = if has_flag(flags, @case_insensitive) do
32
- "i"
33
- else
34
- ""
35
- end
26
+ pat =
27
+ if has_flag(flags, @entire_lines) do
28
+ "^#{pattern}$"
29
+ else
30
+ pattern
31
+ end
32
+
33
+ cas =
34
+ if has_flag(flags, @case_insensitive) do
35
+ "i"
36
+ else
37
+ ""
38
+ end
36
39
 
37
40
  regex = Regex.compile!(pat, cas)
38
41
 
@@ -75,18 +78,19 @@ defmodule Grep do
75
78
  |> Enum.map(fmt)
76
79
  end
77
80
 
78
- @spec grep(String.t, [String.t], [String.t]) :: String.t
81
+ @spec grep(String.t(), [String.t()], [String.t()]) :: String.t()
79
82
  def grep(pattern, flag_args, files) do
80
83
  flags = parse_flags(flag_args)
81
84
 
82
- output = if has_flag(flags, @file_name) do
83
- process_files(pattern, flags, files)
84
- else
85
- process_lines(pattern, flags, files)
86
- end
85
+ output =
86
+ if has_flag(flags, @file_name) do
87
+ process_files(pattern, flags, files)
88
+ else
89
+ process_lines(pattern, flags, files)
90
+ end
87
91
 
88
92
  output
89
93
  |> Enum.map(fn l -> "#{l}\n" end)
90
- |> Enum.reduce("", fn b,a -> "#{a}#{b}" end)
94
+ |> Enum.reduce("", fn b, a -> "#{a}#{b}" end)
91
95
  end
92
96
  end
@@ -1,6 +1,5 @@
1
1
  defmodule Grep do
2
-
3
- @spec grep(String.t, [String.t], [String.t]) :: String.t
2
+ @spec grep(String.t(), [String.t()], [String.t()]) :: String.t()
4
3
  def grep(pattern, flags, files) do
5
4
  end
6
5
  end
@@ -2,14 +2,13 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("grep.exs", __DIR__)
3
3
  end
4
4
 
5
- ExUnit.start
6
- ExUnit.configure exclude: :pending, trace: true
5
+ ExUnit.start()
6
+ ExUnit.configure(exclude: :pending, trace: true)
7
7
 
8
8
  defmodule GrepTest do
9
9
  use ExUnit.Case
10
10
 
11
11
  setup context do
12
-
13
12
  if context[:files] do
14
13
  File.write!("iliad.txt", """
15
14
  Achilles sing, O Goddess! Peleus' son;
@@ -31,8 +30,7 @@ defmodule GrepTest do
31
30
  But I beseech your grace that I may know
32
31
  The worst that may befall me in this case,
33
32
  If I refuse to wed Demetrius.
34
- """
35
- )
33
+ """)
36
34
 
37
35
  File.write!("paradise-lost.txt", """
38
36
  Of Mans First Disobedience, and the Fruit
@@ -45,85 +43,82 @@ defmodule GrepTest do
45
43
  That Shepherd, who first taught the chosen Seed
46
44
  """)
47
45
 
48
- on_exit fn ->
46
+ on_exit(fn ->
49
47
  File.rm!("iliad.txt")
50
48
  File.rm!("midsummer-night.txt")
51
49
  File.rm!("paradise-lost.txt")
52
- end
50
+ end)
53
51
  end
54
52
  end
55
53
 
56
54
  @moduletag :files
57
55
 
58
56
  describe "grepping a single file" do
59
-
60
57
  test "one match, no flags" do
61
58
  assert Grep.grep("Agamemnon", [], ["iliad.txt"]) ==
62
- """
63
- Of Atreus, Agamemnon, King of men.
64
- """
59
+ """
60
+ Of Atreus, Agamemnon, King of men.
61
+ """
65
62
  end
66
63
 
67
64
  @tag :pending
68
65
  test "one match, print line numbers flag" do
69
66
  assert Grep.grep("Forbidden", ["-n"], ["paradise-lost.txt"]) ==
70
- """
71
- 2:Of that Forbidden Tree, whose mortal tast
72
- """
67
+ """
68
+ 2:Of that Forbidden Tree, whose mortal tast
69
+ """
73
70
  end
74
71
 
75
72
  @tag :pending
76
73
  test "one match, case-insensitive flag" do
77
74
  assert Grep.grep("FORBIDDEN", ["-i"], ["paradise-lost.txt"]) ==
78
- """
79
- Of that Forbidden Tree, whose mortal tast
80
- """
75
+ """
76
+ Of that Forbidden Tree, whose mortal tast
77
+ """
81
78
  end
82
79
 
83
80
  @tag :pending
84
81
  test "one match, print file names flag" do
85
82
  assert Grep.grep("Forbidden", ["-l"], ["paradise-lost.txt"]) ==
86
- """
87
- paradise-lost.txt
88
- """
83
+ """
84
+ paradise-lost.txt
85
+ """
89
86
  end
90
87
 
91
88
  @tag :pending
92
89
  test "one match, match entire lines flag" do
93
- assert Grep.grep("With loss of Eden, till one greater Man",
94
- ["-x"], ["paradise-lost.txt"]) ==
95
- """
96
- With loss of Eden, till one greater Man
97
- """
90
+ assert Grep.grep("With loss of Eden, till one greater Man", ["-x"], ["paradise-lost.txt"]) ==
91
+ """
92
+ With loss of Eden, till one greater Man
93
+ """
98
94
  end
99
95
 
100
96
  @tag :pending
101
97
  test "one match, multiple flags" do
102
- assert Grep.grep("OF ATREUS, Agamemnon, KIng of MEN.",
103
- ["-n", "-i", "-x"], ["iliad.txt"]) ==
104
- """
105
- 9:Of Atreus, Agamemnon, King of men.
106
- """
98
+ assert Grep.grep("OF ATREUS, Agamemnon, KIng of MEN.", ["-n", "-i", "-x"], ["iliad.txt"]) ==
99
+ """
100
+ 9:Of Atreus, Agamemnon, King of men.
101
+ """
107
102
  end
108
103
 
109
104
  @tag :pending
110
105
  test "several matches, no flags" do
111
106
  assert Grep.grep("may", [], ["midsummer-night.txt"]) ==
112
- """
113
- Nor how it may concern my modesty,
114
- But I beseech your grace that I may know
115
- The worst that may befall me in this case,
116
- """
107
+ """
108
+ Nor how it may concern my modesty,
109
+ But I beseech your grace that I may know
110
+ The worst that may befall me in this case,
111
+ """
117
112
  end
118
113
 
119
114
  @tag :pending
120
115
  test "several matches, print line numbers flag" do
121
116
  assert Grep.grep("may", ["-n"], ["midsummer-night.txt"]) ==
122
- """
123
- 3:Nor how it may concern my modesty,
124
- 5:But I beseech your grace that I may know
125
- 6:The worst that may befall me in this case,
126
- """
117
+ """
118
+ 3:Nor how it may concern my modesty,
119
+ 5:But I beseech your grace that I may know
120
+ 6:The worst that may befall me in this case,
121
+ """
127
122
  end
128
123
 
129
124
  @tag :pending
@@ -134,22 +129,22 @@ defmodule GrepTest do
134
129
  @tag :pending
135
130
  test "several matches, case-insensitive flag" do
136
131
  assert Grep.grep("ACHILLES", ["-i"], ["iliad.txt"]) ==
137
- """
138
- Achilles sing, O Goddess! Peleus' son;
139
- The noble Chief Achilles from the son
140
- """
132
+ """
133
+ Achilles sing, O Goddess! Peleus' son;
134
+ The noble Chief Achilles from the son
135
+ """
141
136
  end
142
137
 
143
138
  @tag :pending
144
139
  test "several matches, inverted flag" do
145
140
  assert Grep.grep("Of", ["-v"], ["paradise-lost.txt"]) ==
146
- """
147
- Brought Death into the World, and all our woe,
148
- With loss of Eden, till one greater Man
149
- Restore us, and regain the blissful Seat,
150
- Sing Heav'nly Muse, that on the secret top
151
- That Shepherd, who first taught the chosen Seed
152
- """
141
+ """
142
+ Brought Death into the World, and all our woe,
143
+ With loss of Eden, till one greater Man
144
+ Restore us, and regain the blissful Seat,
145
+ Sing Heav'nly Muse, that on the secret top
146
+ That Shepherd, who first taught the chosen Seed
147
+ """
153
148
  end
154
149
 
155
150
  @tag :pending
@@ -159,101 +154,102 @@ defmodule GrepTest do
159
154
  end
160
155
 
161
156
  describe "grepping multiples files at once" do
162
-
163
157
  @tag :pending
164
158
  test "one match, no flags" do
165
- assert Grep.grep("Agamemnon", [],
166
- ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
167
- """
168
- iliad.txt:Of Atreus, Agamemnon, King of men.
169
- """
159
+ assert Grep.grep("Agamemnon", [], ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
160
+ """
161
+ iliad.txt:Of Atreus, Agamemnon, King of men.
162
+ """
170
163
  end
171
164
 
172
165
  @tag :pending
173
166
  test "several matches, no flags" do
174
- assert Grep.grep("may", [],
175
- ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
176
- """
177
- midsummer-night.txt:Nor how it may concern my modesty,
178
- midsummer-night.txt:But I beseech your grace that I may know
179
- midsummer-night.txt:The worst that may befall me in this case,
180
- """
167
+ assert Grep.grep("may", [], ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
168
+ """
169
+ midsummer-night.txt:Nor how it may concern my modesty,
170
+ midsummer-night.txt:But I beseech your grace that I may know
171
+ midsummer-night.txt:The worst that may befall me in this case,
172
+ """
181
173
  end
182
174
 
183
175
  @tag :pending
184
176
  test "several matches, print line numbers flag" do
185
- assert Grep.grep("that", ["-n"],
186
- ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
187
- """
188
- midsummer-night.txt:5:But I beseech your grace that I may know
189
- midsummer-night.txt:6:The worst that may befall me in this case,
190
- paradise-lost.txt:2:Of that Forbidden Tree, whose mortal tast
191
- paradise-lost.txt:6:Sing Heav'nly Muse, that on the secret top
192
- """
177
+ assert Grep.grep("that", ["-n"], ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
178
+ """
179
+ midsummer-night.txt:5:But I beseech your grace that I may know
180
+ midsummer-night.txt:6:The worst that may befall me in this case,
181
+ paradise-lost.txt:2:Of that Forbidden Tree, whose mortal tast
182
+ paradise-lost.txt:6:Sing Heav'nly Muse, that on the secret top
183
+ """
193
184
  end
194
185
 
195
186
  @tag :pending
196
187
  test "one match, print file names flag" do
197
- assert Grep.grep("who", ["-l"],
198
- ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
199
- """
200
- iliad.txt
201
- paradise-lost.txt
202
- """
188
+ assert Grep.grep("who", ["-l"], ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
189
+ """
190
+ iliad.txt
191
+ paradise-lost.txt
192
+ """
203
193
  end
204
194
 
205
195
  @tag :pending
206
196
  test "several matches, case-insensitive flag" do
207
- assert Grep.grep("TO", ["-i"],
208
- ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
209
- """
210
- iliad.txt:Caused to Achaia's host, sent many a soul
211
- iliad.txt:Illustrious into Ades premature,
212
- iliad.txt:And Heroes gave (so stood the will of Jove)
213
- iliad.txt:To dogs and to all ravening fowls a prey,
214
- midsummer-night.txt:I do entreat your grace to pardon me.
215
- midsummer-night.txt:In such a presence here to plead my thoughts;
216
- midsummer-night.txt:If I refuse to wed Demetrius.
217
- paradise-lost.txt:Brought Death into the World, and all our woe,
218
- paradise-lost.txt:Restore us, and regain the blissful Seat,
219
- paradise-lost.txt:Sing Heav'nly Muse, that on the secret top
220
- """
197
+ assert Grep.grep("TO", ["-i"], ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
198
+ """
199
+ iliad.txt:Caused to Achaia's host, sent many a soul
200
+ iliad.txt:Illustrious into Ades premature,
201
+ iliad.txt:And Heroes gave (so stood the will of Jove)
202
+ iliad.txt:To dogs and to all ravening fowls a prey,
203
+ midsummer-night.txt:I do entreat your grace to pardon me.
204
+ midsummer-night.txt:In such a presence here to plead my thoughts;
205
+ midsummer-night.txt:If I refuse to wed Demetrius.
206
+ paradise-lost.txt:Brought Death into the World, and all our woe,
207
+ paradise-lost.txt:Restore us, and regain the blissful Seat,
208
+ paradise-lost.txt:Sing Heav'nly Muse, that on the secret top
209
+ """
221
210
  end
222
211
 
223
212
  @tag :pending
224
213
  test "several matches, inverted flag" do
225
- assert Grep.grep("a", ["-v"],
226
- ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
227
- """
228
- iliad.txt:Achilles sing, O Goddess! Peleus' son;
229
- iliad.txt:The noble Chief Achilles from the son
230
- midsummer-night.txt:If I refuse to wed Demetrius.
231
- """
214
+ assert Grep.grep("a", ["-v"], ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
215
+ """
216
+ iliad.txt:Achilles sing, O Goddess! Peleus' son;
217
+ iliad.txt:The noble Chief Achilles from the son
218
+ midsummer-night.txt:If I refuse to wed Demetrius.
219
+ """
232
220
  end
233
221
 
234
222
  @tag :pending
235
223
  test "one match, match entire lines flag" do
236
- assert Grep.grep("But I beseech your grace that I may know", ["-x"],
237
- ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
238
- """
239
- midsummer-night.txt:But I beseech your grace that I may know
240
- """
224
+ assert Grep.grep("But I beseech your grace that I may know", ["-x"], [
225
+ "iliad.txt",
226
+ "midsummer-night.txt",
227
+ "paradise-lost.txt"
228
+ ]) ==
229
+ """
230
+ midsummer-night.txt:But I beseech your grace that I may know
231
+ """
241
232
  end
242
233
 
243
234
  @tag :pending
244
235
  test "one match, multiple flags" do
245
- assert Grep.grep("WITH LOSS OF EDEN, TILL ONE GREATER MAN",
246
- ["-n", "-x", "-i"],
247
- ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) ==
248
- """
249
- paradise-lost.txt:4:With loss of Eden, till one greater Man
250
- """
236
+ assert Grep.grep("WITH LOSS OF EDEN, TILL ONE GREATER MAN", ["-n", "-x", "-i"], [
237
+ "iliad.txt",
238
+ "midsummer-night.txt",
239
+ "paradise-lost.txt"
240
+ ]) ==
241
+ """
242
+ paradise-lost.txt:4:With loss of Eden, till one greater Man
243
+ """
251
244
  end
252
245
 
253
246
  @tag :pending
254
247
  test "no matches, various flags" do
255
- assert Grep.grep("Frodo", ["-n", "-l", "-x", "i"],
256
- ["iliad.txt", "midsummer-night.txt", "paradise-lost.txt"]) == ""
248
+ assert Grep.grep("Frodo", ["-n", "-l", "-x", "i"], [
249
+ "iliad.txt",
250
+ "midsummer-night.txt",
251
+ "paradise-lost.txt"
252
+ ]) == ""
257
253
  end
258
254
  end
259
255
  end