trackler 2.2.1.111 → 2.2.1.113

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/README.md +6 -2
  4. data/problem-specifications/exercises/go-counting/canonical-data.json +200 -0
  5. data/problem-specifications/exercises/go-counting/description.md +2 -0
  6. data/tracks/c/config.json +24 -0
  7. data/tracks/c/exercises/minesweeper/README.md +26 -0
  8. data/tracks/c/exercises/minesweeper/makefile +25 -0
  9. data/tracks/c/exercises/minesweeper/src/example.c +64 -0
  10. data/tracks/c/exercises/minesweeper/src/example.h +7 -0
  11. data/tracks/c/exercises/minesweeper/test/test_minesweeper.c +261 -0
  12. data/tracks/c/exercises/minesweeper/test/vendor/unity.c +1300 -0
  13. data/tracks/c/exercises/minesweeper/test/vendor/unity.h +274 -0
  14. data/tracks/c/exercises/minesweeper/test/vendor/unity_internals.h +701 -0
  15. data/tracks/c/exercises/run-length-encoding/README.md +23 -0
  16. data/tracks/c/exercises/run-length-encoding/makefile +27 -0
  17. data/tracks/c/exercises/run-length-encoding/src/example.c +126 -0
  18. data/tracks/c/exercises/run-length-encoding/src/example.h +7 -0
  19. data/tracks/c/exercises/run-length-encoding/test/test_run_length_encoding.c +139 -0
  20. data/tracks/c/exercises/run-length-encoding/test/vendor/unity.c +1300 -0
  21. data/tracks/c/exercises/run-length-encoding/test/vendor/unity.h +274 -0
  22. data/tracks/c/exercises/run-length-encoding/test/vendor/unity_internals.h +701 -0
  23. data/tracks/delphi/exercises/clock/uClockTest.pas +6 -6
  24. data/tracks/ecmascript/config.json +11 -0
  25. data/tracks/ecmascript/exercises/armstrong-numbers/README.md +48 -0
  26. data/tracks/ecmascript/exercises/armstrong-numbers/armstrong-numbers.spec.js +43 -0
  27. data/tracks/ecmascript/exercises/armstrong-numbers/example.js +11 -0
  28. data/tracks/ecmascript/exercises/armstrong-numbers/package.json +70 -0
  29. data/tracks/javascript/config.json +11 -0
  30. data/tracks/javascript/exercises/armstrong-numbers/README.md +46 -0
  31. data/tracks/javascript/exercises/armstrong-numbers/armstrong-numbers.spec.js +43 -0
  32. data/tracks/javascript/exercises/armstrong-numbers/example.js +11 -0
  33. data/tracks/objective-c/config.json +12 -0
  34. data/tracks/objective-c/exercises/series/README.md +50 -0
  35. data/tracks/objective-c/exercises/series/SeriesExample.h +12 -0
  36. data/tracks/objective-c/exercises/series/SeriesExample.m +50 -0
  37. data/tracks/objective-c/exercises/series/SeriesTest.m +97 -0
  38. data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
  39. data/tracks/rust/exercises/gigasecond/.meta/hints.md +1 -0
  40. data/tracks/rust/exercises/gigasecond/README.md +3 -0
  41. data/tracks/rust/exercises/gigasecond/example.rs +1 -1
  42. data/tracks/rust/exercises/gigasecond/src/lib.rs +7 -7
  43. data/tracks/rust/exercises/gigasecond/tests/gigasecond.rs +1 -1
  44. data/tracks/rust/exercises/prime-factors/src/lib.rs +3 -0
  45. data/tracks/scala/exercises/saddle-points/src/test/scala/SaddlePointsTest.scala +1 -1
  46. data/tracks/scala/exercises/say/src/test/scala/SayTest.scala +18 -19
  47. data/tracks/scala/exercises/scrabble-score/src/test/scala/ScrabbleScoreTest.scala +13 -13
  48. data/tracks/scala/testgen/src/main/scala/SaddlePointsTestGenerator.scala +3 -3
  49. data/tracks/scala/testgen/src/main/scala/SayTestGenerator.scala +6 -6
  50. data/tracks/scala/testgen/src/main/scala/ScrabbleScoreTestGenerator.scala +2 -2
  51. data/tracks/typescript/config.json +16 -0
  52. data/tracks/typescript/exercises/simple-cipher/README.md +114 -0
  53. data/tracks/typescript/exercises/simple-cipher/package.json +36 -0
  54. data/tracks/typescript/exercises/simple-cipher/simple-cipher.example.ts +42 -0
  55. data/tracks/typescript/exercises/simple-cipher/simple-cipher.test.ts +84 -0
  56. data/tracks/typescript/exercises/simple-cipher/simple-cipher.ts +11 -0
  57. data/tracks/typescript/exercises/simple-cipher/tsconfig.json +22 -0
  58. data/tracks/typescript/exercises/simple-cipher/tslint.json +127 -0
  59. data/tracks/typescript/exercises/simple-cipher/yarn.lock +2624 -0
  60. metadata +39 -2
