trackler 2.0.8.19 → 2.0.8.20
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/phone-number/canonical-data.json +2 -2
- data/lib/trackler/version.rb +1 -1
- data/tracks/c/config.json +7 -0
- data/tracks/c/exercises/react/makefile +16 -0
- data/tracks/c/exercises/react/src/example.c +185 -0
- data/tracks/c/exercises/react/src/react.h +29 -0
- data/tracks/c/exercises/react/test/test_react.c +324 -0
- data/tracks/c/exercises/react/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/react/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/react/test/vendor/unity_internals.h +701 -0
- data/tracks/csharp/.travis.yml +2 -9
- data/tracks/csharp/appveyor.yml +3 -3
- data/tracks/csharp/build.cake +13 -4
- data/tracks/csharp/build.ps1 +56 -164
- data/tracks/csharp/build.sh +33 -78
- data/tracks/csharp/circle.yml +2 -4
- data/tracks/csharp/config.json +2 -1
- data/tracks/csharp/exercises/leap/LeapTest.cs +8 -8
- data/tracks/csharp/generators/CanonicalData.cs +19 -0
- data/tracks/csharp/generators/CanonicalDataCase.cs +24 -0
- data/tracks/csharp/generators/CanonicalDataCaseJsonConverter.cs +32 -0
- data/tracks/csharp/generators/CanonicalDataCasesJsonConverter.cs +30 -0
- data/tracks/csharp/generators/CanonicalDataParser.cs +28 -0
- data/tracks/csharp/generators/ExerciseCollection.cs +23 -0
- data/tracks/csharp/generators/Exercises/Exercise.cs +14 -0
- data/tracks/csharp/generators/Exercises/LeapExercise.cs +35 -0
- data/tracks/csharp/generators/Generators.csproj +12 -0
- data/tracks/csharp/generators/Generators.csproj.user +6 -0
- data/tracks/csharp/generators/Generators.sln +22 -0
- data/tracks/csharp/generators/Program.cs +59 -0
- data/tracks/csharp/generators/TestClass.cs +13 -0
- data/tracks/csharp/generators/TestClassRenderer.cs +36 -0
- data/tracks/csharp/generators/TestMethod.cs +9 -0
- data/tracks/csharp/generators/TestMethodNameTransformer.cs +11 -0
- data/tracks/csharp/generators/TestMethodRenderer.cs +18 -0
- data/tracks/csharp/generators/To.cs +7 -0
- data/tracks/csharp/generators/generate.ps1 +2 -0
- data/tracks/csharp/generators/generate.sh +4 -0
- data/tracks/delphi/config.json +8 -0
- data/tracks/delphi/exercises/phone-number/uPhoneNumberExample.pas +6 -6
- data/tracks/delphi/exercises/phone-number/uPhoneNumberTests.pas +28 -17
- data/tracks/delphi/exercises/roman-numerals/RomanNumerals.dpr +60 -0
- data/tracks/delphi/exercises/roman-numerals/uRomanNumeralsExample.pas +49 -0
- data/tracks/delphi/exercises/roman-numerals/uRomanNumeralsTest.pas +216 -0
- data/tracks/elixir/config.json +22 -0
- data/tracks/elixir/exercises/poker/example.exs +136 -0
- data/tracks/elixir/exercises/poker/poker.exs +34 -0
- data/tracks/elixir/exercises/poker/poker_test.exs +217 -0
- data/tracks/elixir/exercises/protein-translation/example.exs +62 -0
- data/tracks/elixir/exercises/protein-translation/protein_translation.exs +34 -0
- data/tracks/elixir/exercises/protein-translation/protein_translation_test.exs +87 -0
- data/tracks/elixir/exercises/say/example.exs +139 -0
- data/tracks/elixir/exercises/say/say.exs +8 -0
- data/tracks/elixir/exercises/say/say_test.exs +85 -0
- data/tracks/go/exercises/robot-name/example.go +2 -0
- data/tracks/go/exercises/robot-name/robot_name_test.go +9 -1
- data/tracks/go/exercises/roman-numerals/roman_numerals_test.go +4 -1
- data/tracks/go/exercises/saddle-points/saddle_points_test.go +6 -6
- data/tracks/php/config.json +7 -0
- data/tracks/php/exercises/grade-school/example.php +35 -0
- data/tracks/php/exercises/grade-school/grade-school_test.php +84 -0
- metadata +43 -2
@@ -0,0 +1,18 @@
|
|
1
|
+
namespace Generators
|
2
|
+
{
|
3
|
+
public static class TestMethodRenderer
|
4
|
+
{
|
5
|
+
private const string TestMethodTemplate =
|
6
|
+
@" [Fact{Skip}]
|
7
|
+
public void {Name}()
|
8
|
+
{
|
9
|
+
{Body}
|
10
|
+
}";
|
11
|
+
|
12
|
+
public static string Render(TestMethod testMethod) =>
|
13
|
+
TestMethodTemplate
|
14
|
+
.Replace("{Name}", testMethod.MethodName)
|
15
|
+
.Replace("{Body}", testMethod.Body)
|
16
|
+
.Replace("{Skip}", testMethod.Index == 0 ? "" : "(Skip = \"Remove to run test\")");
|
17
|
+
}
|
18
|
+
}
|
data/tracks/delphi/config.json
CHANGED
@@ -5,10 +5,10 @@ interface
|
|
5
5
|
type
|
6
6
|
IPhoneNumber = interface(IInvokable)
|
7
7
|
['{2415B863-E2D7-4E13-BDEF-F7FE9B3E0788}']
|
8
|
-
function
|
8
|
+
function GetCleanNumber: string;
|
9
9
|
function GetAreaCode: string;
|
10
10
|
function ToString: string;
|
11
|
-
property
|
11
|
+
property Clean: string read GetCleanNumber;
|
12
12
|
property AreaCode: string read GetAreaCode;
|
13
13
|
end;
|
14
14
|
|
@@ -24,7 +24,7 @@ type
|
|
24
24
|
fContainsLetters: TRegex;
|
25
25
|
fNumber: string;
|
26
26
|
fAreaCode: string;
|
27
|
-
function
|
27
|
+
function GetCleanNumber: string;
|
28
28
|
function GetAreaCode: string;
|
29
29
|
function GetValidatedPhoneNumber(aPhoneNumber: string): string;
|
30
30
|
function StripOutNonNumerics(aValue: string): string;
|
@@ -34,7 +34,7 @@ type
|
|
34
34
|
public
|
35
35
|
constructor Create(aPhoneNumber: string);
|
36
36
|
function ToString: string;
|
37
|
-
property
|
37
|
+
property Clean: string read GetCleanNumber;
|
38
38
|
property AreaCode: string read GetAreaCode;
|
39
39
|
end;
|
40
40
|
|
@@ -51,7 +51,7 @@ begin
|
|
51
51
|
fAreaCode := fNumber.Substring(0, 3);
|
52
52
|
end;
|
53
53
|
|
54
|
-
function TPhoneNumber.
|
54
|
+
function TPhoneNumber.GetCleanNumber: string;
|
55
55
|
begin
|
56
56
|
result := fNumber;
|
57
57
|
end;
|
@@ -96,7 +96,7 @@ end;
|
|
96
96
|
|
97
97
|
function TPhoneNumber.ToString: string;
|
98
98
|
begin
|
99
|
-
result := Format('(%s) %s-%s',[AreaCode,
|
99
|
+
result := Format('(%s) %s-%s',[AreaCode, Clean.Substring(3, 3), Clean.Substring(6)]);
|
100
100
|
end;
|
101
101
|
|
102
102
|
end.
|
@@ -17,27 +17,31 @@ type
|
|
17
17
|
public
|
18
18
|
[Test]
|
19
19
|
// [Ignore('Comment the "[Ignore]" statement to run the test')]
|
20
|
-
procedure
|
20
|
+
procedure Cleans_the_number;
|
21
21
|
|
22
22
|
[Test]
|
23
23
|
[Ignore]
|
24
24
|
procedure Cleans_numbers_with_dots;
|
25
25
|
|
26
|
+
[Test]
|
27
|
+
[Ignore]
|
28
|
+
procedure Cleans_numbers_with_multiple_spaces;
|
29
|
+
|
26
30
|
[Test]
|
27
31
|
[Ignore]
|
28
32
|
procedure Valid_when_11_digits_and_starting_with_1;
|
29
33
|
|
30
34
|
[Test]
|
31
35
|
[Ignore]
|
32
|
-
procedure
|
36
|
+
procedure Invalid_when_9_digits;
|
33
37
|
|
34
38
|
[Test]
|
35
39
|
[Ignore]
|
36
|
-
procedure
|
40
|
+
procedure Invalid_when_11_digits_does_not_start_with_a_1;
|
37
41
|
|
38
42
|
[Test]
|
39
43
|
[Ignore]
|
40
|
-
procedure
|
44
|
+
procedure Invalid_when_more_than_11_digits;
|
41
45
|
|
42
46
|
[Test]
|
43
47
|
[Ignore]
|
@@ -52,7 +56,7 @@ type
|
|
52
56
|
procedure Invalid_with_right_number_of_digits_but_letters_mixed_in;
|
53
57
|
|
54
58
|
[Test]
|
55
|
-
[Ignore]
|
59
|
+
[Ignore('This is a bonus test')]
|
56
60
|
procedure Has_an_area_code;
|
57
61
|
|
58
62
|
[Test]
|
@@ -63,67 +67,74 @@ type
|
|
63
67
|
implementation
|
64
68
|
uses uPhoneNumber;
|
65
69
|
|
66
|
-
procedure PhoneNumberTests.
|
70
|
+
procedure PhoneNumberTests.Cleans_the_number;
|
67
71
|
var phone: IPhoneNumber;
|
68
72
|
begin
|
69
73
|
phone := NewPhoneNumber('(123) 456-7890');
|
70
|
-
assert.AreEqual('1234567890',phone.
|
74
|
+
assert.AreEqual('1234567890',phone.Clean);
|
71
75
|
end;
|
72
76
|
|
73
77
|
procedure PhoneNumberTests.Cleans_numbers_with_dots;
|
74
78
|
var phone: IPhoneNumber;
|
75
79
|
begin
|
76
80
|
phone := NewPhoneNumber('123.456.7890');
|
77
|
-
assert.AreEqual('1234567890',phone.
|
81
|
+
assert.AreEqual('1234567890',phone.Clean);
|
82
|
+
end;
|
83
|
+
|
84
|
+
procedure PhoneNumberTests.Cleans_numbers_with_multiple_spaces;
|
85
|
+
var phone: IPhoneNumber;
|
86
|
+
begin
|
87
|
+
phone := NewPhoneNumber('123 456 7890 ');
|
88
|
+
assert.AreEqual('1234567890',phone.Clean);
|
78
89
|
end;
|
79
90
|
|
80
91
|
procedure PhoneNumberTests.Valid_when_11_digits_and_starting_with_1;
|
81
92
|
var phone: IPhoneNumber;
|
82
93
|
begin
|
83
94
|
phone := NewPhoneNumber('11234567890');
|
84
|
-
assert.AreEqual('1234567890', phone.
|
95
|
+
assert.AreEqual('1234567890', phone.Clean);
|
85
96
|
end;
|
86
97
|
|
87
|
-
procedure PhoneNumberTests.
|
98
|
+
procedure PhoneNumberTests.Invalid_when_11_digits_does_not_start_with_a_1;
|
88
99
|
var phone: IPhoneNumber;
|
89
100
|
begin
|
90
101
|
phone := NewPhoneNumber('21234567890');
|
91
|
-
assert.AreEqual('', phone.
|
102
|
+
assert.AreEqual('', phone.Clean);
|
92
103
|
end;
|
93
104
|
|
94
|
-
procedure PhoneNumberTests.
|
105
|
+
procedure PhoneNumberTests.Invalid_when_more_than_11_digits;
|
95
106
|
var phone: IPhoneNumber;
|
96
107
|
begin
|
97
108
|
phone := NewPhoneNumber('321234567890');
|
98
|
-
assert.AreEqual('', phone.
|
109
|
+
assert.AreEqual('', phone.Clean);
|
99
110
|
end;
|
100
111
|
|
101
112
|
procedure PhoneNumberTests.Invalid_when_9_digits;
|
102
113
|
var phone: IPhoneNumber;
|
103
114
|
begin
|
104
115
|
phone := NewPhoneNumber('123456789');
|
105
|
-
assert.AreEqual('', phone.
|
116
|
+
assert.AreEqual('', phone.Clean);
|
106
117
|
end;
|
107
118
|
|
108
119
|
procedure PhoneNumberTests.Invalid_with_letters;
|
109
120
|
var phone: IPhoneNumber;
|
110
121
|
begin
|
111
122
|
phone := NewPhoneNumber('123-abc-7890');
|
112
|
-
assert.AreEqual('', phone.
|
123
|
+
assert.AreEqual('', phone.Clean);
|
113
124
|
end;
|
114
125
|
|
115
126
|
procedure PhoneNumberTests.Invalid_with_punctuations;
|
116
127
|
var phone: IPhoneNumber;
|
117
128
|
begin
|
118
129
|
phone := NewPhoneNumber('123-@:!-7890');
|
119
|
-
assert.AreEqual('', phone.
|
130
|
+
assert.AreEqual('', phone.Clean);
|
120
131
|
end;
|
121
132
|
|
122
133
|
procedure PhoneNumberTests.Invalid_with_right_number_of_digits_but_letters_mixed_in;
|
123
134
|
var phone: IPhoneNumber;
|
124
135
|
begin
|
125
136
|
phone := NewPhoneNumber('1a2b3c4d5e6f7g8h9i0j');
|
126
|
-
assert.AreEqual('', phone.
|
137
|
+
assert.AreEqual('', phone.Clean);
|
127
138
|
end;
|
128
139
|
|
129
140
|
procedure PhoneNumberTests.Has_an_area_code;
|
@@ -0,0 +1,60 @@
|
|
1
|
+
program RomanNumerals;
|
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
|
+
uRomanNumeralsTest in 'uRomanNumeralsTest.pas',
|
15
|
+
uRomanNumerals in 'uRomanNumerals.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,49 @@
|
|
1
|
+
unit uRomanNumerals;
|
2
|
+
|
3
|
+
interface
|
4
|
+
|
5
|
+
type
|
6
|
+
RomanNumeralHelper = record helper for integer
|
7
|
+
public
|
8
|
+
function ToRoman: string;
|
9
|
+
end;
|
10
|
+
|
11
|
+
implementation
|
12
|
+
uses System.Generics.Collections;
|
13
|
+
|
14
|
+
function RomanNumeralHelper.ToRoman: string;
|
15
|
+
var ArabicToRomanConversions: TList<TPair<integer, string>>;
|
16
|
+
conversion: TPair<integer, string>;
|
17
|
+
lInt: integer;
|
18
|
+
begin
|
19
|
+
result := '';
|
20
|
+
lInt := self;
|
21
|
+
ArabicToRomanConversions := TList<TPair<integer, string>>.create;
|
22
|
+
with ArabicToRomanConversions do
|
23
|
+
begin
|
24
|
+
Add(TPair<integer, string>.Create(1000, 'M'));
|
25
|
+
Add(TPair<integer, string>.Create(900, 'CM'));
|
26
|
+
Add(TPair<integer, string>.Create(500, 'D'));
|
27
|
+
Add(TPair<integer, string>.Create(400, 'CD'));
|
28
|
+
Add(TPair<integer, string>.Create(100, 'C'));
|
29
|
+
Add(TPair<integer, string>.Create(90, 'XC'));
|
30
|
+
Add(TPair<integer, string>.Create(50, 'L'));
|
31
|
+
Add(TPair<integer, string>.Create(40, 'XL'));
|
32
|
+
Add(TPair<integer, string>.Create(10, 'X'));
|
33
|
+
Add(TPair<integer, string>.Create(9, 'IX'));
|
34
|
+
Add(TPair<integer, string>.Create(5, 'V'));
|
35
|
+
Add(TPair<integer, string>.Create(4, 'IV'));
|
36
|
+
Add(TPair<integer, string>.Create(1, 'I'));
|
37
|
+
end;
|
38
|
+
|
39
|
+
for conversion in ArabicToRomanConversions do
|
40
|
+
begin
|
41
|
+
while (lInt div conversion.Key) > 0 do
|
42
|
+
begin
|
43
|
+
lInt := lInt - conversion.Key;
|
44
|
+
result := result + conversion.Value;
|
45
|
+
end;
|
46
|
+
end;
|
47
|
+
end;
|
48
|
+
|
49
|
+
end.
|
@@ -0,0 +1,216 @@
|
|
1
|
+
unit uRomanNumeralsTest;
|
2
|
+
|
3
|
+
interface
|
4
|
+
uses
|
5
|
+
DUnitX.TestFramework;
|
6
|
+
|
7
|
+
type
|
8
|
+
|
9
|
+
[TestFixture]
|
10
|
+
RomanNumeralsTest = class(TObject)
|
11
|
+
public
|
12
|
+
[Test]
|
13
|
+
// [Ignore('Comment the "[Ignore]" statement to run the test')]
|
14
|
+
procedure One_is_a_single_I;
|
15
|
+
|
16
|
+
[Test]
|
17
|
+
[Ignore]
|
18
|
+
procedure Two_is_two_I_s;
|
19
|
+
|
20
|
+
[Test]
|
21
|
+
[Ignore]
|
22
|
+
procedure Three_is_three_I_s;
|
23
|
+
|
24
|
+
[Test]
|
25
|
+
[Ignore]
|
26
|
+
procedure Four_being_5_minus_1_is_IV;
|
27
|
+
|
28
|
+
[Test]
|
29
|
+
[Ignore]
|
30
|
+
procedure Five_is_a_single_V;
|
31
|
+
|
32
|
+
[Test]
|
33
|
+
[Ignore]
|
34
|
+
procedure Six_being_5_plus_1_is_VI;
|
35
|
+
|
36
|
+
[Test]
|
37
|
+
[Ignore]
|
38
|
+
procedure Nine_being_10_minus_1_is_IX;
|
39
|
+
|
40
|
+
[Test]
|
41
|
+
[Ignore]
|
42
|
+
procedure Twenty_is_two_X_s;
|
43
|
+
|
44
|
+
[Test]
|
45
|
+
[Ignore]
|
46
|
+
procedure Fourty_eight_is_not_50_minus_2_but_rather_40_plus_8;
|
47
|
+
|
48
|
+
[Test]
|
49
|
+
[Ignore]
|
50
|
+
procedure Fifty_is_a_single_L;
|
51
|
+
|
52
|
+
[Test]
|
53
|
+
[Ignore]
|
54
|
+
procedure Ninety_being_100_minus_10_is_XC;
|
55
|
+
|
56
|
+
[Test]
|
57
|
+
[Ignore]
|
58
|
+
procedure One_hundred_is_a_single_C;
|
59
|
+
|
60
|
+
[Test]
|
61
|
+
[Ignore]
|
62
|
+
procedure Sixety_being_50_plus_10_is_LX;
|
63
|
+
|
64
|
+
[Test]
|
65
|
+
[Ignore]
|
66
|
+
procedure Four_hundred_being_500_minus_100_is_CD;
|
67
|
+
|
68
|
+
[Test]
|
69
|
+
[Ignore]
|
70
|
+
procedure Five_hundred_is_a_single_D;
|
71
|
+
|
72
|
+
[Test]
|
73
|
+
[Ignore]
|
74
|
+
procedure Nine_hundred_being_1000_minus_100_is_CM;
|
75
|
+
|
76
|
+
[Test]
|
77
|
+
[Ignore]
|
78
|
+
procedure One_thousand_is_a_single_M;
|
79
|
+
|
80
|
+
[Test]
|
81
|
+
[Ignore]
|
82
|
+
procedure Three_thousand_is_three_M_s;
|
83
|
+
end;
|
84
|
+
|
85
|
+
implementation
|
86
|
+
uses uRomanNumerals;
|
87
|
+
|
88
|
+
procedure RomanNumeralsTest.One_is_a_single_I;
|
89
|
+
var arabicNumeral: integer;
|
90
|
+
begin
|
91
|
+
arabicNumeral := 1;
|
92
|
+
Assert.AreEqual('I', arabicNumeral.ToRoman);
|
93
|
+
end;
|
94
|
+
|
95
|
+
procedure RomanNumeralsTest.Two_is_two_I_s;
|
96
|
+
var arabicNumeral: integer;
|
97
|
+
begin
|
98
|
+
arabicNumeral := 2;
|
99
|
+
Assert.AreEqual('II', arabicNumeral.ToRoman);
|
100
|
+
end;
|
101
|
+
|
102
|
+
procedure RomanNumeralsTest.Three_is_three_I_s;
|
103
|
+
var arabicNumeral: integer;
|
104
|
+
begin
|
105
|
+
arabicNumeral := 3;
|
106
|
+
Assert.AreEqual('III', arabicNumeral.ToRoman);
|
107
|
+
end;
|
108
|
+
|
109
|
+
procedure RomanNumeralsTest.Four_being_5_minus_1_is_IV;
|
110
|
+
var arabicNumeral: integer;
|
111
|
+
begin
|
112
|
+
arabicNumeral := 4;
|
113
|
+
Assert.AreEqual('IV', arabicNumeral.ToRoman);
|
114
|
+
end;
|
115
|
+
|
116
|
+
procedure RomanNumeralsTest.Five_is_a_single_V;
|
117
|
+
var arabicNumeral: integer;
|
118
|
+
begin
|
119
|
+
arabicNumeral := 5;
|
120
|
+
Assert.AreEqual('V', arabicNumeral.ToRoman);
|
121
|
+
end;
|
122
|
+
|
123
|
+
procedure RomanNumeralsTest.Six_being_5_plus_1_is_VI;
|
124
|
+
var arabicNumeral: integer;
|
125
|
+
begin
|
126
|
+
arabicNumeral := 6;
|
127
|
+
Assert.AreEqual('VI', arabicNumeral.ToRoman);
|
128
|
+
end;
|
129
|
+
|
130
|
+
procedure RomanNumeralsTest.Nine_being_10_minus_1_is_IX;
|
131
|
+
var arabicNumeral: integer;
|
132
|
+
begin
|
133
|
+
arabicNumeral := 9;
|
134
|
+
Assert.AreEqual('IX', arabicNumeral.ToRoman);
|
135
|
+
end;
|
136
|
+
|
137
|
+
procedure RomanNumeralsTest.Twenty_is_two_X_s;
|
138
|
+
var arabicNumeral: integer;
|
139
|
+
begin
|
140
|
+
arabicNumeral := 20;
|
141
|
+
Assert.AreEqual('XX', arabicNumeral.ToRoman);
|
142
|
+
end;
|
143
|
+
|
144
|
+
procedure RomanNumeralsTest.Fourty_eight_is_not_50_minus_2_but_rather_40_plus_8;
|
145
|
+
var arabicNumeral: integer;
|
146
|
+
begin
|
147
|
+
arabicNumeral := 48;
|
148
|
+
Assert.AreEqual('XLVIII', arabicNumeral.ToRoman);
|
149
|
+
end;
|
150
|
+
|
151
|
+
procedure RomanNumeralsTest.Fifty_is_a_single_L;
|
152
|
+
var arabicNumeral: integer;
|
153
|
+
begin
|
154
|
+
arabicNumeral := 50;
|
155
|
+
Assert.AreEqual('L', arabicNumeral.ToRoman);
|
156
|
+
end;
|
157
|
+
|
158
|
+
procedure RomanNumeralsTest.Ninety_being_100_minus_10_is_XC;
|
159
|
+
var arabicNumeral: integer;
|
160
|
+
begin
|
161
|
+
arabicNumeral := 90;
|
162
|
+
Assert.AreEqual('XC', arabicNumeral.ToRoman);
|
163
|
+
end;
|
164
|
+
|
165
|
+
procedure RomanNumeralsTest.One_hundred_is_a_single_C;
|
166
|
+
var arabicNumeral: integer;
|
167
|
+
begin
|
168
|
+
arabicNumeral := 100;
|
169
|
+
Assert.AreEqual('C', arabicNumeral.ToRoman);
|
170
|
+
end;
|
171
|
+
|
172
|
+
procedure RomanNumeralsTest.Sixety_being_50_plus_10_is_LX;
|
173
|
+
var arabicNumeral: integer;
|
174
|
+
begin
|
175
|
+
arabicNumeral := 60;
|
176
|
+
Assert.AreEqual('LX', arabicNumeral.ToRoman);
|
177
|
+
end;
|
178
|
+
|
179
|
+
procedure RomanNumeralsTest.Four_hundred_being_500_minus_100_is_CD;
|
180
|
+
var arabicNumeral: integer;
|
181
|
+
begin
|
182
|
+
arabicNumeral := 400;
|
183
|
+
Assert.AreEqual('CD', arabicNumeral.ToRoman);
|
184
|
+
end;
|
185
|
+
|
186
|
+
procedure RomanNumeralsTest.Five_hundred_is_a_single_D;
|
187
|
+
var arabicNumeral: integer;
|
188
|
+
begin
|
189
|
+
arabicNumeral := 500;
|
190
|
+
Assert.AreEqual('D', arabicNumeral.ToRoman);
|
191
|
+
end;
|
192
|
+
|
193
|
+
procedure RomanNumeralsTest.Nine_hundred_being_1000_minus_100_is_CM;
|
194
|
+
var arabicNumeral: integer;
|
195
|
+
begin
|
196
|
+
arabicNumeral := 900;
|
197
|
+
Assert.AreEqual('CM', arabicNumeral.ToRoman);
|
198
|
+
end;
|
199
|
+
|
200
|
+
procedure RomanNumeralsTest.One_thousand_is_a_single_M;
|
201
|
+
var arabicNumeral: integer;
|
202
|
+
begin
|
203
|
+
arabicNumeral := 1000;
|
204
|
+
Assert.AreEqual('M', arabicNumeral.ToRoman);
|
205
|
+
end;
|
206
|
+
|
207
|
+
procedure RomanNumeralsTest.Three_thousand_is_three_M_s;
|
208
|
+
var arabicNumeral: integer;
|
209
|
+
begin
|
210
|
+
arabicNumeral := 3000;
|
211
|
+
Assert.AreEqual('MMM', arabicNumeral.ToRoman);
|
212
|
+
end;
|
213
|
+
|
214
|
+
initialization
|
215
|
+
TDUnitX.RegisterTestFixture(RomanNumeralsTest);
|
216
|
+
end.
|