trackler 2.0.3.4 → 2.0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/common/exercises/all-your-base/canonical-data.json +21 -21
  3. data/common/exercises/wordy/description.md +24 -38
  4. data/common/exercises/wordy/metadata.yml +1 -1
  5. data/lib/trackler/version.rb +1 -1
  6. data/tracks/c/config.json +10 -0
  7. data/tracks/c/exercises/meetup/makefile +15 -0
  8. data/tracks/c/exercises/meetup/src/example.c +139 -0
  9. data/tracks/c/exercises/meetup/src/example.h +7 -0
  10. data/tracks/c/exercises/meetup/test/test_meetup.c +223 -0
  11. data/tracks/c/exercises/meetup/test/vendor/unity.c +1300 -0
  12. data/tracks/c/exercises/meetup/test/vendor/unity.h +274 -0
  13. data/tracks/c/exercises/meetup/test/vendor/unity_internals.h +701 -0
  14. data/tracks/crystal/config.json +12 -0
  15. data/tracks/crystal/exercises/pascals-triangle/spec/pascals_triangle_spec.cr +30 -0
  16. data/tracks/crystal/exercises/pascals-triangle/src/example.cr +19 -0
  17. data/tracks/crystal/exercises/pascals-triangle/src/pascals_triangle.cr +1 -0
  18. data/tracks/crystal/exercises/run-length-encoding/spec/run_length_encoding_spec.cr +36 -0
  19. data/tracks/crystal/exercises/run-length-encoding/src/example.cr +40 -0
  20. data/tracks/crystal/src/generator/exercises/pascals-triangle.cr +58 -0
  21. data/tracks/crystal/src/generator/exercises/run_length_encoding.cr +42 -0
  22. data/tracks/javascript/config.json +8 -1
  23. data/tracks/javascript/exercises/all-your-base/all-your-base.spec.js +141 -0
  24. data/tracks/javascript/exercises/all-your-base/example.js +59 -0
  25. data/tracks/javascript/exercises/word-count/example.js +5 -5
  26. data/tracks/javascript/exercises/word-count/word-count.spec.js +23 -8
  27. data/tracks/lua/SETUP.md +60 -7
  28. data/tracks/lua/config.json +9 -0
  29. data/tracks/lua/exercises/say/example.lua +4 -4
  30. data/tracks/lua/exercises/variable-length-quantity/example.lua +36 -0
  31. data/tracks/lua/exercises/variable-length-quantity/variable-length-quantity_spec.lua +73 -0
  32. data/tracks/objective-c/.travis.yml +1 -0
  33. data/tracks/objective-c/config.json +8 -0
  34. data/tracks/objective-c/docs/TESTS.md +1 -1
  35. data/tracks/objective-c/exercises/transpose/TransposeExample.h +7 -0
  36. data/tracks/objective-c/exercises/transpose/TransposeExample.m +59 -0
  37. data/tracks/objective-c/exercises/transpose/TransposeTest.m +150 -0
  38. data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
  39. data/tracks/ocaml/.gitignore +1 -0
  40. data/tracks/ocaml/tools/test-generator/Makefile +3 -0
  41. data/tracks/ocaml/tools/test-generator/src/controller.ml +11 -16
  42. data/tracks/ocaml/tools/test-generator/src/model.ml +4 -0
  43. data/tracks/ocaml/tools/test-generator/src/parser.ml +8 -1
  44. data/tracks/ocaml/tools/test-generator/src/special_cases.ml +5 -0
  45. data/tracks/ocaml/tools/test-generator/templates/all-your-base/template.ml +16 -0
  46. data/tracks/ocaml/tools/test-generator/test/model_test.ml +2 -0
  47. data/tracks/ocaml/tools/test-generator/test/parser_test.ml +8 -0
  48. data/tracks/perl5/docs/RESOURCES.md +57 -0
  49. data/tracks/perl5/exercises/hamming/Example.pm +7 -0
  50. data/tracks/perl5/exercises/hamming/hamming.t +17 -4
  51. data/tracks/perl5/exercises/rna-transcription/rna.t +4 -4
  52. data/tracks/perl6/.gitignore +2 -0
  53. data/tracks/perl6/config.json +5 -0
  54. data/tracks/perl6/exercises/phone-number/Example.pm +30 -0
  55. data/tracks/perl6/exercises/phone-number/cases.json +47 -0
  56. data/tracks/perl6/exercises/phone-number/phone.t +48 -0
  57. data/tracks/purescript/.gitignore +8 -0
  58. data/tracks/purescript/config.json +8 -3
  59. data/tracks/purescript/exercises/hello-world/bower.json +17 -0
  60. data/tracks/purescript/exercises/hello-world/examples/src/HelloWorld.purs +8 -0
  61. data/tracks/purescript/exercises/hello-world/src/HelloWorld.purs +6 -0
  62. data/tracks/purescript/exercises/hello-world/test/Main.purs +18 -0
  63. data/tracks/scala/exercises/leap/HINTS.md +4 -0
  64. data/tracks/scala/exercises/robot-name/HINTS.md +5 -0
  65. data/tracks/swift/docs/INSTALLATION.md +4 -1
  66. data/tracks/swift/exercises/accumulate/AccumulateTest.swift +1 -1
  67. data/tracks/swift/exercises/binary/BinaryExample.swift +4 -1
  68. data/tracks/swift/exercises/crypto-square/CryptoSquareExample.swift +3 -2
  69. data/tracks/swift/exercises/leap/LeapExample.swift +1 -3
  70. data/tracks/swift/exercises/pascals-triangle/PascalsTriangleTest.swift +1 -1
  71. data/tracks/swift/exercises/poker/PokerExample.swift +3 -3
  72. data/tracks/swift/exercises/poker/PokerTest.swift +38 -38
  73. data/tracks/swift/exercises/saddle-points/SaddlePointsTest.swift +1 -1
  74. data/tracks/swift/exercises/scrabble-score/ScrabbleScoreExample.swift +6 -3
  75. data/tracks/swift/exercises/series/SeriesTest.swift +1 -1
  76. data/tracks/swift/exercises/simple-linked-list/SimpleLinkedListExample.swift +2 -2
  77. data/tracks/swift/exercises/space-age/SpaceAgeExample.swift +10 -12
  78. data/tracks/swift/exercises/strain/StrainTest.swift +1 -1
  79. data/tracks/swift/exercises/tournament/TournamentExample.swift +2 -2
  80. data/tracks/swift/exercises/triangle/TriangleExample.swift +7 -3
  81. data/tracks/swift/exercises/wordy/WordyExample.swift +1 -2
  82. metadata +34 -3
  83. data/tracks/purescript/exercises/.keep +0 -0
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env perl6
2
+ use v6;
3
+ use Test;
4
+ use JSON::Tiny;
5
+ use lib my $path = IO::Path.new($?FILE).parent.path;
6
+
7
+ BEGIN {
8
+ plan 12;
9
+ use-ok %*ENV<EXERCISM> ?? 'Example' !! 'Phone', 'Module loaded';
10
+
11
+ unless $*PERL.compiler.version ~~ v2016.10+ {
12
+ sub bail-out {};
13
+ note 'Perl 6 ' ~ $*PERL.compiler.version ~ ' is not supported. Please use v2016.10 or newer';
14
+ skip-rest;
15
+ exit;
16
+ }
17
+ }
18
+
19
+ my %tests = from-json open("$path/cases.json").slurp-rest;
20
+
21
+ subtest 'number, area-code and pretty methods', {
22
+ plan 3;
23
+ ok Phone.can('number'), 'can Phone.number';
24
+ ok Phone.can('area-code'), 'can Phone.area-code';
25
+ ok Phone.can('pretty'), 'can Phone.pretty';
26
+ } or bail-out 'Missing method(s).';
27
+
28
+ for @(%tests<valid>) {
29
+ my $phone = Phone.new(number => .<input>);
30
+ my $msg = 'for ' ~ .<test>;
31
+ is $phone.number, .<number>, "number $msg";
32
+ is $phone.area-code, .<area-code>, "area-code $msg";
33
+ is $phone.pretty, .<pretty>, "pretty $msg";
34
+ }
35
+
36
+ my $exception;
37
+ if %*ENV<EXERCISM> {
38
+ $exception = X::Phone::Invalid;
39
+ }
40
+ else {
41
+ todo 'Optional Exception Tests'; # Remove this line for invalid input tests
42
+ $exception = Exception; # Change this if you wish to specify a specific exception
43
+ }
44
+
45
+ subtest 'Throw exceptions for invalid input', {
46
+ plan 5;
47
+ throws-like {Phone.new(number => .<input>)}, $exception, .<test> for @(%tests<invalid>);
48
+ }
@@ -2,3 +2,11 @@
2
2
  .DS_Store
