trackler 2.0.6.22 → 2.0.6.23
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/book-store/canonical-data.json +61 -80
- data/common/exercises/etl/canonical-data.json +69 -0
- data/lib/trackler/version.rb +1 -1
- data/tracks/go/config.json +10 -4
- data/tracks/java/config.json +13 -1
- data/tracks/java/exercises/diamond/build.gradle +17 -0
- data/tracks/java/exercises/diamond/src/example/java/DiamondPrinter.java +41 -0
- data/tracks/java/exercises/diamond/src/main/java/DiamondPrinter.java +5 -0
- data/tracks/java/exercises/diamond/src/test/java/DiamondPrinterTest.java +111 -0
- data/tracks/java/exercises/grade-school/src/example/java/School.java +20 -19
- data/tracks/java/exercises/grade-school/src/test/java/SchoolTest.java +53 -20
- data/tracks/java/exercises/secret-handshake/build.gradle +17 -0
- data/tracks/java/exercises/secret-handshake/src/example/java/HandshakeCalculator.java +29 -0
- data/tracks/java/exercises/secret-handshake/src/example/java/Signal.java +1 -0
- data/tracks/java/exercises/secret-handshake/src/main/java/HandshakeCalculator.java +5 -0
- data/tracks/java/exercises/secret-handshake/src/main/java/Signal.java +5 -0
- data/tracks/java/exercises/secret-handshake/src/test/java/HandshakeCalculatorTest.java +106 -0
- data/tracks/java/exercises/settings.gradle +2 -0
- data/tracks/julia/config.json +42 -0
- data/tracks/julia/exercises/bob/bob.jl +3 -0
- data/tracks/julia/exercises/bob/example.jl +30 -0
- data/tracks/julia/exercises/bob/runtests.jl +70 -0
- data/tracks/julia/exercises/difference-of-squares/difference-of-squares.jl +14 -0
- data/tracks/julia/exercises/difference-of-squares/example.jl +9 -0
- data/tracks/julia/exercises/difference-of-squares/runtests.jl +22 -0
- data/tracks/julia/exercises/hamming/example.jl +5 -0
- data/tracks/julia/exercises/hamming/hamming.jl +3 -0
- data/tracks/julia/exercises/hamming/runtests.jl +42 -0
- data/tracks/julia/exercises/hello-world/example.jl +3 -0
- data/tracks/julia/exercises/hello-world/hello-world.jl +3 -0
- data/tracks/julia/exercises/hello-world/runtests.jl +12 -0
- data/tracks/julia/exercises/word-count/example.jl +9 -0
- data/tracks/julia/exercises/word-count/runtests.jl +47 -0
- data/tracks/julia/exercises/word-count/word-count.jl +3 -0
- data/tracks/objective-c/config.json +10 -0
- data/tracks/objective-c/exercises/flatten-array/FlattenArrayExample.h +6 -0
- data/tracks/objective-c/exercises/flatten-array/FlattenArrayExample.m +48 -0
- data/tracks/objective-c/exercises/flatten-array/FlattenArrayTest.m +110 -0
- data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +33 -0
- data/tracks/ocaml/config.json +5 -0
- data/tracks/ocaml/exercises/pangram/.merlin +3 -0
- data/tracks/ocaml/exercises/pangram/Makefile +11 -0
- data/tracks/ocaml/exercises/pangram/example.ml +9 -0
- data/tracks/ocaml/exercises/pangram/pangram.mli +1 -0
- data/tracks/ocaml/exercises/pangram/test.ml +29 -0
- data/tracks/ocaml/tools/test-generator/templates/pangram/template.ml +15 -0
- data/tracks/pascal/config.json +8 -0
- data/tracks/pascal/docs/INSTALLATION.md +3 -3
- data/tracks/pascal/docs/img/07delphiclicklibrarypathbuttonLogo.png +0 -0
- data/tracks/pascal/exercises/grains/GrainsTests.dpr +60 -0
- data/tracks/pascal/exercises/grains/uGrainsExample.pas +33 -0
- data/tracks/pascal/exercises/grains/uGrainsTests.pas +149 -0
- data/tracks/perl6/SETUP.md +8 -2
- metadata +41 -2
@@ -48,6 +48,11 @@
|
|
48
48
|
1EFACABB1CCCAF3D006F2E69 /* WordCountExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EFACAA11CCCAF3D006F2E69 /* WordCountExample.m */; };
|
49
49
|
1EFACABC1CCCAF3D006F2E69 /* WordCountTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EFACAA21CCCAF3D006F2E69 /* WordCountTest.m */; };
|
50
50
|
|
51
|
+
A09A4C031E38761A00FEFB7A /* FlattenArrayExample.m in Sources */ = {isa = PBXBuildFile; fileRef = A09A4C021E38761A00FEFB7A /* FlattenArrayExample.m */; };
|
52
|
+
A09A4C051E38763300FEFB7A /* FlattenArrayTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A09A4C041E38763300FEFB7A /* FlattenArrayTest.m */; };
|
53
|
+
E907D0CA1D6B731600106C42 /* GigasecondExample.m in Sources */ = {isa = PBXBuildFile; fileRef = E907D0C91D6B731600106C42 /* GigasecondExample.m */; };
|
54
|
+
|
55
|
+
|
51
56
|
A0BBFCBF1E37719800230071 /* SublistExample.m in Sources */ = {isa = PBXBuildFile; fileRef = A0BBFCBE1E37719800230071 /* SublistExample.m */; };
|
52
57
|
A0BBFCC31E37728100230071 /* SublistTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A0BBFCC21E37728100230071 /* SublistTest.m */; };
|
53
58
|
|
@@ -141,6 +146,11 @@
|
|
141
146
|
1EFACAA11CCCAF3D006F2E69 /* WordCountExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WordCountExample.m; path = "../../exercises/word-count/WordCountExample.m"; sourceTree = "<group>"; };
|
142
147
|
1EFACAA21CCCAF3D006F2E69 /* WordCountTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WordCountTest.m; path = "../../exercises/word-count/WordCountTest.m"; sourceTree = "<group>"; };
|
143
148
|
|
149
|
+
A09A4C011E38761A00FEFB7A /* FlattenArrayExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FlattenArrayExample.h; path = "../../exercises/flatten-array/FlattenArrayExample.h"; sourceTree = "<group>"; };
|
150
|
+
A09A4C021E38761A00FEFB7A /* FlattenArrayExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FlattenArrayExample.m; path = "../../exercises/flatten-array/FlattenArrayExample.m"; sourceTree = "<group>"; };
|
151
|
+
A09A4C041E38763300FEFB7A /* FlattenArrayTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FlattenArrayTest.m; path = "../../exercises/flatten-array/FlattenArrayTest.m"; sourceTree = "<group>"; };
|
152
|
+
|
153
|
+
|
144
154
|
A0BBFCBD1E37719800230071 /* SublistExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SublistExample.h; path = ../../exercises/sublist/SublistExample.h; sourceTree = "<group>"; };
|
145
155
|
A0BBFCBE1E37719800230071 /* SublistExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SublistExample.m; path = ../../exercises/sublist/SublistExample.m; sourceTree = "<group>"; };
|
146
156
|
A0BBFCC21E37728100230071 /* SublistTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SublistTest.m; path = ../../exercises/sublist/SublistTest.m; sourceTree = "<group>"; };
|
@@ -155,6 +165,7 @@
|
|
155
165
|
A065F5771E3098080048E337 /* BeerSongTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BeerSongTest.m; path = "../../exercises/beer-song/BeerSongTest.m"; sourceTree = "<group>"; };
|
156
166
|
|
157
167
|
|
168
|
+
|
158
169
|
E907D0C81D6B731600106C42 /* GigasecondExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GigasecondExample.h; path = ../../exercises/gigasecond/GigasecondExample.h; sourceTree = "<group>"; };
|
159
170
|
E907D0C91D6B731600106C42 /* GigasecondExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GigasecondExample.m; path = ../../exercises/gigasecond/GigasecondExample.m; sourceTree = "<group>"; };
|
160
171
|
E907D0CB1D6B734800106C42 /* GigasecondTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GigasecondTest.m; path = ../../exercises/gigasecond/GigasecondTest.m; sourceTree = "<group>"; };
|
@@ -239,6 +250,7 @@
|
|
239
250
|
E9381D4F1D8F2DA4003F22A1 /* Clock */,
|
240
251
|
E9381D431D8EDFB8003F22A1 /* DifferenceOfSquares */,
|
241
252
|
E9E8B6ED1D519DF50012F12C /* Etl */,
|
253
|
+
A09A4C001E3875C200FEFB7A /* FlattenArray */,
|
242
254
|
E907D0C71D6B72B600106C42 /* Gigasecond */,
|
243
255
|
E9E8B6EE1D519DFE0012F12C /* GradeSchool */,
|
244
256
|
E9E8B6EF1D519E040012F12C /* Hamming */,
|
@@ -285,6 +297,18 @@
|
|
285
297
|
sourceTree = "<group>";
|
286
298
|
};
|
287
299
|
|
300
|
+
A09A4C001E3875C200FEFB7A /* FlattenArray */ = {
|
301
|
+
isa = PBXGroup;
|
302
|
+
children = (
|
303
|
+
A09A4C011E38761A00FEFB7A /* FlattenArrayExample.h */,
|
304
|
+
A09A4C021E38761A00FEFB7A /* FlattenArrayExample.m */,
|
305
|
+
A09A4C041E38763300FEFB7A /* FlattenArrayTest.m */,
|
306
|
+
);
|
307
|
+
name = FlattenArray;
|
308
|
+
sourceTree = "<group>";
|
309
|
+
};
|
310
|
+
|
311
|
+
|
288
312
|
A0BBFCBC1E37703D00230071 /* Sublist */ = {
|
289
313
|
isa = PBXGroup;
|
290
314
|
children = (
|
@@ -320,6 +344,7 @@
|
|
320
344
|
};
|
321
345
|
|
322
346
|
|
347
|
+
|
323
348
|
E907D0C71D6B72B600106C42 /* Gigasecond */ = {
|
324
349
|
isa = PBXGroup;
|
325
350
|
children = (
|
@@ -734,7 +759,11 @@
|
|
734
759
|
E9C1C0291D9DB16B0015E86E /* AcronymExample.m in Sources */,
|
735
760
|
1EFACAA41CCCAF3D006F2E69 /* AnagramTest.m in Sources */,
|
736
761
|
E907FE921D87547D00B93DA9 /* ScrabbleScoreExample.m in Sources */,
|
762
|
+
|
763
|
+
A09A4C051E38763300FEFB7A /* FlattenArrayTest.m in Sources */,
|
764
|
+
|
737
765
|
A097D4101E363C2700EAF2C2 /* BracketPushTest.m in Sources */,
|
766
|
+
|
738
767
|
1EFACABC1CCCAF3D006F2E69 /* WordCountTest.m in Sources */,
|
739
768
|
1EFACAB11CCCAF3D006F2E69 /* NucleotideCountExample.m in Sources */,
|
740
769
|
E9381D481D8EE00C003F22A1 /* DifferenceOfSquaresTest.m in Sources */,
|
@@ -750,7 +779,11 @@
|
|
750
779
|
E9381D521D8F2DCC003F22A1 /* ClockExample.m in Sources */,
|
751
780
|
E99D1D811D5533BF0006A303 /* SumOfMultiplesExample.m in Sources */,
|
752
781
|
E9F390071DFCA337005C5F46 /* IsogramExample.m in Sources */,
|
782
|
+
|
783
|
+
A09A4C031E38761A00FEFB7A /* FlattenArrayExample.m in Sources */,
|
784
|
+
|
753
785
|
A0BBFCC31E37728100230071 /* SublistTest.m in Sources */,
|
786
|
+
|
754
787
|
E9C1C02F1D9EC1130015E86E /* RunLengthEncodingExample.m in Sources */,
|
755
788
|
E92FCC0F1D78F3B600061017 /* MeetupTest.m in Sources */,
|
756
789
|
E9381D4E1D8F2982003F22A1 /* RaindropsTest.m in Sources */,
|
data/tracks/ocaml/config.json
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
open Core.Std
|
2
|
+
|
3
|
+
let string_to_set s = Char.Set.of_list (String.to_list s)
|
4
|
+
|
5
|
+
let alphabet_set = string_to_set "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
6
|
+
|
7
|
+
let is_pangram s =
|
8
|
+
let normalize s = String.filter ~f:Char.is_alpha s |> String.uppercase in
|
9
|
+
Set.equal alphabet_set (string_to_set @@ normalize s)
|
@@ -0,0 +1 @@
|
|
1
|
+
val is_pangram : string -> bool
|
@@ -0,0 +1,29 @@
|
|
1
|
+
open Core.Std
|
2
|
+
open OUnit2
|
3
|
+
open Pangram
|
4
|
+
|
5
|
+
let ae exp got _test_ctxt = assert_equal ~printer:Bool.to_string exp got
|
6
|
+
|
7
|
+
let tests = [
|
8
|
+
"sentence empty" >::
|
9
|
+
ae false (is_pangram "");
|
10
|
+
"pangram with only lower case" >::
|
11
|
+
ae true (is_pangram "the quick brown fox jumps over the lazy dog");
|
12
|
+
"missing character 'x'" >::
|
13
|
+
ae false (is_pangram "a quick movement of the enemy will jeopardize five gunboats");
|
14
|
+
"another missing character 'x'" >::
|
15
|
+
ae false (is_pangram "the quick brown fish jumps over the lazy dog");
|
16
|
+
"pangram with underscores" >::
|
17
|
+
ae true (is_pangram "the_quick_brown_fox_jumps_over_the_lazy_dog");
|
18
|
+
"pangram with numbers" >::
|
19
|
+
ae true (is_pangram "the 1 quick brown fox jumps over the 2 lazy dogs");
|
20
|
+
"missing letters replaced by numbers" >::
|
21
|
+
ae false (is_pangram "7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog");
|
22
|
+
"pangram with mixed case and punctuation" >::
|
23
|
+
ae true (is_pangram "\"Five quacking Zephyrs jolt my wax bed.\"");
|
24
|
+
"upper and lower case versions of the same character should not be counted separately" >::
|
25
|
+
ae false (is_pangram "the quick brown fox jumped over the lazy FOX");
|
26
|
+
]
|
27
|
+
|
28
|
+
let () =
|
29
|
+
run_test_tt_main ("pangram tests" >::: tests)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
open Core.Std
|
2
|
+
open OUnit2
|
3
|
+
open Pangram
|
4
|
+
|
5
|
+
let ae exp got _test_ctxt = assert_equal ~printer:Bool.to_string exp got
|
6
|
+
|
7
|
+
let tests = [
|
8
|
+
(* TEST
|
9
|
+
"$description" >::
|
10
|
+
ae $expected (is_pangram "$input");
|
11
|
+
END TEST *)
|
12
|
+
]
|
13
|
+
|
14
|
+
let () =
|
15
|
+
run_test_tt_main ("pangram tests" >::: tests)
|
data/tracks/pascal/config.json
CHANGED
@@ -23,7 +23,7 @@ If you had to install DUnitX because your installation didn't already come with
|
|
23
23
|
|
24
24
|
*Note: it is assumed that you have completed the installation of Delphi by this point.*
|
25
25
|
|
26
|
-
- Start Delphi. If your installation is new you will most likely end up at a Welcome Page similar to this.
|
26
|
+
- Start Delphi. If your installation is new you will most likely end up at a `Welcome Page` similar to this.
|
27
27
|
|
28
28
|
[](http://x.exercism.io/v3/tracks/pascal/docs/img/00delphiwelcomepage.png)
|
29
29
|
|
@@ -49,11 +49,11 @@ If you had to install DUnitX because your installation didn't already come with
|
|
49
49
|
|
50
50
|
- Locate and click on `Library` along the left side of the Options screen.
|
51
51
|
|
52
|
-
](http://x.exercism.io/v3/tracks/pascal/docs/img/06delphioptionslibrary.png)
|
53
53
|
|
54
54
|
- Click the `...` button associated with the Library path in the Directories group
|
55
55
|
|
56
|
-

|
56
|
+
[](http://x.exercism.io/v3/tracks/pascal/docs/img/07delphiclicklibrarypathbutton.png)
|
57
57
|
|
58
58
|
- In the Directories window enter the variable name that you created a few steps ago. The entry should appear like this `$(DUNITX)`
|
59
59
|
|
Binary file
|
@@ -0,0 +1,60 @@
|
|
1
|
+
program GrainsTests;
|
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
|
+
uGrainsTests in 'uGrainsTests.pas',
|
15
|
+
uGrains in 'uGrains.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,33 @@
|
|
1
|
+
unit uGrains;
|
2
|
+
|
3
|
+
interface
|
4
|
+
|
5
|
+
type
|
6
|
+
Grains = class
|
7
|
+
class function Square(aInteger: integer): UInt64; static;
|
8
|
+
class function Total: UInt64; static;
|
9
|
+
end;
|
10
|
+
|
11
|
+
implementation
|
12
|
+
uses System.SysUtils;
|
13
|
+
|
14
|
+
class function Grains.Square(aInteger: integer): UInt64;
|
15
|
+
begin
|
16
|
+
if (aInteger < 1) or (aInteger > 64) then
|
17
|
+
raise ERangeError.CreateFmt('Argument of %d is out of bounds. Must be > 0 and < 65',[aInteger]);
|
18
|
+
|
19
|
+
if aInteger = 1 then
|
20
|
+
result := 1
|
21
|
+
else
|
22
|
+
result := 2 * Square(aInteger - 1);
|
23
|
+
end;
|
24
|
+
|
25
|
+
class function Grains.Total: UInt64;
|
26
|
+
var i: integer;
|
27
|
+
begin
|
28
|
+
result := 0;
|
29
|
+
for i := 1 to 64 do
|
30
|
+
result := result + Square(i);
|
31
|
+
end;
|
32
|
+
|
33
|
+
end.
|
@@ -0,0 +1,149 @@
|
|
1
|
+
unit uGrainsTests;
|
2
|
+
|
3
|
+
interface
|
4
|
+
uses
|
5
|
+
DUnitX.TestFramework;
|
6
|
+
|
7
|
+
type
|
8
|
+
[TestFixture]
|
9
|
+
TgrainsTests = class(TObject)
|
10
|
+
public
|
11
|
+
[Test]
|
12
|
+
procedure Test_square_1;
|
13
|
+
|
14
|
+
[Test]
|
15
|
+
[Ignore('Comment this line to run this test')]
|
16
|
+
procedure Test_square_2;
|
17
|
+
|
18
|
+
[Test]
|
19
|
+
[Ignore('Comment this line to run this test')]
|
20
|
+
procedure Test_square_3;
|
21
|
+
|
22
|
+
[Test]
|
23
|
+
[Ignore('Comment this line to run this test')]
|
24
|
+
procedure Test_square_4;
|
25
|
+
|
26
|
+
[Test]
|
27
|
+
[Ignore('Comment this line to run this test')]
|
28
|
+
procedure Test_square_16;
|
29
|
+
|
30
|
+
[Test]
|
31
|
+
[Ignore('Comment this line to run this test')]
|
32
|
+
procedure Test_square_32;
|
33
|
+
|
34
|
+
[Test]
|
35
|
+
[Ignore('Comment this line to run this test')]
|
36
|
+
procedure Test_square_64;
|
37
|
+
|
38
|
+
[Test]
|
39
|
+
[Ignore('Comment this line to run this test')]
|
40
|
+
procedure Square_0_raises_an_exception;
|
41
|
+
|
42
|
+
[Test]
|
43
|
+
[Ignore('Comment this line to run this test')]
|
44
|
+
procedure Negative_square_raises_an_exception;
|
45
|
+
|
46
|
+
[Test]
|
47
|
+
[Ignore('Comment this line to run the test')]
|
48
|
+
procedure Square_greater_than_64_raises_an_exception;
|
49
|
+
|
50
|
+
[Test]
|
51
|
+
[Ignore('Comment this line to run this test')]
|
52
|
+
procedure Test_total_grains;
|
53
|
+
end;
|
54
|
+
|
55
|
+
implementation
|
56
|
+
uses System.SysUtils, uGrains;
|
57
|
+
|
58
|
+
procedure TgrainsTests.Test_square_1;
|
59
|
+
var expected: UInt64;
|
60
|
+
begin
|
61
|
+
expected := 1;
|
62
|
+
Assert.AreEqual(expected, Grains.Square(1));
|
63
|
+
end;
|
64
|
+
|
65
|
+
procedure TgrainsTests.Test_square_2;
|
66
|
+
var expected: UInt64;
|
67
|
+
begin
|
68
|
+
expected := 2;
|
69
|
+
Assert.AreEqual(expected, Grains.Square(2));
|
70
|
+
end;
|
71
|
+
|
72
|
+
procedure TgrainsTests.Test_square_3;
|
73
|
+
var expected: UInt64;
|
74
|
+
begin
|
75
|
+
expected := 4;
|
76
|
+
Assert.AreEqual(expected, Grains.Square(3));
|
77
|
+
end;
|
78
|
+
|
79
|
+
procedure TgrainsTests.Test_square_4;
|
80
|
+
var expected: UInt64;
|
81
|
+
begin
|
82
|
+
expected := 8;
|
83
|
+
Assert.AreEqual(expected, Grains.Square(4));
|
84
|
+
end;
|
85
|
+
|
86
|
+
procedure TgrainsTests.Test_square_16;
|
87
|
+
var expected: UInt64;
|
88
|
+
begin
|
89
|
+
expected := 32768;
|
90
|
+
Assert.AreEqual(expected, Grains.Square(16));
|
91
|
+
end;
|
92
|
+
|
93
|
+
procedure TgrainsTests.Test_square_32;
|
94
|
+
var expected: UInt64;
|
95
|
+
begin
|
96
|
+
expected := 2147483648;
|
97
|
+
Assert.AreEqual(expected, Grains.Square(32));
|
98
|
+
end;
|
99
|
+
|
100
|
+
procedure TgrainsTests.Test_square_64;
|
101
|
+
var expected: UInt64;
|
102
|
+
begin
|
103
|
+
expected := 9223372036854775808;
|
104
|
+
Assert.AreEqual(expected, Grains.Square(64));
|
105
|
+
end;
|
106
|
+
|
107
|
+
procedure TgrainsTests.Square_0_raises_an_exception;
|
108
|
+
var MyProc: TTestLocalMethod;
|
109
|
+
begin
|
110
|
+
MyProc := procedure
|
111
|
+
begin
|
112
|
+
Grains.Square(0);
|
113
|
+
end;
|
114
|
+
|
115
|
+
Assert.WillRaise(MyProc, ERangeError);
|
116
|
+
end;
|
117
|
+
|
118
|
+
procedure TgrainsTests.Negative_square_raises_an_exception;
|
119
|
+
var MyProc: TTestLocalMethod;
|
120
|
+
begin
|
121
|
+
MyProc := procedure
|
122
|
+
begin
|
123
|
+
Grains.Square(-1);
|
124
|
+
end;
|
125
|
+
|
126
|
+
Assert.WillRaise(MyProc, ERangeError);
|
127
|
+
end;
|
128
|
+
|
129
|
+
procedure TgrainsTests.Square_greater_than_64_raises_an_exception;
|
130
|
+
var MyProc: TTestLocalMethod;
|
131
|
+
begin
|
132
|
+
MyProc := procedure
|
133
|
+
begin
|
134
|
+
Grains.Square(65);
|
135
|
+
end;
|
136
|
+
|
137
|
+
Assert.WillRaise(MyProc, ERangeError);
|
138
|
+
end;
|
139
|
+
|
140
|
+
procedure TgrainsTests.Test_total_grains;
|
141
|
+
var expected: UInt64;
|
142
|
+
begin
|
143
|
+
expected := 18446744073709551615;
|
144
|
+
Assert.AreEqual(expected, Grains.Total);
|
145
|
+
end;
|
146
|
+
|
147
|
+
initialization
|
148
|
+
TDUnitX.RegisterTestFixture(TgrainsTests);
|
149
|
+
end.
|