@@ -0,0 +1,50 @@
1
+ #import "SeriesExample.h"
2
+
3
+ @interface Series()
4
+
5
+ @property (nonatomic, strong) NSString *numberString;
6
+
7
+ @end
8
+
9
+ @implementation Series
10
+
11
+ - (instancetype)initWithNumberString:(NSString *)numberString {
12
+ if (self = [super init]) {
13
+ self.numberString = numberString;
14
+ }
15
+
16
+ return self;
17
+ }
18
+
19
+ - (nullable NSArray<NSArray<NSNumber *> *> *)slicesWithSize:(NSInteger)size {
20
+ NSUInteger length = [self.numberString length];
21
+
22
+ if (length < size) {
23
+ return nil;
24
+ }
25
+
26
+ NSMutableArray<NSNumber *> *numberArray = [NSMutableArray arrayWithCapacity:length];
27
+
28
+ for (NSUInteger i = 0; i < length; i++) {
29
+ unichar digit = [self.numberString characterAtIndex:i] - '0';
30
+ if (digit < 0 || digit > 10) {
31
+ // Invalid character
32
+ return nil;
33
+ }
34
+
35
+ [numberArray addObject:[NSNumber numberWithUnsignedShort:digit]];
36
+ }
37
+
38
+ NSInteger numberOfSlices = length - size + 1;
39
+ NSMutableArray<NSArray<NSNumber *> *> *result = [NSMutableArray arrayWithCapacity:numberOfSlices];
40
+
41
+ for (NSUInteger start = 0; start < numberOfSlices; start++) {
42
+ NSRange range = NSMakeRange(start, size);
43
+ NSArray *slice = [numberArray subarrayWithRange:range];
44
+ [result addObject:slice];
45
+ }
46
+
47
+ return result;
48
+ }
49
+
50
+ @end
@@ -0,0 +1,97 @@
1
+ #import <XCTest/XCTest.h>
2
+
3
+ #if __has_include("SeriesExample.h")
4
+ #import "SeriesExample.h"
5
+ #else
6
+ #import "Series.h"
7
+ #endif
8
+
9
+ @interface SeriesTest : XCTestCase
10
+
11
+ @end
12
+
13
+ @implementation SeriesTest
14
+
15
+ - (void)testSimpleSlicesOfOne {
16
+ Series *series = [[Series alloc] initWithNumberString:@"01234"];
17
+ NSArray *expected = @[@[@0], @[@1], @[@2], @[@3], @[@4]];
18
+ XCTAssertEqualObjects(expected, [series slicesWithSize:1]);
19
+ }
20
+
21
+ - (void)testSimpleSlicesOfOneAgain {
22
+ Series *series = [[Series alloc] initWithNumberString:@"92834"];
23
+ NSArray *expected = @[@[@9], @[@2], @[@8], @[@3], @[@4]];
24
+ XCTAssertEqualObjects(expected, [series slicesWithSize:1]);
25
+ }
26
+
27
+ - (void)testSimpleSlicesOfTwo {
28
+ Series *series = [[Series alloc] initWithNumberString:@"01234"];
29
+ NSArray *expected = @[@[@0, @1], @[@1, @2], @[@2, @3], @[@3, @4]];
30
+ XCTAssertEqualObjects(expected, [series slicesWithSize:2]);
31
+ }
32
+
33
+ - (void)testOtherSlicesOfTwo {
34
+ Series *series = [[Series alloc] initWithNumberString:@"98273463"];
35
+ NSArray *expected = @[@[@9, @8], @[@8, @2], @[@2, @7], @[@7, @3], @[@3, @4], @[@4, @6], @[@6, @3]];
36
+ XCTAssertEqualObjects(expected, [series slicesWithSize:2]);
37
+ }
38
+
39
+ - (void)testSimpleSlicesOfTwoAgain {
40
+ Series *series = [[Series alloc] initWithNumberString:@"37103"];
41
+ NSArray *expected = @[@[@3, @7], @[@7, @1], @[@1, @0], @[@0, @3]];
42
+ XCTAssertEqualObjects(expected, [series slicesWithSize:2]);
43
+ }
44
+
45
+ - (void)testSimpleSlicesOfThree {
46
+ Series *series = [[Series alloc] initWithNumberString:@"01234"];
47
+ NSArray *expected = @[@[@0, @1, @2], @[@1, @2, @3], @[@2, @3, @4]];
48
+ XCTAssertEqualObjects(expected, [series slicesWithSize:3]);
49
+ }
50
+
51
+ - (void)testSimpleSlicesOfThreeAgain {
52
+ Series *series = [[Series alloc] initWithNumberString:@"31001"];
53
+ NSArray *expected = @[@[@3, @1, @0], @[@1, @0, @0], @[@0, @0, @1]];
54
+ XCTAssertEqualObjects(expected, [series slicesWithSize:3]);
55
+ }
56
+
57
+ - (void)testOtherSlicesOfThree {
58
+ Series *series = [[Series alloc] initWithNumberString:@"982347"];
59
+ NSArray *expected = @[@[@9, @8, @2], @[@8, @2, @3], @[@2, @3, @4], @[@3, @4, @7]];
60
+ XCTAssertEqualObjects(expected, [series slicesWithSize:3]);
61
+ }
62
+
63
+ - (void)testSimpleSlicesOfFour {
64
+ Series *series = [[Series alloc] initWithNumberString:@"01234"];
65
+ NSArray *expected = @[@[@0, @1, @2, @3], @[@1, @2, @3, @4]];
66
+ XCTAssertEqualObjects(expected, [series slicesWithSize:4]);
67
+ }
68
+
69
+ - (void)testSimpleSlicesOfFourAgain {
70
+ Series *series = [[Series alloc] initWithNumberString:@"91274"];
71
+ NSArray *expected = @[@[@9, @1, @2, @7], @[@1, @2, @7, @4]];
72
+ XCTAssertEqualObjects(expected, [series slicesWithSize:4]);
73
+ }
74
+
75
+ - (void)testSimpleSlicesOfFive {
76
+ Series *series = [[Series alloc] initWithNumberString:@"01234"];
77
+ NSArray *expected = @[@[@0, @1, @2, @3, @4]];
78
+ XCTAssertEqualObjects(expected, [series slicesWithSize:5]);
79
+ }
80
+
81
+ - (void)testSimpleSlicesOfFiveAgain {
82
+ Series *series = [[Series alloc] initWithNumberString:@"81228"];
83
+ NSArray *expected = @[@[@8, @1, @2, @2, @8]];
84
+ XCTAssertEqualObjects(expected, [series slicesWithSize:5]);
85
+ }
86
+
87
+ - (void)testSimpleSliceThatBlowsUp {
88
+ Series *series = [[Series alloc] initWithNumberString:@"01234"];
89
+ XCTAssertNil([series slicesWithSize:6]);
90
+ }
91
+
92
+ - (void)testMoreComplicatedSliceThatBlowsUp {
93
+ Series *series = [[Series alloc] initWithNumberString:@"01032987583"];
94
+ XCTAssertNil([series slicesWithSize:12]);
95
+ }
96
+
97
+ @end
@@ -63,6 +63,8 @@
63
63
  E907D0CC1D6B734800106C42 /* GigasecondTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E907D0CB1D6B734800106C42 /* GigasecondTest.m */; };
