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