trackler 2.0.5.13 → 2.0.5.14
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/.travis.yml +1 -0
- data/common/bin/check_required_files_present +55 -0
- data/lib/trackler/version.rb +1 -1
- data/tracks/pascal/exercises/Hello-World/TestHelloWorld.dpr +60 -0
- data/tracks/pascal/exercises/Hello-World/TestHelloWorld.dproj +176 -0
- data/tracks/pascal/exercises/Hello-World/uHelloWorldExample.pas +24 -0
- data/tracks/pascal/exercises/Hello-World/uTestHelloWorld.pas +65 -0
- data/tracks/pascal/exercises/allergies/AllergyTests.dpr +60 -0
- data/tracks/pascal/exercises/allergies/AllergyTests.dproj +176 -0
- data/tracks/pascal/exercises/allergies/uAllergiesExample.pas +67 -0
- data/tracks/pascal/exercises/allergies/uAllergyTests.pas +177 -0
- data/tracks/pascal/exercises/bank-account/BankAccountTests.dpr +60 -0
- data/tracks/pascal/exercises/bank-account/BankAccountTests.dproj +176 -0
- data/tracks/pascal/exercises/bank-account/uBankAccountExample.pas +96 -0
- data/tracks/pascal/exercises/bank-account/uBankAccountTests.pas +140 -0
- data/tracks/pascal/exercises/beer-song/BeerSongTests.dpr +60 -0
- data/tracks/pascal/exercises/beer-song/BeerSongTests.dproj +176 -0
- data/tracks/pascal/exercises/beer-song/uBeerSongExample.pas +45 -0
- data/tracks/pascal/exercises/beer-song/uBeerSongTests.pas +84 -0
- data/tracks/pascal/exercises/binary-search/BinarySearchTest.dpr +60 -0
- data/tracks/pascal/exercises/binary-search/BinarySearchTest.dproj +176 -0
- data/tracks/pascal/exercises/binary-search/uBinarySearchExample.pas +40 -0
- data/tracks/pascal/exercises/binary-search/uBinarySearchTest.pas +132 -0
- data/tracks/pascal/exercises/bob/BobTests.dpr +60 -0
- data/tracks/pascal/exercises/bob/BobTests.dproj +176 -0
- data/tracks/pascal/exercises/bob/uBobExample.pas +47 -0
- data/tracks/pascal/exercises/bob/uBobTests.pas +180 -0
- data/tracks/pascal/exercises/book-store/BookStoreTests.dpr +60 -0
- data/tracks/pascal/exercises/book-store/BookStoreTests.dproj +176 -0
- data/tracks/pascal/exercises/book-store/uBookStoreExample.pas +144 -0
- data/tracks/pascal/exercises/book-store/uBookStoreTests.pas +56 -0
- data/tracks/pascal/exercises/bowling/BowlingTests.dpr +60 -0
- data/tracks/pascal/exercises/bowling/BowlingTests.dproj +176 -0
- data/tracks/pascal/exercises/bowling/uBowlingExample.pas +105 -0
- data/tracks/pascal/exercises/bowling/uBowlingTests.pas +101 -0
- data/tracks/pascal/exercises/circular-buffer/CircularBufferTests.dpr +60 -0
- data/tracks/pascal/exercises/circular-buffer/CircularBufferTests.dproj +176 -0
- data/tracks/pascal/exercises/circular-buffer/uCircularBufferExample.pas +72 -0
- data/tracks/pascal/exercises/circular-buffer/uCircularBufferTests.pas +249 -0
- data/tracks/pascal/exercises/clock/ClockTest.dpr +60 -0
- data/tracks/pascal/exercises/clock/ClockTest.dproj +176 -0
- data/tracks/pascal/exercises/clock/uClockExample.pas +54 -0
- data/tracks/pascal/exercises/clock/uClockTest.pas +157 -0
- data/tracks/pascal/exercises/etl/ETLtests.dpr +60 -0
- data/tracks/pascal/exercises/etl/ETLtests.dproj +176 -0
- data/tracks/pascal/exercises/etl/uETLexample.pas +25 -0
- data/tracks/pascal/exercises/etl/uETLtests.pas +191 -0
- data/tracks/pascal/exercises/hamming/Hamming.dpr +60 -0
- data/tracks/pascal/exercises/hamming/Hamming.dproj +176 -0
- data/tracks/pascal/exercises/hamming/uHammingExample.pas +24 -0
- data/tracks/pascal/exercises/hamming/uHammingTests.pas +165 -0
- data/tracks/pascal/exercises/leap/LeapTest.dpr +60 -0
- data/tracks/pascal/exercises/leap/LeapTest.dproj +176 -0
- data/tracks/pascal/exercises/leap/uLeapExample.pas +17 -0
- data/tracks/pascal/exercises/leap/uLeapTests.pas +81 -0
- data/tracks/pascal/exercises/nucleotide-count/NucleotideCountTest.dpr +60 -0
- data/tracks/pascal/exercises/nucleotide-count/NucleotideCountTest.dproj +176 -0
- data/tracks/pascal/exercises/nucleotide-count/uNucleotideCountExample.pas +72 -0
- data/tracks/pascal/exercises/nucleotide-count/uNucleotideCountTest.pas +190 -0
- data/tracks/pascal/exercises/perfect-numbers/PerfectNumbersTest.dpr +60 -0
- data/tracks/pascal/exercises/perfect-numbers/PerfectNumbersTest.dproj +176 -0
- data/tracks/pascal/exercises/perfect-numbers/uPerfectNumbersExample.pas +34 -0
- data/tracks/pascal/exercises/perfect-numbers/uPerfectNumbersTest.pas +48 -0
- data/tracks/pascal/exercises/phone-number/PhoneNumberTests.dpr +60 -0
- data/tracks/pascal/exercises/phone-number/PhoneNumberTests.dproj +176 -0
- data/tracks/pascal/exercises/phone-number/uPhoneNumberExample.pas +102 -0
- data/tracks/pascal/exercises/phone-number/uPhoneNumberTests.pas +138 -0
- data/tracks/php/exercises/variable-length-quantity/variable-length-quantity_test.php +1 -1
- data/tracks/ruby/Gemfile +0 -1
- data/tracks/ruby/Makefile +2 -1
- data/tracks/ruby/Rakefile +3 -0
- data/tracks/ruby/exercises/simple-linked-list/.meta/.version +1 -0
- data/tracks/ruby/exercises/simple-linked-list/example.rb +39 -48
- data/tracks/ruby/exercises/simple-linked-list/simple_linked_list_test.rb +99 -125
- data/tracks/ruby/exercises/wordy/.meta/.version +1 -0
- data/tracks/ruby/exercises/wordy/example.rb +4 -0
- data/tracks/ruby/exercises/wordy/example.tt +17 -0
- data/tracks/ruby/exercises/wordy/wordy_test.rb +66 -35
- data/tracks/ruby/lib/wordy_cases.rb +67 -0
- data/tracks/ruby/test/wordy_cases_test.rb +102 -0
- data/tracks/scala/config.json +7 -1
- data/tracks/scala/exercises/connect/{README.md → HINTS.md} +1 -12
- data/tracks/scala/exercises/connect/build.sbt +2 -2
- metadata +73 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ec7742a72a8b9cb40403f1fa21b731c45a0e949c
|
|
4
|
+
data.tar.gz: 659146e560273f0e3fc0e1c1830d46d63e4c6c53
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8209ff1442ff1dd4a05810ca4d608e3bcc16e121e628d7dfde8611b6baf0239da3e031062c4ecdd263d4a142a993686e42161f650db166b7a8497c1a3ceeb442
|
|
7
|
+
data.tar.gz: 20053304e9f4973b491bc7cc7ee2dcb1a671699dedbab5dbcd232c7ba83f2efcc3e1269fa3de6cd7b7c3617b37cbb8d73338ebebd70ed64e199ccfd5ab58d811
|
data/common/.travis.yml
CHANGED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
MISSING_FILES=0
|
|
3
|
+
SHOW_PROGRESS='false'
|
|
4
|
+
|
|
5
|
+
if [ ! -d exercises ] ; then
|
|
6
|
+
echo "\"exercises\" directory not found, make sure you're running from the repository root" >&2
|
|
7
|
+
exit 1
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
function show_progress {
|
|
11
|
+
if [ $SHOW_PROGRESS == 'true' ]; then
|
|
12
|
+
echo -n '.'
|
|
13
|
+
fi
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function require_file {
|
|
17
|
+
filename=$1
|
|
18
|
+
if [ ! -f $filename ]; then
|
|
19
|
+
echo "required file missing: $filename" >&2
|
|
20
|
+
let "MISSING_FILES+=1"
|
|
21
|
+
fi
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function check_directory {
|
|
25
|
+
directory=$1
|
|
26
|
+
for exercise_directory in $directory/* ; do
|
|
27
|
+
show_progress
|
|
28
|
+
require_file "$exercise_directory/description.md"
|
|
29
|
+
require_file "$exercise_directory/metadata.yml"
|
|
30
|
+
done
|
|
31
|
+
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
while :
|
|
35
|
+
do
|
|
36
|
+
case "$1" in
|
|
37
|
+
-p | --progress)
|
|
38
|
+
SHOW_PROGRESS="true"
|
|
39
|
+
shift 1
|
|
40
|
+
;;
|
|
41
|
+
*)
|
|
42
|
+
check_directory 'exercises'
|
|
43
|
+
if [ $SHOW_PROGRESS == 'true' ]; then
|
|
44
|
+
echo
|
|
45
|
+
echo Done: $MISSING_FILES files missing.
|
|
46
|
+
fi
|
|
47
|
+
if (( $MISSING_FILES > 0 )); then
|
|
48
|
+
exit 1
|
|
49
|
+
else
|
|
50
|
+
exit 0
|
|
51
|
+
fi
|
|
52
|
+
;;
|
|
53
|
+
esac
|
|
54
|
+
done
|
|
55
|
+
|
data/lib/trackler/version.rb
CHANGED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
program TestHelloWorld;
|
|
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
|
+
uTestHelloWorld in 'uTestHelloWorld.pas',
|
|
15
|
+
uHelloWorld in 'uHelloWorld.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,176 @@
|
|
|
1
|
+
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
2
|
+
<PropertyGroup>
|
|
3
|
+
<ProjectGuid>{1ED07C8D-2746-43A7-B0C3-02DA65C986A6}</ProjectGuid>
|
|
4
|
+
<ProjectVersion>15.3</ProjectVersion>
|
|
5
|
+
<FrameworkType>None</FrameworkType>
|
|
6
|
+
<MainSource>TestHelloWorld.dpr</MainSource>
|
|
7
|
+
<Base>True</Base>
|
|
8
|
+
<Config Condition="'$(Config)'==''">Debug</Config>
|
|
9
|
+
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
|
10
|
+
<TargetedPlatforms>1</TargetedPlatforms>
|
|
11
|
+
<AppType>Console</AppType>
|
|
12
|
+
</PropertyGroup>
|
|
13
|
+
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
|
14
|
+
<Base>true</Base>
|
|
15
|
+
</PropertyGroup>
|
|
16
|
+
<PropertyGroup Condition="('$(Platform)'=='OSX32' and '$(Base)'=='true') or '$(Base_OSX32)'!=''">
|
|
17
|
+
<Base_OSX32>true</Base_OSX32>
|
|
18
|
+
<CfgParent>Base</CfgParent>
|
|
19
|
+
<Base>true</Base>
|
|
20
|
+
</PropertyGroup>
|
|
21
|
+
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
|
22
|
+
<Base_Win32>true</Base_Win32>
|
|
23
|
+
<CfgParent>Base</CfgParent>
|
|
24
|
+
<Base>true</Base>
|
|
25
|
+
</PropertyGroup>
|
|
26
|
+
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
|
|
27
|
+
<Base_Win64>true</Base_Win64>
|
|
28
|
+
<CfgParent>Base</CfgParent>
|
|
29
|
+
<Base>true</Base>
|
|
30
|
+
</PropertyGroup>
|
|
31
|
+
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
|
|
32
|
+
<Cfg_1>true</Cfg_1>
|
|
33
|
+
<CfgParent>Base</CfgParent>
|
|
34
|
+
<Base>true</Base>
|
|
35
|
+
</PropertyGroup>
|
|
36
|
+
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
|
37
|
+
<Cfg_1_Win32>true</Cfg_1_Win32>
|
|
38
|
+
<CfgParent>Cfg_1</CfgParent>
|
|
39
|
+
<Cfg_1>true</Cfg_1>
|
|
40
|
+
<Base>true</Base>
|
|
41
|
+
</PropertyGroup>
|
|
42
|
+
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
|
|
43
|
+
<Cfg_2>true</Cfg_2>
|
|
44
|
+
<CfgParent>Base</CfgParent>
|
|
45
|
+
<Base>true</Base>
|
|
46
|
+
</PropertyGroup>
|
|
47
|
+
<PropertyGroup Condition="'$(Base)'!=''">
|
|
48
|
+
<DCC_UnitSearchPath>$(DUnitX);$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
|
|
49
|
+
<Icns_MainIcns>$(BDS)\bin\delphi_PROJECTICNS.icns</Icns_MainIcns>
|
|
50
|
+
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
|
|
51
|
+
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
|
|
52
|
+
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
|
53
|
+
<DCC_E>false</DCC_E>
|
|
54
|
+
<DCC_N>false</DCC_N>
|
|
55
|
+
<DCC_S>false</DCC_S>
|
|
56
|
+
<DCC_F>false</DCC_F>
|
|
57
|
+
<DCC_K>false</DCC_K>
|
|
58
|
+
</PropertyGroup>
|
|
59
|
+
<PropertyGroup Condition="'$(Base_OSX32)'!=''">
|
|
60
|
+
<DCC_UsePackage>FireDACASADriver;FireDACSqliteDriver;bindcompfmx;DBXSqliteDriver;FireDACPgDriver;FireDACODBCDriver;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;FireDACCommon;bindcomp;DBXInterBaseDriver;DataSnapCommon;xmlrtl;ibxpress;DbxCommonDriver;IndyProtocols;dbxcds;DBXMySQLDriver;FireDACCommonDriver;soaprtl;bindengine;bindcompdbx;FMXTee;fmxFireDAC;FireDACADSDriver;CustomIPTransport;FireDAC;dsnap;IndyIPServer;fmxase;IndyCore;IndyIPCommon;CloudService;FireDACIBDriver;FmxTeeUI;inet;fmxobj;FireDACMySQLDriver;inetdbxpress;fmxdae;RESTComponents;FireDACMSAccDriver;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
|
|
61
|
+
</PropertyGroup>
|
|
62
|
+
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
|
63
|
+
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
|
64
|
+
<DCC_UsePackage>frxDB19;L208_r140;FireDACASADriver;FireDACSqliteDriver;bindcompfmx;DBXSqliteDriver;AbbreviaVCL;vcldbx;FireDACPgDriver;FireDACODBCDriver;S404_r;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;FireDACCommon;bindcomp;TeeDB;frx19;vclib;inetdbbde;DBXInterBaseDriver;Tee;DataSnapCommon;vclFireDAC;Rave110VCL;xmlrtl;svnui;ibxpress;DbxCommonDriver;vclimg;IndyProtocols;dbxcds;DBXMySQLDriver;FireDACCommonDriver;MetropolisUILiveTile;O408_r;soaprtl;bindengine;vclactnband;vcldb;bindcompdbx;vcldsnap;bindcompvcl;FMXTee;TeeUI;AsyncPro;vclie;XMLPartner_PR;fmxFireDAC;FireDACADSDriver;vcltouch;CustomIPTransport;G114_R140;vclribbon;VclSmp;FireDAC;dsnap;IndyIPServer;Intraweb;fmxase;vcl;IndyCore;VCLRESTComponents;OmniThreadLibraryRuntimeXE5;IndyIPCommon;CloudService;CodeSiteExpressPkg;dsnapcon;FireDACIBDriver;FmxTeeUI;inet;fmxobj;E111_R120;FireDACMySQLDriver;vclx;inetdbxpress;svn;fmxdae;frxe19;RESTComponents;bdertl;FireDACMSAccDriver;adortl;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
|
|
65
|
+
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
|
66
|
+
<VerInfo_Locale>1033</VerInfo_Locale>
|
|
67
|
+
</PropertyGroup>
|
|
68
|
+
<PropertyGroup Condition="'$(Base_Win64)'!=''">
|
|
69
|
+
<DCC_UsePackage>FireDACASADriver;FireDACSqliteDriver;bindcompfmx;DBXSqliteDriver;AbbreviaVCL;FireDACPgDriver;FireDACODBCDriver;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;FireDACCommon;bindcomp;TeeDB;vclib;DBXInterBaseDriver;Tee;DataSnapCommon;vclFireDAC;xmlrtl;ibxpress;DbxCommonDriver;vclimg;IndyProtocols;dbxcds;DBXMySQLDriver;FireDACCommonDriver;MetropolisUILiveTile;O408_r;soaprtl;bindengine;vclactnband;vcldb;bindcompdbx;vcldsnap;bindcompvcl;FMXTee;TeeUI;vclie;fmxFireDAC;FireDACADSDriver;vcltouch;CustomIPTransport;vclribbon;VclSmp;FireDAC;dsnap;IndyIPServer;Intraweb;fmxase;vcl;IndyCore;VCLRESTComponents;IndyIPCommon;CloudService;dsnapcon;FireDACIBDriver;FmxTeeUI;inet;fmxobj;FireDACMySQLDriver;vclx;inetdbxpress;fmxdae;RESTComponents;FireDACMSAccDriver;adortl;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
|
|
70
|
+
</PropertyGroup>
|
|
71
|
+
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
|
72
|
+
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
|
73
|
+
<DCC_DebugDCUs>true</DCC_DebugDCUs>
|
|
74
|
+
<DCC_Optimize>false</DCC_Optimize>
|
|
75
|
+
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
|
|
76
|
+
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
|
77
|
+
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
|
78
|
+
</PropertyGroup>
|
|
79
|
+
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
|
80
|
+
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
|
81
|
+
</PropertyGroup>
|
|
82
|
+
<PropertyGroup Condition="'$(Cfg_2)'!=''">
|
|
83
|
+
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
|
|
84
|
+
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
|
|
85
|
+
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
|
|
86
|
+
<DCC_DebugInformation>0</DCC_DebugInformation>
|
|
87
|
+
</PropertyGroup>
|
|
88
|
+
<ItemGroup>
|
|
89
|
+
<DelphiCompile Include="$(MainSource)">
|
|
90
|
+
<MainSource>MainSource</MainSource>
|
|
91
|
+
</DelphiCompile>
|
|
92
|
+
<DCCReference Include="uTestHelloWorld.pas"/>
|
|
93
|
+
<DCCReference Include="uHelloWorld.pas"/>
|
|
94
|
+
<BuildConfiguration Include="Release">
|
|
95
|
+
<Key>Cfg_2</Key>
|
|
96
|
+
<CfgParent>Base</CfgParent>
|
|
97
|
+
</BuildConfiguration>
|
|
98
|
+
<BuildConfiguration Include="Base">
|
|
99
|
+
<Key>Base</Key>
|
|
100
|
+
</BuildConfiguration>
|
|
101
|
+
<BuildConfiguration Include="Debug">
|
|
102
|
+
<Key>Cfg_1</Key>
|
|
103
|
+
<CfgParent>Base</CfgParent>
|
|
104
|
+
</BuildConfiguration>
|
|
105
|
+
</ItemGroup>
|
|
106
|
+
<ProjectExtensions>
|
|
107
|
+
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
|
|
108
|
+
<Borland.ProjectType/>
|
|
109
|
+
<BorlandProject>
|
|
110
|
+
<Delphi.Personality>
|
|
111
|
+
<VersionInfo>
|
|
112
|
+
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
|
113
|
+
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
|
114
|
+
<VersionInfo Name="MajorVer">1</VersionInfo>
|
|
115
|
+
<VersionInfo Name="MinorVer">0</VersionInfo>
|
|
116
|
+
<VersionInfo Name="Release">0</VersionInfo>
|
|
117
|
+
<VersionInfo Name="Build">0</VersionInfo>
|
|
118
|
+
<VersionInfo Name="Debug">False</VersionInfo>
|
|
119
|
+
<VersionInfo Name="PreRelease">False</VersionInfo>
|
|
120
|
+
<VersionInfo Name="Special">False</VersionInfo>
|
|
121
|
+
<VersionInfo Name="Private">False</VersionInfo>
|
|
122
|
+
<VersionInfo Name="DLL">False</VersionInfo>
|
|
123
|
+
<VersionInfo Name="Locale">1033</VersionInfo>
|
|
124
|
+
<VersionInfo Name="CodePage">1252</VersionInfo>
|
|
125
|
+
</VersionInfo>
|
|
126
|
+
<VersionInfoKeys>
|
|
127
|
+
<VersionInfoKeys Name="CompanyName"/>
|
|
128
|
+
<VersionInfoKeys Name="FileDescription"/>
|
|
129
|
+
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
|
130
|
+
<VersionInfoKeys Name="InternalName"/>
|
|
131
|
+
<VersionInfoKeys Name="LegalCopyright"/>
|
|
132
|
+
<VersionInfoKeys Name="LegalTrademarks"/>
|
|
133
|
+
<VersionInfoKeys Name="OriginalFilename"/>
|
|
134
|
+
<VersionInfoKeys Name="ProductName"/>
|
|
135
|
+
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
|
136
|
+
<VersionInfoKeys Name="Comments"/>
|
|
137
|
+
<VersionInfoKeys Name="CFBundleName"/>
|
|
138
|
+
<VersionInfoKeys Name="CFBundleDisplayName"/>
|
|
139
|
+
<VersionInfoKeys Name="UIDeviceFamily"/>
|
|
140
|
+
<VersionInfoKeys Name="CFBundleIdentifier"/>
|
|
141
|
+
<VersionInfoKeys Name="CFBundleVersion"/>
|
|
142
|
+
<VersionInfoKeys Name="CFBundlePackageType"/>
|
|
143
|
+
<VersionInfoKeys Name="CFBundleSignature"/>
|
|
144
|
+
<VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/>
|
|
145
|
+
<VersionInfoKeys Name="UISupportedInterfaceOrientations"/>
|
|
146
|
+
<VersionInfoKeys Name="CFBundleExecutable"/>
|
|
147
|
+
<VersionInfoKeys Name="CFBundleResourceSpecification"/>
|
|
148
|
+
<VersionInfoKeys Name="LSRequiresIPhoneOS"/>
|
|
149
|
+
<VersionInfoKeys Name="CFBundleInfoDictionaryVersion"/>
|
|
150
|
+
<VersionInfoKeys Name="CFBundleDevelopmentRegion"/>
|
|
151
|
+
<VersionInfoKeys Name="package"/>
|
|
152
|
+
<VersionInfoKeys Name="label"/>
|
|
153
|
+
<VersionInfoKeys Name="versionCode"/>
|
|
154
|
+
<VersionInfoKeys Name="versionName"/>
|
|
155
|
+
<VersionInfoKeys Name="persistent"/>
|
|
156
|
+
<VersionInfoKeys Name="restoreAnyVersion"/>
|
|
157
|
+
<VersionInfoKeys Name="installLocation"/>
|
|
158
|
+
<VersionInfoKeys Name="largeHeap"/>
|
|
159
|
+
<VersionInfoKeys Name="theme"/>
|
|
160
|
+
</VersionInfoKeys>
|
|
161
|
+
<Source>
|
|
162
|
+
<Source Name="MainSource">TestHelloWorld.dpr</Source>
|
|
163
|
+
</Source>
|
|
164
|
+
</Delphi.Personality>
|
|
165
|
+
<Deployment/>
|
|
166
|
+
<Platforms>
|
|
167
|
+
<Platform value="OSX32">False</Platform>
|
|
168
|
+
<Platform value="Win32">True</Platform>
|
|
169
|
+
<Platform value="Win64">False</Platform>
|
|
170
|
+
</Platforms>
|
|
171
|
+
</BorlandProject>
|
|
172
|
+
<ProjectFileVersion>12</ProjectFileVersion>
|
|
173
|
+
</ProjectExtensions>
|
|
174
|
+
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
|
175
|
+
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
|
|
176
|
+
</Project>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//========================================================
|
|
2
|
+
// Example solution to exercise.
|
|
3
|
+
//
|
|
4
|
+
// A simple hello function would suffice, however this
|
|
5
|
+
// solution is mimicking the Ruby hello-world exercise
|
|
6
|
+
//========================================================
|
|
7
|
+
unit uHelloWorld;
|
|
8
|
+
|
|
9
|
+
interface
|
|
10
|
+
|
|
11
|
+
type
|
|
12
|
+
THelloWorld = class
|
|
13
|
+
public
|
|
14
|
+
class function hello(name: string='World'): string; static;
|
|
15
|
+
end;
|
|
16
|
+
|
|
17
|
+
implementation
|
|
18
|
+
|
|
19
|
+
class function THelloWorld.hello(name: string='World'): string;
|
|
20
|
+
begin
|
|
21
|
+
result := 'Hello, ' + name + '!';
|
|
22
|
+
end;
|
|
23
|
+
|
|
24
|
+
end.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
unit uTestHelloWorld;
|
|
2
|
+
|
|
3
|
+
interface
|
|
4
|
+
uses
|
|
5
|
+
DUnitX.TestFramework;
|
|
6
|
+
|
|
7
|
+
type
|
|
8
|
+
[TestFixture]
|
|
9
|
+
HelloWorldTest = class(TObject)
|
|
10
|
+
public
|
|
11
|
+
[Test]
|
|
12
|
+
// [Ignore]
|
|
13
|
+
procedure test_no_name;
|
|
14
|
+
[Test]
|
|
15
|
+
// [Ignore]
|
|
16
|
+
procedure test_sample_name;
|
|
17
|
+
[Test]
|
|
18
|
+
// [Ignore]
|
|
19
|
+
procedure test_other_sample_name;
|
|
20
|
+
end;
|
|
21
|
+
|
|
22
|
+
implementation
|
|
23
|
+
uses uHelloWorld;
|
|
24
|
+
|
|
25
|
+
procedure HelloWorldTest.test_no_name;
|
|
26
|
+
begin
|
|
27
|
+
assert.AreEqual('Hello, World!', THelloWorld.hello);
|
|
28
|
+
end;
|
|
29
|
+
|
|
30
|
+
procedure HelloWorldTest.test_sample_name;
|
|
31
|
+
begin
|
|
32
|
+
assert.AreEqual('Hello, Alice!',THelloWorld.hello('Alice'));
|
|
33
|
+
end;
|
|
34
|
+
|
|
35
|
+
procedure HelloWorldTest.test_other_sample_name;
|
|
36
|
+
begin
|
|
37
|
+
assert.AreEqual('Hello, Bob!', THelloWorld.hello('Bob'));
|
|
38
|
+
end;
|
|
39
|
+
|
|
40
|
+
initialization
|
|
41
|
+
TDUnitX.RegisterTestFixture(HelloWorldTest);
|
|
42
|
+
end.
|
|
43
|
+
|
|
44
|
+
(*
|
|
45
|
+
*****************************************************
|
|
46
|
+
You got an error, which is exactly as it should be.
|
|
47
|
+
This is the first step in the Test-Driven Development
|
|
48
|
+
(TDD) process.
|
|
49
|
+
|
|
50
|
+
The most important part of the error is
|
|
51
|
+
|
|
52
|
+
"cannot compile"
|
|
53
|
+
|
|
54
|
+
It's looking for a file named uHelloWorld.pas that doesn't
|
|
55
|
+
exist yet.
|
|
56
|
+
|
|
57
|
+
To fix the error, create an empty file named uHelloWorld.pas
|
|
58
|
+
in the same directory as the uTestHelloWorld.pas file.
|
|
59
|
+
|
|
60
|
+
Then run the test again.
|
|
61
|
+
|
|
62
|
+
For more guidance as you work on this exercise, see
|
|
63
|
+
GETTING_STARTED.md.
|
|
64
|
+
*****************************************************
|
|
65
|
+
*)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
program AllergyTests;
|
|
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
|
+
uAllergyTests in 'uAllergyTests.pas',
|
|
15
|
+
uAllergies in 'uAllergies.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.
|