64
64
  E907FE921D87547D00B93DA9 /* ScrabbleScoreExample.m in Sources */ = {isa = PBXBuildFile; fileRef = E907FE911D87547D00B93DA9 /* ScrabbleScoreExample.m */; };
65
65
  E907FE941D87554500B93DA9 /* ScrabbleScoreTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E907FE931D87554500B93DA9 /* ScrabbleScoreTest.m */; };
66
+ E90E59CA204891DD008C0FB5 /* SeriesExample.m in Sources */ = {isa = PBXBuildFile; fileRef = E90E59C9204891DD008C0FB5 /* SeriesExample.m */; };
67
+ E90E59CC204891F7008C0FB5 /* SeriesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E90E59CB204891F7008C0FB5 /* SeriesTest.m */; };
66
68
  E92FCC0D1D78F30D00061017 /* MeetupExample.m in Sources */ = {isa = PBXBuildFile; fileRef = E92FCC0C1D78F30D00061017 /* MeetupExample.m */; };
67
69
  E92FCC0F1D78F3B600061017 /* MeetupTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E92FCC0E1D78F3B600061017 /* MeetupTest.m */; };
68
70
  E9340D06201975C9009FDEF4 /* CollatzConjectureExample.m in Sources */ = {isa = PBXBuildFile; fileRef = E9340D05201975C9009FDEF4 /* CollatzConjectureExample.m */; };
