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