3
3
  bin/configlet
4
4
  bin/configlet.exe
5
+
6
+ # Purescript artifact directories
7
+ **/bower_components/
8
+ **/node_modules/
9
+ **/.pulp-cache/
10
+ **/output/
11
+ **/.psc*
12
+ **/.psa*
@@ -3,9 +3,14 @@
3
3
  "language": "PureScript",
4
4
  "repository": "https://github.com/exercism/xpurescript",
5
5
  "active": false,
6
- "test_pattern": "TODO",
7
- "problems": [
8
-
6
+ "exercises": [
7
+ {
8
+ "slug": "hello-world",
9
+ "difficulty": 1,
10
+ "topics": [
11
+ "maybe"
12
+ ]
13
+ }
9
14
  ],
10
15
  "deprecated": [
11
16
 
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "hello-world",
3
+ "ignore": [
4
+ "**/.*",
5
+ "node_modules",
6
+ "bower_components",
7
+ "output"
8
+ ],
9
+ "dependencies": {
10
+ "purescript-prelude": "^2.1.0",
11
+ "purescript-console": "^2.0.0"
12
+ },
13
+ "devDependencies": {
14
+ "purescript-psci-support": "^2.0.0",
15
+ "purescript-test-unit": "^10.0.1"
16
+ }
17
+ }
@@ -0,0 +1,8 @@
1
+ module HelloWorld where
2
+
3
+ import Prelude
4
+ import Data.Maybe (Maybe(Just, Nothing))
5
+
6
+ helloWorld :: Maybe String -> String
7
+ helloWorld Nothing = "Hello, World!"
8
+ helloWorld (Just x) = "Hello, " <> x <> "!"
@@ -0,0 +1,6 @@
1
+ module HelloWorld where
2
+
3
+ import Prelude
4
+ import Data.Maybe (Maybe(Just, Nothing))
5
+
6
+ helloWorld :: Maybe String -> String
@@ -0,0 +1,18 @@
1
+ module Test.Main where
2
+
3
+ import Prelude
4
+ import Test.Unit (suite, test)
5
+ import Test.Unit.Main (runTest)
6
+ import Test.Unit.Assert as Assert
7
+ import Data.Maybe (Maybe(Just, Nothing))
8
+ import HelloWorld (helloWorld)
9
+
10
+
11
+ main = runTest do
12
+ suite "HelloWorld.helloWorld" do
13
+ test "Hello with no name" do
14
+ Assert.equal "Hello, World!" (helloWorld Nothing)
15
+ test "Hello to a sample name" do
16
+ Assert.equal "Hello, Alice!" (helloWorld (Just "Alice"))
17
+ test "Hello to another sample name" do
18
+ Assert.equal "Hello, Bob!" (helloWorld (Just "Bob"))
@@ -0,0 +1,4 @@
1
+ ## Hints
2
+ Try to avoid code repetition, use private helper functions if you can.
3
+
4
+ And you might consider using a single `Boolean` expression instead of `if-else` for better readability. See [here](http://cs.wellesley.edu/~cs111/spring00/lectures/boolean-simplification.html) on how this could be done (the link is for Java, but of course the logic is valid for Scala, too).
@@ -0,0 +1,5 @@
1
+ ## Hints
2
+ Make sure your solution is general enough to be easily scalable for longer names containing more letters and digits. This usually makes for better code quality, too.
3
+
4
+ Suggestion (this is not explicitly tested):
5
+ To make sure you always have a unique name you could implement your own cache or use a `Stream` with its built-in cache.
@@ -1,6 +1,9 @@
1
1
  ## Installing Swift
2
2
 
3
- In order to use Swift, you must be running Xcode version 8.0 or greater which is available at [Apple's developer center](https://developer.apple.com/xcode/downloads/).
3
+ In order to use Swift, you must be running Xcode version 8.0 or greater.
4
4
 
5
+ The current release version is available at the [Mac App Store](https://itunes.apple.com/us/app/xcode/id497799835?mt=12).
6
+
7
+ Additional versions of Xcode (including the most recent beta) are available at [Apple's developer center](https://developer.apple.com/xcode/downloads/).
5
8
 
6
9
  All exercises tested with Xcode 8.0 using Swift 3
@@ -16,7 +16,7 @@ private extension String {
16
16
  }
17
17
 
18
18
  private extension XCTest {
19
- func XCTAssertEqualMultiArray(_ aArray1: Array<Array<String>>, _ aArray2: Array<Array<String>>) {
19
+ func XCTAssertEqualMultiArray(_ aArray1: [[String]], _ aArray2: [[String]]) {
20
20
  XCTAssertEqual(Array(aArray1.joined()), Array(aArray2.joined()))
21
21
  }
22
22
  }
@@ -8,7 +8,10 @@ extension Int {
8
8
  }
9
9
  struct Binary {
10
10
  private var UIntValue: UInt = 0
11
- fileprivate var toDecimal: Int {get {return Int(UIntValue)}}
11
+ fileprivate var toDecimal: Int {
12
+ return Int(UIntValue)
13
+ }
14
+
12
15
  private func bi2Uint(_ input: String) -> UInt? {
13
16
  let orderedInput = Array(input.characters.reversed())
14
17
  var tempUInt: UInt = 0
@@ -64,12 +64,13 @@ struct Crypto {
64
64
  }
65
65
 
66
66
  var normalizeCiphertext: String {
67
-
68
67
  let sizeNormal: Int = (ciphertext.characters.count == self.size * self.size ) ? getSquareSize(self.ciphertext) : getSquareSize(self.ciphertext, floorNoCeling: true)
69
68
 
70
69
  return segmentSorter(ciphertext, spacing: sizeNormal).joined(separator: " ")
71
70
  }
72
- var plaintextSegments: [String] { get { return segmentSorter(self.normalizePlaintext, spacing: self.size)}}
71
+ var plaintextSegments: [String] {
72
+ return segmentSorter(self.normalizePlaintext, spacing: self.size)
73
+ }
73
74
  var textValue: String = ""
74
75
  var normalizePlaintext: String = ""
75
76
  var size: Int = 0
@@ -4,8 +4,6 @@ struct Year {
4
4
  year = calendarYear
5
5
  }
6
6
  var isLeapYear: Bool {
7
- get {
8
- return (year%4 == 0 && year%100 != 0 ) || year%400 == 0
9
- }
7
+ return (year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0
10
8
  }
11
9
  }
@@ -3,7 +3,7 @@
3
3
  #endif
4
4
 
5
5
  private extension XCTest {
6
- func XCTAssertEqualMultiArray(_ aArray1: Array<Array<Int>>, _ aArray2: Array<Array<Int>>) {
6
+ func XCTAssertEqualMultiArray(_ aArray1: [[Int]], _ aArray2: [[Int]]) {
7
7
  XCTAssertEqual(Array(aArray1.joined()), Array(aArray2.joined()))
8
8
  }
9
9
  }
@@ -57,7 +57,7 @@ enum HandRank {
57
57
  }
58
58
  }
59
59
 
60
- static func parsePairs(_ inputHand: PokerHand)->[(rank: Rank, count: Int)] {
60
+ static func parsePairs(_ inputHand: PokerHand) -> [(rank: Rank, count: Int)] {
61
61
  let ranks = inputHand.hand.map({$0.rank})
62
62
  let rankSet = Set(ranks)
63
63
  var toReturn = [Rank:Int]()
@@ -73,7 +73,7 @@ enum HandRank {
73
73
  return result
74
74
  }
75
75
 
76
- static func isFlush(_ inputHand: PokerHand)->(bool: Bool, suit: Suit) {
76
+ static func isFlush(_ inputHand: PokerHand) -> (bool: Bool, suit: Suit) {
77
77
  let suits = inputHand.hand.map({$0.suit})
78
78
  let first = suits[0]
79
79
  for each in suits {
@@ -82,7 +82,7 @@ enum HandRank {
82
82
  return (true, first)
83
83
  }
84
84
 
85
- static func isStraight(_ inputHand: PokerHand)->(bool: Bool, highest: Rank) {
85
+ static func isStraight(_ inputHand: PokerHand) -> (bool: Bool, highest: Rank) {
86
86
  let sorted = inputHand.hand.sorted(by: {$0.rank < $1.rank})
87
87
  let first = sorted[0].rank.rawValue
88
88
  for (index, each) in sorted.enumerated() {
@@ -58,8 +58,8 @@ class PokerTest: XCTestCase {
58
58
  hands: [
59
59
  "4♢ 3♤ 4♤ J♤ K♤",
60
60
  "A♡ K♡ J♢ 10♧ 9♡",
61
- "2♢ 8♡ 5♢ 2♡ 8♧",
62
- ],
61
+ "2♢ 8♡ 5♢ 2♡ 8♧"
62
+ ],
63
63
  best: "2♢ 8♡ 5♢ 2♡ 8♧"
64
64
  ),
65
65
  (
@@ -67,8 +67,8 @@ class PokerTest: XCTestCase {
67
67
  hands: [
68
68
  "4♢ J♧ 4♤ J♤ K♤",
69
69
  "A♡ K♡ J♢ 10♧ 9♡",
70
- "2♢ 8♡ 5♢ 2♡ 8♧",
71
- ],
70
+ "2♢ 8♡ 5♢ 2♡ 8♧"
71
+ ],
72
72
  best: "4♢ J♧ 4♤ J♤ K♤"
73
73
  ),
74
74
  (
@@ -76,8 +76,8 @@ class PokerTest: XCTestCase {
76
76
  hands: [
77
77
  "4♢ J♧ 4♤ J♤ K♤",
78
78
  "A♡ K♡ J♢ 10♧ 9♡",
79
- "3♢ J♡ 5♢ 3♡ J♢",
80
- ],
79
+ "3♢ J♡ 5♢ 3♡ J♢"
80
+ ],
81
81
  best: "4♢ J♧ 4♤ J♤ K♤"
82
82
  ),
83
83
  (
@@ -85,8 +85,8 @@ class PokerTest: XCTestCase {
85
85
  hands: [
86
86
  "4♢ J♧ 4♤ J♤ 2♤",
87
87
  "A♡ K♡ J♢ 10♧ 9♡",
88
- "4♧ J♡ 5♢ 4♡ J♢",
89
- ],
88
+ "4♧ J♡ 5♢ 4♡ J♢"
89
+ ],
90
90
  best: "4♧ J♡ 5♢ 4♡ J♢"
91
91
  ),
92
92
  (
@@ -95,8 +95,8 @@ class PokerTest: XCTestCase {
95
95
  "4♢ 3♤ 4♤ J♤ K♤",
96
96
  "A♡ K♡ J♢ 10♧ 9♡",
97
97
  "3♡ 8♡ 3♢ 3♧ 8♧",
98
- "2♢ 8♡ 5♢ 2♡ 8♧",
99
- ],
98
+ "2♢ 8♡ 5♢ 2♡ 8♧"
99
+ ],
100
100
  best: "3♡ 8♡ 3♢ 3♧ 8♧"
101
101
  ),
102
102
  (
@@ -105,8 +105,8 @@ class PokerTest: XCTestCase {
105
105
  "4♢ 3♤ 4♤ J♤ 4♡",
106
106
  "A♡ K♡ J♢ 10♧ 9♡",
107
107
  "3♢ 8♡ 3♡ 3♧ 9♧",
108
- "2♢ 8♡ 5♢ 2♡ 8♧",
109
- ],
108
+ "2♢ 8♡ 5♢ 2♡ 8♧"
109
+ ],
110
110
  best: "4♢ 3♤ 4♤ J♤ 4♡"
111
111
  ),
112
112
  (
@@ -115,8 +115,8 @@ class PokerTest: XCTestCase {
115
115
  "4♢ 3♤ 4♤ J♤ K♤",
116
116
  "Q♡ K♡ J♢ 10♧ 9♡",
117
117
  "3♡ 8♡ 3♢ 3♧ 9♧",
118
- "2♢ 8♡ 5♢ 2♡ 8♧",
119
- ],
118
+ "2♢ 8♡ 5♢ 2♡ 8♧"
119
+ ],
120
120
  best: "Q♡ K♡ J♢ 10♧ 9♡"
121
121
  ),
122
122
  (
@@ -125,8 +125,8 @@ class PokerTest: XCTestCase {
125
125
  "4♢ 3♤ 4♤ J♤ K♤",
126
126
  "2♤ 3♡ A♤ 5♤ 4♤",
127
127
  "3♢ 8♡ 3♡ 3♧ 9♧",
128
- "2♢ 8♡ 5♢ 2♡ 8♧",
129
- ],
128
+ "2♢ 8♡ 5♢ 2♡ 8♧"
129
+ ],
130
130
  best: "2♤ 3♡ A♤ 5♤ 4♤"
131
131
  ),
132
132
  (
@@ -135,8 +135,8 @@ class PokerTest: XCTestCase {
135
135
  "4♢ 3♤ 4♤ J♤ K♤",
136
136
  "Q♡ K♡ J♢ 10♧ 9♡",
137
137
  "A♢ K♧ 10♢ J♢ Q♢",
138
- "2♢ 8♡ 5♢ 2♡ 8♧",
139
- ],
138
+ "2♢ 8♡ 5♢ 2♡ 8♧"
139
+ ],
140
140
  best: "A♢ K♧ 10♢ J♢ Q♢"
141
141
  ),
142
142
  (
@@ -145,8 +145,8 @@ class PokerTest: XCTestCase {
145
145
  "4♤ 3♤ 8♤ J♤ K♤",
146
146
  "Q♡ K♡ J♢ 10♧ 9♡",
147
147
  "3♢ 8♡ 3♢ 3♧ 9♧",
148
- "2♢ 8♡ 5♢ 2♡ 8♧",
149
- ],
148
+ "2♢ 8♡ 5♢ 2♡ 8♧"
149
+ ],
150
150
  best: "4♤ 3♤ 8♤ J♤ K♤"
151
151
  ),
152
152
  (
@@ -155,8 +155,8 @@ class PokerTest: XCTestCase {
155
155
  "4♤ 3♤ 8♤ J♤ K♤",
156
156
  "Q♡ K♡ J♢ 10♧ 9♡",
157
157
  "3♢ 8♢ A♢ 2♢ 7♢",
158
- "2♢ 8♡ 5♢ 2♡ 8♧",
159
- ],
158
+ "2♢ 8♡ 5♢ 2♡ 8♧"
159
+ ],
160
160
  best: "3♢ 8♢ A♢ 2♢ 7♢"
161
161
  ),
162
162
  (
@@ -165,8 +165,8 @@ class PokerTest: XCTestCase {
165
165
  "4♤ 3♤ 8♤ J♤ K♤",
166
166
  "2♢ 8♡ 8♢ 2♡ 8♧",
167
167
  "Q♡ K♡ J♢ 10♧ 9♡",
168
- "3♡ A♡ 3♢ 3♧ A♧",
169
- ],
168
+ "3♡ A♡ 3♢ 3♧ A♧"
169
+ ],
170
170
  best: "2♢ 8♡ 8♢ 2♡ 8♧"
171
171
  ),
172
172
  (
@@ -175,8 +175,8 @@ class PokerTest: XCTestCase {
175
175
  "4♤ 3♤ 8♤ J♤ K♤",
176
176
  "2♢ 8♡ 8♢ 2♡ 8♧",
177
177
  "5♡ 5♢ A♤ 5♧ A♢",
178
- "3♡ A♡ 3♢ 3♧ A♧",
179
- ],
178
+ "3♡ A♡ 3♢ 3♧ A♧"
179
+ ],
180
180
  best: "2♢ 8♡ 8♢ 2♡ 8♧"
181
181
  ),
182
182
  (
@@ -185,8 +185,8 @@ class PokerTest: XCTestCase {
185
185
  "4♤ 5♤ 8♤ J♤ K♤",
186
186
  "2♢ 8♡ 8♢ 2♡ 8♧",
187
187
  "Q♡ K♡ J♢ 10♧ 9♡",
188
- "3♢ 3♡ 3♤ 3♧ A♧",
189
- ],
188
+ "3♢ 3♡ 3♤ 3♧ A♧"
189
+ ],
190
190
  best: "3♢ 3♡ 3♤ 3♧ A♧"
191
191
  ),
192
192
  (
@@ -195,8 +195,8 @@ class PokerTest: XCTestCase {
195
195
  "4♤ 5♤ 8♤ J♤ K♤",
196
196
  "2♢ 2♧ 8♢ 2♡ 2♤",
197
197
  "Q♡ K♡ J♢ 10♧ 9♡",
198
- "3♢ 3♡ 3♤ 3♧ A♧",
199
- ],
198
+ "3♢ 3♡ 3♤ 3♧ A♧"
199
+ ],
200
200
  best: "3♢ 3♡ 3♤ 3♧ A♧"
201
201
  ),
202
202
  (
@@ -205,8 +205,8 @@ class PokerTest: XCTestCase {
205
205
  "4♤ 4♢ 4♡ 4♧ K♤",
206
206
  "2♢ 8♡ 8♢ 2♡ 8♧",
207
207
  "Q♡ K♡ 8♡ 10♡ 9♡",
208
- "2♤ 3♤ A♤ 5♤ 4♤",
209
- ],
208
+ "2♤ 3♤ A♤ 5♤ 4♤"
209
+ ],
210
210
  best: "2♤ 3♤ A♤ 5♤ 4♤"
211
211
  ),
212
212
  (
@@ -215,8 +215,8 @@ class PokerTest: XCTestCase {
215
215
  "4♤ 5♤ 8♤ J♤ K♤",
216
216
  "2♢ 8♡ 8♢ 2♡ 8♧",
217
217
  "Q♡ K♡ J♡ 10♡ 9♡",
218
- "Q♢ K♢ J♢ 10♢ A♢",
219
- ],
218
+ "Q♢ K♢ J♢ 10♢ A♢"
219
+ ],
220
220
  best: "Q♢ K♢ J♢ 10♢ A♢"
221
221
  ),
222
222
  (
@@ -230,10 +230,10 @@ class PokerTest: XCTestCase {
230
230
  "A♡ 2♡ 3♡ 4♡ 5♡",
231
231
  "A♤ 2♤ 3♤ 4♤ 5♤",
232
232
  "5♧ 4♧ 3♧ 2♧ A♧",
233
- "A♢ 2♢ 6♢ 4♢ 5♢",
234
- ],
233
+ "A♢ 2♢ 6♢ 4♢ 5♢"
234
+ ],
235
235
  best: "A♤ 2♤ 3♤ 4♤ 5♤"
236
- ),
236
+ )
237
237
  ]
238
238
 
239
239
  invalidTestCases =
@@ -277,7 +277,7 @@ class PokerTest: XCTestCase {
277
277
  (
278
278
  name: "double suits after rank",
279
279
  hand: "2♡ 3♡ 5♡♡ 8♡ 9♡"
280
- ),
280
+ )
281
281
  ]
282
282
 
283
283
  }