@@ -181,6 +183,9 @@
181
183
  E907FE901D87547D00B93DA9 /* ScrabbleScoreExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScrabbleScoreExample.h; path = "../../exercises/scrabble-score/ScrabbleScoreExample.h"; sourceTree = "<group>"; };
182
184
  E907FE911D87547D00B93DA9 /* ScrabbleScoreExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ScrabbleScoreExample.m; path = "../../exercises/scrabble-score/ScrabbleScoreExample.m"; sourceTree = "<group>"; };
183
185
  E907FE931D87554500B93DA9 /* ScrabbleScoreTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ScrabbleScoreTest.m; path = "../../exercises/scrabble-score/ScrabbleScoreTest.m"; sourceTree = "<group>"; };
186
+ E90E59C8204891DD008C0FB5 /* SeriesExample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SeriesExample.h; path = ../../exercises/series/SeriesExample.h; sourceTree = "<group>"; };
187
+ E90E59C9204891DD008C0FB5 /* SeriesExample.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SeriesExample.m; path = ../../exercises/series/SeriesExample.m; sourceTree = "<group>"; };
188
+ E90E59CB204891F7008C0FB5 /* SeriesTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SeriesTest.m; path = ../../exercises/series/SeriesTest.m; sourceTree = "<group>"; };
184
189
  E92FCC0B1D78F30D00061017 /* MeetupExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MeetupExample.h; path = ../../exercises/meetup/MeetupExample.h; sourceTree = "<group>"; };
185
190
  E92FCC0C1D78F30D00061017 /* MeetupExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MeetupExample.m; path = ../../exercises/meetup/MeetupExample.m; sourceTree = "<group>"; };
186
191
  E92FCC0E1D78F3B600061017 /* MeetupTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MeetupTest.m; path = ../../exercises/meetup/MeetupTest.m; sourceTree = "<group>"; };
@@ -310,6 +315,7 @@
310
315
  E964F68C1FBF9B6B000114D9 /* Say */,
311
316
  E907FE8F1D87545300B93DA9 /* ScrabbleScore */,
312
317
  E9C1C0201D9D98B80015E86E /* SecretHandshake */,
318
+ E90E59C720489199008C0FB5 /* Series */,
313
319
  E97320091E9DA06500ABEE5C /* Sieve */,
314
320
  E9E8B6F61D519E340012F12C /* SpaceAge */,
315
321
  A0BBFCBC1E37703D00230071 /* Sublist */,
@@ -420,6 +426,16 @@
420
426
  name = ScrabbleScore;
421
427
  sourceTree = "<group>";
422
428
  };
