trackler 2.0.3.4 → 2.0.3.5

Sign up to get free protection for your applications and to get access to all the features.
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
  }