trackler 2.0.8.12 → 2.0.8.13
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.
- checksums.yaml +4 -4
- data/common/exercises/hamming/canonical-data.json +121 -104
- data/lib/trackler/version.rb +1 -1
- data/tracks/delphi/.gitignore +40 -2
- data/tracks/delphi/config.json +8 -0
- data/tracks/delphi/exercises/allergies/{AllergyTests.dpr → Allergies.dpr} +1 -1
- data/tracks/delphi/exercises/allergies/uAllergyTests.pas +1 -1
- data/tracks/delphi/exercises/bank-account/{BankAccountTests.dpr → BankAccount.dpr} +1 -1
- data/tracks/delphi/exercises/bank-account/uBankAccountTests.pas +1 -1
- data/tracks/delphi/exercises/beer-song/{BeerSongTests.dpr → BeerSong.dpr} +1 -1
- data/tracks/delphi/exercises/beer-song/uBeerSongTests.pas +7 -6
- data/tracks/delphi/exercises/binary-search/{BinarySearchTest.dpr → BinarySearch.dpr} +1 -1
- data/tracks/delphi/exercises/binary-search/uBinarySearchTest.pas +9 -8
- data/tracks/delphi/exercises/bob/uBobTests.pas +18 -17
- data/tracks/delphi/exercises/book-store/{BookStoreTests.dpr → BookStore.dpr} +1 -1
- data/tracks/delphi/exercises/book-store/uBookStoreTests.pas +12 -11
- data/tracks/delphi/exercises/bowling/{BowlingTests.dpr → Bowling.dpr} +1 -1
- data/tracks/delphi/exercises/bowling/uBowlingTests.pas +24 -23
- data/tracks/delphi/exercises/circular-buffer/{CircularBufferTests.dpr → CircularBuffer.dpr} +1 -1
- data/tracks/delphi/exercises/circular-buffer/uCircularBufferTests.pas +1 -1
- data/tracks/delphi/exercises/clock/{ClockTest.dpr → Clock.dpr} +1 -1
- data/tracks/delphi/exercises/clock/uClockTest.pas +13 -5
- data/tracks/delphi/exercises/etl/{ETLtests.dpr → ETL.dpr} +1 -1
- data/tracks/delphi/exercises/etl/uETLtests.pas +1 -1
- data/tracks/delphi/exercises/grains/{GrainsTests.dpr → Grains.dpr} +1 -1
- data/tracks/delphi/exercises/grains/uGrainsTests.pas +11 -10
- data/tracks/delphi/exercises/hamming/uHammingTests.pas +1 -0
- data/tracks/delphi/exercises/leap/{LeapTest.dpr → Leap.dpr} +1 -1
- data/tracks/delphi/exercises/leap/uLeapTests.pas +1 -0
- data/tracks/delphi/exercises/nucleotide-count/{NucleotideCountTest.dpr → NucleotideCount.dpr} +1 -1
- data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountTest.pas +9 -8
- data/tracks/delphi/exercises/perfect-numbers/{PerfectNumbersTest.dpr → PerfectNumbers.dpr} +1 -1
- data/tracks/delphi/exercises/perfect-numbers/uPerfectNumbersTest.pas +71 -20
- data/tracks/delphi/exercises/phone-number/{PhoneNumberTests.dpr → PhoneNumber.dpr} +1 -1
- data/tracks/delphi/exercises/phone-number/uPhoneNumberTests.pas +1 -0
- data/tracks/delphi/exercises/poker/uPokerTest.pas +1 -0
- data/tracks/delphi/exercises/raindrops/raindrops.dpr +60 -0
- data/tracks/delphi/exercises/raindrops/uRaindropsExample.pas +27 -0
- data/tracks/delphi/exercises/raindrops/uRaindropsTest.pas +180 -0
- data/tracks/delphi/exercises/rna-transcription/{TestRnaTranscription.dpr → RnaTranscription.dpr} +1 -1
- data/tracks/delphi/exercises/rna-transcription/uTestRnaTranscription.pas +8 -7
- data/tracks/delphi/exercises/saddle-points/{TestSaddlePoints.dpr → SaddlePoints.dpr} +1 -1
- data/tracks/delphi/exercises/saddle-points/uSaddlePointsTests.pas +6 -5
- data/tracks/go/config.json +12 -4
- data/tracks/go/exercises/accumulate/accumulate_test.go +2 -4
- data/tracks/go/exercises/luhn/cases_test.go +76 -0
- data/tracks/go/exercises/luhn/example.go +26 -26
- data/tracks/go/exercises/luhn/example_gen.go +50 -0
- data/tracks/go/exercises/luhn/luhn_test.go +1 -14
- data/tracks/go/exercises/perfect-numbers/perfect_numbers_test.go +14 -13
- data/tracks/java/exercises/rna-transcription/src/example/java/RnaTranscription.java +1 -1
- data/tracks/java/exercises/rna-transcription/src/main/java/RnaTranscription.java +5 -0
- data/tracks/java/exercises/rna-transcription/src/test/java/RnaTranscriptionTest.java +14 -7
- data/tracks/julia/.travis.yml +1 -0
- data/tracks/lisp/docs/ABOUT.md +10 -7
- data/tracks/lisp/docs/INSTALLATION.md +12 -4
- data/tracks/lisp/docs/LEARNING.md +11 -5
- data/tracks/lisp/docs/RESOURCES.md +18 -9
- data/tracks/lisp/docs/TESTS.md +4 -0
- data/tracks/scala/exercises/simple-linked-list/src/test/scala/SimpleLinkedListTest.scala +9 -1
- data/tracks/typescript/config.json +6 -0
- data/tracks/typescript/exercises/food-chain/food-chain.example.ts +54 -0
- data/tracks/typescript/exercises/food-chain/food-chain.test.ts +163 -0
- data/tracks/typescript/exercises/food-chain/package.json +37 -0
- data/tracks/typescript/exercises/food-chain/tsconfig.json +21 -0
- data/tracks/typescript/exercises/food-chain/tslint.json +127 -0
- data/tracks/typescript/exercises/food-chain/yarn.lock +2697 -0
- metadata +30 -19
- data/tracks/java/exercises/rna-transcription/src/main/java/.keep +0 -0
@@ -0,0 +1,60 @@
|
|
1
|
+
program Raindrops;
|
2
|
+
|
3
|
+
{$IFNDEF TESTINSIGHT}
|
4
|
+
{$APPTYPE CONSOLE}
|
5
|
+
{$ENDIF}{$STRONGLINKTYPES ON}
|
6
|
+
uses
|
7
|
+
System.SysUtils,
|
8
|
+
{$IFDEF TESTINSIGHT}
|
9
|
+
TestInsight.DUnitX,
|
10
|
+
{$ENDIF }
|
11
|
+
DUnitX.Loggers.Console,
|
12
|
+
DUnitX.Loggers.Xml.NUnit,
|
13
|
+
DUnitX.TestFramework,
|
14
|
+
uRaindropsTest in 'uRaindropsTest.pas',
|
15
|
+
uRaindrops in 'uRaindrops.pas';
|
16
|
+
|
17
|
+
var
|
18
|
+
runner : ITestRunner;
|
19
|
+
results : IRunResults;
|
20
|
+
logger : ITestLogger;
|
21
|
+
nunitLogger : ITestLogger;
|
22
|
+
begin
|
23
|
+
{$IFDEF TESTINSIGHT}
|
24
|
+
TestInsight.DUnitX.RunRegisteredTests;
|
25
|
+
exit;
|
26
|
+
{$ENDIF}
|
27
|
+
try
|
28
|
+
//Check command line options, will exit if invalid
|
29
|
+
TDUnitX.CheckCommandLine;
|
30
|
+
//Create the test runner
|
31
|
+
runner := TDUnitX.CreateRunner;
|
32
|
+
//Tell the runner to use RTTI to find Fixtures
|
33
|
+
runner.UseRTTI := True;
|
34
|
+
//tell the runner how we will log things
|
35
|
+
//Log to the console window
|
36
|
+
logger := TDUnitXConsoleLogger.Create(true);
|
37
|
+
runner.AddLogger(logger);
|
38
|
+
//Generate an NUnit compatible XML File
|
39
|
+
nunitLogger := TDUnitXXMLNUnitFileLogger.Create(TDUnitX.Options.XMLOutputFile);
|
40
|
+
runner.AddLogger(nunitLogger);
|
41
|
+
runner.FailsOnNoAsserts := False; //When true, Assertions must be made during tests;
|
42
|
+
|
43
|
+
//Run tests
|
44
|
+
results := runner.Execute;
|
45
|
+
if not results.AllPassed then
|
46
|
+
System.ExitCode := EXIT_ERRORS;
|
47
|
+
|
48
|
+
{$IFNDEF CI}
|
49
|
+
//We don't want this happening when running under CI.
|
50
|
+
if TDUnitX.Options.ExitBehavior = TDUnitXExitBehavior.Pause then
|
51
|
+
begin
|
52
|
+
System.Write('Done.. press <Enter> key to quit.');
|
53
|
+
System.Readln;
|
54
|
+
end;
|
55
|
+
{$ENDIF}
|
56
|
+
except
|
57
|
+
on E: Exception do
|
58
|
+
System.Writeln(E.ClassName, ': ', E.Message);
|
59
|
+
end;
|
60
|
+
end.
|
@@ -0,0 +1,27 @@
|
|
1
|
+
unit uRaindrops;
|
2
|
+
|
3
|
+
interface
|
4
|
+
|
5
|
+
type
|
6
|
+
|
7
|
+
Raindrops = class
|
8
|
+
class function Convert(aNumber: integer): string; static;
|
9
|
+
end;
|
10
|
+
|
11
|
+
implementation
|
12
|
+
uses System.SysUtils;
|
13
|
+
|
14
|
+
class function Raindrops.Convert(aNumber: integer): string;
|
15
|
+
begin
|
16
|
+
result := '';
|
17
|
+
if aNumber mod 3 = 0 then
|
18
|
+
result := result + 'Pling';
|
19
|
+
if aNumber mod 5 = 0 then
|
20
|
+
result := result + 'Plang';
|
21
|
+
if aNumber mod 7 = 0 then
|
22
|
+
result := result + 'Plong';
|
23
|
+
if result = '' then
|
24
|
+
result := aNumber.ToString;
|
25
|
+
end;
|
26
|
+
|
27
|
+
end.
|
@@ -0,0 +1,180 @@
|
|
1
|
+
unit uRaindropsTest;
|
2
|
+
|
3
|
+
interface
|
4
|
+
uses
|
5
|
+
DUnitX.TestFramework;
|
6
|
+
|
7
|
+
type
|
8
|
+
|
9
|
+
[TestFixture]
|
10
|
+
RaindropsTest = class(TObject)
|
11
|
+
public
|
12
|
+
[Test]
|
13
|
+
// [Ignore('Comment the "[Ignore]" statement to run the test')]
|
14
|
+
procedure the_sound_for_1_is_1;
|
15
|
+
|
16
|
+
[Test]
|
17
|
+
[Ignore]
|
18
|
+
procedure the_sound_for_3_is_Pling;
|
19
|
+
|
20
|
+
[Test]
|
21
|
+
[Ignore]
|
22
|
+
procedure the_sound_for_5_is_Plang;
|
23
|
+
|
24
|
+
[Test]
|
25
|
+
[Ignore]
|
26
|
+
procedure the_sound_for_7_is_Plong;
|
27
|
+
|
28
|
+
[Test]
|
29
|
+
[Ignore]
|
30
|
+
procedure the_sound_for_6_is_Pling_as_it_has_a_factor_3;
|
31
|
+
|
32
|
+
[Test]
|
33
|
+
[Ignore]
|
34
|
+
procedure _2_to_the_power_3_does_not_make_a_raindrop_sound_as_3_is_the_exponent_not_the_base;
|
35
|
+
|
36
|
+
[Test]
|
37
|
+
[Ignore]
|
38
|
+
procedure the_sound_for_9_is_Pling_as_it_has_a_factor_3;
|
39
|
+
|
40
|
+
[Test]
|
41
|
+
[Ignore]
|
42
|
+
procedure the_sound_for_10_is_Plang_as_it_has_a_factor_5;
|
43
|
+
|
44
|
+
[Test]
|
45
|
+
[Ignore]
|
46
|
+
procedure the_sound_for_14_is_Plong_as_it_has_a_factor_of_7;
|
47
|
+
|
48
|
+
[Test]
|
49
|
+
[Ignore]
|
50
|
+
procedure the_sound_for_15_is_PlingPlang_as_it_has_factors_3_and_5;
|
51
|
+
|
52
|
+
[Test]
|
53
|
+
[Ignore]
|
54
|
+
procedure the_sound_for_21_is_PlingPlong_as_it_has_factors_3_and_7;
|
55
|
+
|
56
|
+
[Test]
|
57
|
+
[Ignore]
|
58
|
+
procedure the_sound_for_25_is_Plang_as_it_has_a_factor_5;
|
59
|
+
|
60
|
+
[Test]
|
61
|
+
[Ignore]
|
62
|
+
procedure the_sound_for_27_is_Pling_as_it_has_a_factor_3;
|
63
|
+
|
64
|
+
[Test]
|
65
|
+
[Ignore]
|
66
|
+
procedure the_sound_for_35_is_PlangPlong_as_it_has_factors_5_and_7;
|
67
|
+
|
68
|
+
[Test]
|
69
|
+
[Ignore]
|
70
|
+
procedure the_sound_for_49_is_Plong_as_it_has_a_factor_7;
|
71
|
+
|
72
|
+
[Test]
|
73
|
+
[Ignore]
|
74
|
+
procedure the_sound_for_52_is_52;
|
75
|
+
|
76
|
+
[Test]
|
77
|
+
[Ignore]
|
78
|
+
procedure the_sound_for_105_is_PlingPlangPlong_as_it_has_factors_3_5_7;
|
79
|
+
|
80
|
+
[Test]
|
81
|
+
[Ignore]
|
82
|
+
procedure the_sound_for_3125_is_Plang_as_it_has_a_factor_5;
|
83
|
+
end;
|
84
|
+
|
85
|
+
implementation
|
86
|
+
uses uRaindrops;
|
87
|
+
|
88
|
+
procedure RaindropsTest.the_sound_for_1_is_1;
|
89
|
+
begin
|
90
|
+
Assert.AreEqual('1', Raindrops.Convert(1));
|
91
|
+
end;
|
92
|
+
|
93
|
+
procedure RaindropsTest.the_sound_for_3_is_Pling;
|
94
|
+
begin
|
95
|
+
Assert.AreEqual('Pling', Raindrops.Convert(3));
|
96
|
+
end;
|
97
|
+
|
98
|
+
procedure RaindropsTest.the_sound_for_5_is_Plang;
|
99
|
+
begin
|
100
|
+
Assert.AreEqual('Plang', Raindrops.Convert(5));
|
101
|
+
end;
|
102
|
+
|
103
|
+
procedure RaindropsTest.the_sound_for_7_is_Plong;
|
104
|
+
begin
|
105
|
+
Assert.AreEqual('Plong', Raindrops.Convert(7));
|
106
|
+
end;
|
107
|
+
|
108
|
+
procedure RaindropsTest.the_sound_for_6_is_Pling_as_it_has_a_factor_3;
|
109
|
+
begin
|
110
|
+
Assert.AreEqual('Pling', Raindrops.Convert(6));
|
111
|
+
end;
|
112
|
+
|
113
|
+
procedure RaindropsTest._2_to_the_power_3_does_not_make_a_raindrop_sound_as_3_is_the_exponent_not_the_base;
|
114
|
+
begin
|
115
|
+
Assert.AreEqual('8', Raindrops.Convert(8));
|
116
|
+
end;
|
117
|
+
|
118
|
+
procedure RaindropsTest.the_sound_for_9_is_Pling_as_it_has_a_factor_3;
|
119
|
+
begin
|
120
|
+
Assert.AreEqual('Pling', Raindrops.Convert(9));
|
121
|
+
end;
|
122
|
+
|
123
|
+
procedure RaindropsTest.the_sound_for_10_is_Plang_as_it_has_a_factor_5;
|
124
|
+
begin
|
125
|
+
Assert.AreEqual('Plang', Raindrops.Convert(10));
|
126
|
+
end;
|
127
|
+
|
128
|
+
procedure RaindropsTest.the_sound_for_14_is_Plong_as_it_has_a_factor_of_7;
|
129
|
+
begin
|
130
|
+
Assert.AreEqual('Plong', Raindrops.Convert(14));
|
131
|
+
end;
|
132
|
+
|
133
|
+
procedure RaindropsTest.the_sound_for_15_is_PlingPlang_as_it_has_factors_3_and_5;
|
134
|
+
begin
|
135
|
+
Assert.AreEqual('PlingPlang', Raindrops.Convert(15));
|
136
|
+
end;
|
137
|
+
|
138
|
+
procedure RaindropsTest.the_sound_for_21_is_PlingPlong_as_it_has_factors_3_and_7;
|
139
|
+
begin
|
140
|
+
Assert.AreEqual('PlingPlong', Raindrops.Convert(21));
|
141
|
+
end;
|
142
|
+
|
143
|
+
procedure RaindropsTest.the_sound_for_25_is_Plang_as_it_has_a_factor_5;
|
144
|
+
begin
|
145
|
+
Assert.AreEqual('Plang', Raindrops.Convert(25));
|
146
|
+
end;
|
147
|
+
|
148
|
+
procedure RaindropsTest.the_sound_for_27_is_Pling_as_it_has_a_factor_3;
|
149
|
+
begin
|
150
|
+
Assert.AreEqual('Pling', Raindrops.Convert(27));
|
151
|
+
end;
|
152
|
+
|
153
|
+
procedure RaindropsTest.the_sound_for_35_is_PlangPlong_as_it_has_factors_5_and_7;
|
154
|
+
begin
|
155
|
+
Assert.AreEqual('PlangPlong', Raindrops.Convert(35));
|
156
|
+
end;
|
157
|
+
|
158
|
+
procedure RaindropsTest.the_sound_for_49_is_Plong_as_it_has_a_factor_7;
|
159
|
+
begin
|
160
|
+
Assert.AreEqual('Plong', Raindrops.Convert(49));
|
161
|
+
end;
|
162
|
+
|
163
|
+
procedure RaindropsTest.the_sound_for_52_is_52;
|
164
|
+
begin
|
165
|
+
Assert.AreEqual('52', Raindrops.Convert(52));
|
166
|
+
end;
|
167
|
+
|
168
|
+
procedure RaindropsTest.the_sound_for_105_is_PlingPlangPlong_as_it_has_factors_3_5_7;
|
169
|
+
begin
|
170
|
+
Assert.AreEqual('PlingPlangPlong', Raindrops.Convert(105));
|
171
|
+
end;
|
172
|
+
|
173
|
+
procedure RaindropsTest.the_sound_for_3125_is_Plang_as_it_has_a_factor_5;
|
174
|
+
begin
|
175
|
+
Assert.AreEqual('Plang', Raindrops.Convert(3125));
|
176
|
+
end;
|
177
|
+
|
178
|
+
initialization
|
179
|
+
TDUnitX.RegisterTestFixture(RaindropsTest);
|
180
|
+
end.
|
@@ -9,34 +9,35 @@ type
|
|
9
9
|
RnaTranscriptionTest = class(TObject)
|
10
10
|
public
|
11
11
|
[Test]
|
12
|
+
// [Ignore('Comment the "[Ignore]" statement to run the test')]
|
12
13
|
procedure Rna_complement_of_cytosine_is_guanine;
|
13
14
|
|
14
15
|
[Test]
|
15
|
-
[Ignore
|
16
|
+
[Ignore]
|
16
17
|
procedure Rna_complement_of_guanine_is_cytosine;
|
17
18
|
|
18
19
|
[Test]
|
19
|
-
[Ignore
|
20
|
+
[Ignore]
|
20
21
|
procedure Rna_complement_of_thymine_is_adenine;
|
21
22
|
|
22
23
|
[Test]
|
23
|
-
[Ignore
|
24
|
+
[Ignore]
|
24
25
|
procedure Rna_complement_of_adenine_is_uracil;
|
25
26
|
|
26
27
|
[Test]
|
27
|
-
[Ignore
|
28
|
+
[Ignore]
|
28
29
|
procedure Rna_complement;
|
29
30
|
|
30
31
|
[Test]
|
31
|
-
[Ignore
|
32
|
+
[Ignore]
|
32
33
|
procedure Dna_correctly_handles_invalid_input;
|
33
34
|
|
34
35
|
[Test]
|
35
|
-
[Ignore
|
36
|
+
[Ignore]
|
36
37
|
procedure Dna_correctly_handles_completely_invalid_input;
|
37
38
|
|
38
39
|
[Test]
|
39
|
-
[Ignore
|
40
|
+
[Ignore]
|
40
41
|
procedure Dna_correctly_handles_partially_invalid_input;
|
41
42
|
end;
|
42
43
|
|
@@ -19,26 +19,27 @@ type
|
|
19
19
|
TSaddlePointTests = class(TObject)
|
20
20
|
public
|
21
21
|
[Test]
|
22
|
+
// [Ignore('Comment the "[Ignore]" statement to run the test')]
|
22
23
|
procedure Readme_example;
|
23
24
|
|
24
25
|
[Test]
|
25
|
-
[Ignore
|
26
|
+
[Ignore]
|
26
27
|
procedure No_saddle_point;
|
27
28
|
|
28
29
|
[Test]
|
29
|
-
[Ignore
|
30
|
+
[Ignore]
|
30
31
|
procedure Saddle_point;
|
31
32
|
|
32
33
|
[Test]
|
33
|
-
[Ignore
|
34
|
+
[Ignore]
|
34
35
|
procedure Another_saddle_point;
|
35
36
|
|
36
37
|
[Test]
|
37
|
-
[Ignore
|
38
|
+
[Ignore]
|
38
39
|
procedure Multiple_saddle_points;
|
39
40
|
|
40
41
|
[Test]
|
41
|
-
[Ignore
|
42
|
+
[Ignore]
|
42
43
|
procedure Five_by_five_matrix;
|
43
44
|
end;
|
44
45
|
|
data/tracks/go/config.json
CHANGED
@@ -134,14 +134,22 @@
|
|
134
134
|
]
|
135
135
|
},
|
136
136
|
{
|
137
|
-
"difficulty":
|
137
|
+
"difficulty": 5,
|
138
138
|
"slug": "secret-handshake",
|
139
|
-
"topics": [
|
139
|
+
"topics": [
|
140
|
+
"Bitwise operations",
|
141
|
+
"Arrays",
|
142
|
+
"Integers"
|
143
|
+
]
|
140
144
|
},
|
141
145
|
{
|
142
|
-
"difficulty":
|
146
|
+
"difficulty": 4,
|
143
147
|
"slug": "house",
|
144
|
-
"topics": [
|
148
|
+
"topics": [
|
149
|
+
"Strings",
|
150
|
+
"Text formatting",
|
151
|
+
"Recursion"
|
152
|
+
]
|
145
153
|
},
|
146
154
|
{
|
147
155
|
"difficulty": 1,
|
@@ -37,10 +37,8 @@ func TestTestVersion(t *testing.T) {
|
|
37
37
|
func TestAccumulate(t *testing.T) {
|
38
38
|
for _, test := range tests {
|
39
39
|
actual := Accumulate(test.given, test.converter)
|
40
|
-
if fmt.Sprintf("%
|
41
|
-
t.Fatalf("Accumulate(%
|
42
|
-
} else {
|
43
|
-
t.Logf("PASS: %s %v", test.description, test.given)
|
40
|
+
if fmt.Sprintf("%q", actual) != fmt.Sprintf("%q", test.expected) {
|
41
|
+
t.Fatalf("Accumulate(%q, %q): expected %q, actual %q", test.given, test.description, test.expected, actual)
|
44
42
|
}
|
45
43
|
}
|
46
44
|
}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
package luhn
|
2
|
+
|
3
|
+
// Source: exercism/x-common
|
4
|
+
// Commit: 715e23e luhn: tweak canonical tests (#547)
|
5
|
+
|
6
|
+
var testCases = []struct {
|
7
|
+
description string
|
8
|
+
input string
|
9
|
+
ok bool
|
10
|
+
}{
|
11
|
+
{
|
12
|
+
"single digit strings can not be valid",
|
13
|
+
"1",
|
14
|
+
false,
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"A single zero is invalid",
|
18
|
+
"0",
|
19
|
+
false,
|
20
|
+
},
|
21
|
+
{
|
22
|
+
"a simple valid SIN that remains valid if reversed",
|
23
|
+
"059",
|
24
|
+
true,
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"a simple valid SIN that becomes invalid if reversed",
|
28
|
+
"59",
|
29
|
+
true,
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"a valid Canadian SIN",
|
33
|
+
"055 444 285",
|
34
|
+
true,
|
35
|
+
},
|
36
|
+
{
|
37
|
+
"invalid Canadian SIN",
|
38
|
+
"055 444 286",
|
39
|
+
false,
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"invalid credit card",
|
43
|
+
"8273 1232 7352 0569",
|
44
|
+
false,
|
45
|
+
},
|
46
|
+
{
|
47
|
+
"valid strings with a non-digit included become invalid",
|
48
|
+
"055a 444 285",
|
49
|
+
false,
|
50
|
+
},
|
51
|
+
{
|
52
|
+
"valid strings with punctuation included become invalid",
|
53
|
+
"055-444-285",
|
54
|
+
false,
|
55
|
+
},
|
56
|
+
{
|
57
|
+
"valid strings with symbols included become invalid",
|
58
|
+
"055£ 444$ 285",
|
59
|
+
false,
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"single zero with space is invalid",
|
63
|
+
" 0",
|
64
|
+
false,
|
65
|
+
},
|
66
|
+
{
|
67
|
+
"more than a single zero is valid",
|
68
|
+
"0000 0",
|
69
|
+
true,
|
70
|
+
},
|
71
|
+
{
|
72
|
+
"input digit 9 is correctly converted to output digit 9",
|
73
|
+
"091",
|
74
|
+
true,
|
75
|
+
},
|
76
|
+
}
|