429
+ E90E59C720489199008C0FB5 /* Series */ = {
430
+ isa = PBXGroup;
431
+ children = (
432
+ E90E59C8204891DD008C0FB5 /* SeriesExample.h */,
433
+ E90E59C9204891DD008C0FB5 /* SeriesExample.m */,
434
+ E90E59CB204891F7008C0FB5 /* SeriesTest.m */,
435
+ );
436
+ name = Series;
437
+ sourceTree = "<group>";
438
+ };
423
439
  E92FCC0A1D78F2AA00061017 /* Meetup */ = {
424
440
  isa = PBXGroup;
425
441
  children = (
@@ -947,6 +963,7 @@
947
963
  1EFACAB71CCCAF3D006F2E69 /* RobotNameExample.m in Sources */,
948
964
  E9FCFED31E98333D003080C0 /* PascalsTriangleExample.m in Sources */,
949
965
  1EFACAA51CCCAF3D006F2E69 /* BobExample.m in Sources */,
966
+ E90E59CA204891DD008C0FB5 /* SeriesExample.m in Sources */,
950
967
  1EFACABB1CCCAF3D006F2E69 /* WordCountExample.m in Sources */,
951
968
  1EFACAB01CCCAF3D006F2E69 /* LeapTest.m in Sources */,
952
969
  1EFACAAB1CCCAF3D006F2E69 /* HammingExample.m in Sources */,
@@ -969,6 +986,7 @@
969
986
  E90343B62041F989006F1833 /* PrimeFactorsExample.m in Sources */,
970
987
  E9B9F2D41E9EB39C00214076 /* LuhnExample.m in Sources */,
971
988
  E9A7B2F91DA5AC55009056B6 /* LargestSeriesProductTest.m in Sources */,
989
+ E90E59CC204891F7008C0FB5 /* SeriesTest.m in Sources */,
972
990
  1EFACAAF1CCCAF3D006F2E69 /* LeapExample.m in Sources */,
973
991
  E9386EF01E0B694D0009A414 /* AtbashCipherTest.m in Sources */,
974
992
  E9340D08201975E5009FDEF4 /* CollatzConjectureTest.m in Sources */,
@@ -0,0 +1 @@
1
+ If you're unsure what operations you can perform on `DateTime<Utc>` take a look at the [chrono crate](https://docs.rs/chrono/0.4.0/chrono/) which is listed as a dependency in the `Cargo.toml` file for this exercise.
@@ -4,6 +4,9 @@ Calculate the moment when someone has lived for 10^9 seconds.
4
4
 
5
5
  A gigasecond is 10^9 (1,000,000,000) seconds.
6
6
 
7
+ If you're unsure what operations you can perform on `DateTime<Utc>` take a look at the [chrono crate](https://docs.rs/chrono/0.4.0/chrono/) which is listed as a dependency in the `Cargo.toml` file for this exercise.
8
+
9
+
7
10
  ## Rust Installation
8
11
 
9
12
  Refer to the [exercism help page][help-page] for Rust installation and learning
@@ -1,5 +1,5 @@
1
1
  extern crate chrono;
2
- use chrono::*;
2
+ use chrono::{DateTime, Duration, Utc};
3
3
 
4
4
  pub fn after(start: DateTime<Utc>) -> DateTime<Utc> {
5
5
  start + Duration::seconds(1_000_000_000)
@@ -1,7 +1,7 @@
1
- extern crate chrono;
2
- use chrono::*;
3
-
4
- // Returns a Utc DateTime one billion seconds after start.
5
- pub fn after(start: DateTime<Utc>) -> DateTime<Utc> {
6
- unimplemented!()
7
- }
1
+ extern crate chrono;
2
+ use chrono::{DateTime, Utc};
3
+
4
+ // Returns a Utc DateTime one billion seconds after start.
5
+ pub fn after(start: DateTime<Utc>) -> DateTime<Utc> {
6
+ unimplemented!("What time is a gigasecond later than {}", start);
7
+ }
@@ -13,7 +13,7 @@ extern crate gigasecond;
13
13
  * In order to use the crate, your solution will need to start with the two following lines
14
14
  */
15
15
  extern crate chrono;
16
- use chrono::*;
16
+ use chrono::{TimeZone, Utc};
17
17
 
18
18
  #[test]
19
19
  fn test_date() {
@@ -0,0 +1,3 @@
1
+ pub fn factors(n: u32) -> Vec<u32> {
2
+ unimplemented!("This should calculate the prime factors of {}", n)
3
+ }
@@ -1,6 +1,6 @@
1
1
  import org.scalatest.{Matchers, FunSuite}
2
2
 
3
- /** @version 1.0.0 */
3
+ /** @version 1.1.0 */
4
4
  class SaddlePointsTest extends FunSuite with Matchers {
5
5
 
6
6
  test("Can identify single saddle point") {
@@ -1,80 +1,79 @@
1
1
  import org.scalatest.{Matchers, FunSuite}
2
2
 
3
- /** @version 1.0.0 */
3
+ /** @version 1.1.0 */
4
4
  class SayTest extends FunSuite with Matchers {
5
-
5
+
6
6
  test("zero") {
7
- Say.inEnglish(0) should be (Some("zero"))
7
+ Say.inEnglish(0) should be(Some("zero"))
8
8
  }
9
9
 
10
10
  test("one") {
11
11
  pending
12
- Say.inEnglish(1) should be (Some("one"))
12
+ Say.inEnglish(1) should be(Some("one"))
13
13
  }
14
14
 
15
15
  test("fourteen") {
16
16
  pending
17
- Say.inEnglish(14) should be (Some("fourteen"))
17
+ Say.inEnglish(14) should be(Some("fourteen"))
18
18
  }
19
19
 
20
20
  test("twenty") {
21
21
  pending
22
- Say.inEnglish(20) should be (Some("twenty"))
22
+ Say.inEnglish(20) should be(Some("twenty"))
23
23
  }
24
24
 
25
25
  test("twenty-two") {
26
26
  pending
27
- Say.inEnglish(22) should be (Some("twenty-two"))
27
+ Say.inEnglish(22) should be(Some("twenty-two"))
28
28
  }
29
29
 
30
30
  test("one hundred") {
31
31
  pending
32
- Say.inEnglish(100) should be (Some("one hundred"))
32
+ Say.inEnglish(100) should be(Some("one hundred"))
33
33
  }
34
34
 
35
35
  test("one hundred twenty-three") {
36
36
  pending
37
- Say.inEnglish(123) should be (Some("one hundred twenty-three"))
37
+ Say.inEnglish(123) should be(Some("one hundred twenty-three"))
38
38
  }
39
39
 
40
40
  test("one thousand") {
41
41
  pending
42
- Say.inEnglish(1000) should be (Some("one thousand"))
42
+ Say.inEnglish(1000) should be(Some("one thousand"))
43
43
  }
44
44
 
45
45
  test("one thousand two hundred thirty-four") {
46
46
  pending
47
- Say.inEnglish(1234) should be (Some("one thousand two hundred thirty-four"))
47
+ Say.inEnglish(1234) should be(Some("one thousand two hundred thirty-four"))
48
48
  }
49
49
 
50
50
  test("one million") {
51
51
  pending
52
- Say.inEnglish(1000000) should be (Some("one million"))
52
+ Say.inEnglish(1000000) should be(Some("one million"))
53
53
  }
54
54
 
55
55
  test("one million two thousand three hundred forty-five") {
56
56
  pending
57
- Say.inEnglish(1002345) should be (Some("one million two thousand three hundred forty-five"))
57
+ Say.inEnglish(1002345) should be(Some("one million two thousand three hundred forty-five"))
58
58
  }
59
59
 
60
60
  test("one billion") {
61
61
  pending
62
- Say.inEnglish(1000000000) should be (Some("one billion"))
62
+ Say.inEnglish(1000000000) should be(Some("one billion"))
63
63
  }
64
64
 
65
65
  test("a big number") {
66
66
  pending
67
- Say.inEnglish(987654321123l) should
68
- be (Some("nine hundred eighty-seven billion six hundred fifty-four million three hundred twenty-one thousand one hundred twenty-three"))
67
+ Say.inEnglish(987654321123l) should be(Some("nine hundred eighty-seven billion six hundred fifty-four million three hundred twenty-one thousand one hundred twenty-three"))
69
68
  }
70
69
 
71
70
  test("numbers below zero are out of range") {
72
71
  pending
73
- Say.inEnglish(-1) should be (None)
72
+ Say.inEnglish(-1) should be(None)
74
73
  }
75
74
 
76
75
  test("numbers above 999,999,999,999 are out of range") {
77
76
  pending
78
- Say.inEnglish(1000000000000l) should be (None)
77
+ Say.inEnglish(1000000000000l) should be(None)
79
78
  }
80
- }
79
+ }
@@ -1,59 +1,59 @@
1
1
  import org.scalatest.{Matchers, FunSuite}
2
2
 
3
- /** @version 1.0.0 */
3
+ /** @version 1.1.0 */
4
4
  class ScrabbleScoreTest extends FunSuite with Matchers {
5
5
 
6
6
  test("lowercase letter") {
7
- ScrabbleScore.score("a") should be (1)
7
+ ScrabbleScore.score("a") should be(1)
8
8
  }
9
9
 
10
10
  test("uppercase letter") {
11
11
  pending
12
- ScrabbleScore.score("A") should be (1)
12
+ ScrabbleScore.score("A") should be(1)
13
13
  }
14
14
 
15
15
  test("valuable letter") {
16
16
  pending
17
- ScrabbleScore.score("f") should be (4)
17
+ ScrabbleScore.score("f") should be(4)
18
18
  }
19
19
 
20
20
  test("short word") {
21
21
  pending
22
- ScrabbleScore.score("at") should be (2)
22
+ ScrabbleScore.score("at") should be(2)
23
23
  }
24
24
 
25
25
  test("short, valuable word") {
26
26
  pending
27
- ScrabbleScore.score("zoo") should be (12)
27
+ ScrabbleScore.score("zoo") should be(12)
28
28
  }
29
29
 
30
30
  test("medium word") {
31
31
  pending
32
- ScrabbleScore.score("street") should be (6)
32
+ ScrabbleScore.score("street") should be(6)
33
33
  }
34
34
 
35
35
  test("medium, valuable word") {
36
36
  pending
37
- ScrabbleScore.score("quirky") should be (22)
37
+ ScrabbleScore.score("quirky") should be(22)
38
38
  }
39
39
 
40
40
  test("long, mixed-case word") {
41
41
  pending
42
- ScrabbleScore.score("OxyphenButazone") should be (41)
42
+ ScrabbleScore.score("OxyphenButazone") should be(41)
43
43
  }
44
44
 
45
45
  test("english-like word") {
46
46
  pending
47
- ScrabbleScore.score("pinata") should be (8)
47
+ ScrabbleScore.score("pinata") should be(8)
48
48
  }
49
49
 
50
50
  test("empty input") {
51
51
  pending
52
- ScrabbleScore.score("") should be (0)
52
+ ScrabbleScore.score("") should be(0)
53
53
  }
54
54
 
55
55
  test("entire alphabet available") {
56
56
  pending
57
- ScrabbleScore.score("abcdefghijklmnopqrstuvwxyz") should be (87)
57
+ ScrabbleScore.score("abcdefghijklmnopqrstuvwxyz") should be(87)
58
58
  }
59
- }
59
+ }
@@ -13,10 +13,10 @@ object SaddlePointsTestGenerator {
13
13
  }
14
14
  }
15
15
 
16
- def fromLabeledTest(argNames: String*): ToTestCaseData =
16
+ def fromLabeledTestFromInput(argNames: String*): ToTestCaseData =
17
17
  withLabeledTest { sut =>
18
18
  labeledTest =>
19
- val args = sutArgs(labeledTest.result, argNames: _*)
19
+ val args = sutArgsFromInput(labeledTest.result, argNames: _*)
20
20
  val property = labeledTest.property
21
21
  val sutCall =
22
22
  s"""Matrix($args).$property"""
@@ -27,7 +27,7 @@ object SaddlePointsTestGenerator {
27
27
  def main(args: Array[String]): Unit = {
28
28
  val file = new File("src/main/resources/saddle-points.json")
29
29
 
30
- val code = TestSuiteBuilder.build(file, fromLabeledTest("input"))
30
+ val code = TestSuiteBuilder.build(file, fromLabeledTestFromInput("matrix"))
31
31
  println(s"-------------")
32
32
  println(code)
33
33
  println(s"-------------")