Skip to content

Commit

Permalink
Lots of improvements to the Generics used by DelphiSpec
Browse files Browse the repository at this point in the history
  • Loading branch information
LaKraven Studios Ltd authored and LaKraven Studios Ltd committed Feb 25, 2015
1 parent f659dbd commit d724cea
Show file tree
Hide file tree
Showing 9 changed files with 230 additions and 219 deletions.
4 changes: 3 additions & 1 deletion Demo/DelphiSpecDUnitXDemo.dpr
@@ -1,7 +1,9 @@
program DelphiSpecDUnitXDemo;

{$APPTYPE CONSOLE}
{$R 'DelphiSpecDUnitXDemo.res' '..\Source\DelphiSpecI18n.rc'}


{$R 'DelphiSpecI18n.res' '..\Source\DelphiSpecI18n.rc'}

uses
SysUtils,
Expand Down
2 changes: 1 addition & 1 deletion Demo/DelphiSpecDUnitXDemo.dproj
Expand Up @@ -81,7 +81,7 @@
<MainSource>MainSource</MainSource>
</DelphiCompile>
<RcCompile Include="..\Source\DelphiSpecI18n.rc">
<Form>DelphiSpecDUnitXDemo.res</Form>
<Form>DelphiSpecI18n.res</Form>
</RcCompile>
<DCCReference Include="SampleAccountsStepDefs.pas"/>
<DCCReference Include="SampleCalculator.pas"/>
Expand Down
2 changes: 1 addition & 1 deletion Demo/DelphiSpecDemo.dpr
Expand Up @@ -18,7 +18,7 @@ uses
DelphiSpec.DUnit;

var
Features: TObjectList<TFeature>;
Features: TFeatureList;
begin
ReportMemoryLeaksOnShutdown := True;

Expand Down
362 changes: 181 additions & 181 deletions Demo/DelphiSpecDemo.dproj

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions Source/DelphiSpec.Core.pas
Expand Up @@ -5,7 +5,7 @@ interface
uses
Generics.Collections, DelphiSpec.StepDefinitions, DelphiSpec.Scenario;

function ReadFeatures(const Path: string; Recursive: Boolean; const LangCode: string): TObjectList<TFeature>;
function ReadFeatures(const Path: string; Recursive: Boolean; const LangCode: string): TFeatureList;

function GetStepDefinitionsClass(const Name: string): TStepDefinitionsClass;
procedure RegisterStepDefinitionsClass(StepDefinitionsClass: TStepDefinitionsClass);
Expand Down Expand Up @@ -53,7 +53,7 @@ function CheckStepClassExists(const Name: string): Boolean;
__StepDefsClassList.ContainsKey( AnsiLowerCase(Name) );
end;

function ReadFeatures(const Path: string; Recursive: Boolean; const LangCode: string): TObjectList<TFeature>;
function ReadFeatures(const Path: string; Recursive: Boolean; const LangCode: string): TFeatureList;
var
FileName: string;
Parser: TDelphiSpecParser;
Expand All @@ -64,7 +64,7 @@ function ReadFeatures(const Path: string; Recursive: Boolean; const LangCode: st
else
SearchMode := TSearchOption.soTopDirectoryOnly;

Result := TObjectList<TFeature>.Create(True);
Result := TFeatureList.Create(True);
try
Parser := TDelphiSpecParser.Create(LangCode);
try
Expand Down
8 changes: 4 additions & 4 deletions Source/DelphiSpec.DUnit.pas
Expand Up @@ -5,7 +5,7 @@ interface
uses
Generics.Collections, DelphiSpec.Scenario;

procedure CreateDUnitTests(Features: TObjectList<TFeature>);
procedure CreateDUnitTests(Features: TFeatureList);

implementation

Expand All @@ -15,7 +15,7 @@ implementation
type
TDelphiSpecTestSuite = class(TTestSuite)
public
constructor Create(const Name: string; Scenarios: TObjectList<TScenario>); overload; virtual;
constructor Create(const Name: string; Scenarios: TScenarioList); overload; virtual;
end;

TDelphiSpecTestCase = class(TAbstractTest)
Expand All @@ -26,7 +26,7 @@ TDelphiSpecTestCase = class(TAbstractTest)
constructor Create(Scenario: TScenario); overload; virtual;
end;

procedure CreateDUnitTests(Features: TObjectList<TFeature>);
procedure CreateDUnitTests(Features: TFeatureList);
var
Feature: TFeature;
Suite: TDelphiSpecTestSuite;
Expand Down Expand Up @@ -80,7 +80,7 @@ procedure TDelphiSpecTestCase.RunTest(testResult: TTestResult);

{ TDelphiSpecTestSuite }

constructor TDelphiSpecTestSuite.Create(const Name: string; Scenarios: TObjectList<TScenario>);
constructor TDelphiSpecTestSuite.Create(const Name: string; Scenarios: TScenarioList);
var
Scenario: TScenario;
begin
Expand Down
8 changes: 4 additions & 4 deletions Source/DelphiSpec.DUnitX.pas
Expand Up @@ -7,7 +7,7 @@ interface
DelphiSpec.Scenario,
DUnitX.Extensibility;

procedure RegisterFeaturesWithDUnitX(const RootName: string; const Features: TObjectList<TFeature>);
procedure RegisterFeaturesWithDUnitX(const RootName: string; const Features: TFeatureList);

implementation

Expand All @@ -17,10 +17,10 @@ implementation
DelphiSpec.StepDefinitions;

var
_Features: TObjectList<TFeature>;
_Features: TFeatureList;
_RootName: string;

procedure RegisterFeaturesWithDUnitX(const RootName: string; const Features: TObjectList<TFeature>);
procedure RegisterFeaturesWithDUnitX(const RootName: string; const Features: TFeatureList);
begin
_RootName := rootName;
_Features := Features;
Expand Down Expand Up @@ -66,7 +66,7 @@ procedure TDelphiSpecFixtureProvider.Execute(const Context: IFixtureProviderCont
OutlineFixture: ITestFixture;
ScenarioFixture: ITestFixture;

procedure BuildTests(const ParentFixture: ITestFixture; const Scenarios: TObjectList<TScenario>);
procedure BuildTests(const ParentFixture: ITestFixture; const Scenarios: TScenarioList);
var
FixtureInstance: TDUnitXScenario;
TestMethod: TTestMethod;
Expand Down
4 changes: 2 additions & 2 deletions Source/DelphiSpec.Parser.pas
Expand Up @@ -81,7 +81,7 @@ TDelphiSpecParser = class
constructor Create(const LangCode: string);
destructor Destroy; override;

procedure Execute(const FileName: string; Features: TObjectList<TFeature>);
procedure Execute(const FileName: string; Features: TFeatureList);
end;

implementation
Expand Down Expand Up @@ -185,7 +185,7 @@ procedure TDelphiSpecParser.ExampleNode(ScenarioOutline: TScenarioOutline);
end;

procedure TDelphiSpecParser.Execute(const FileName: string;
Features: TObjectList<TFeature>);
Features: TFeatureList);
var
Command, FeatureName: string;
Feature: TFeature;
Expand Down
53 changes: 31 additions & 22 deletions Source/DelphiSpec.Scenario.pas
Expand Up @@ -7,24 +7,31 @@ interface
DelphiSpec.DataTable, Rtti;

type
TFeature = class; // forward declaration
TScenario = class; // forward declaration
TScenarioOutline = class; // forward declaration;

TFeatureList = class(TObjectList<TFeature>);
TScenarioList = class(TObjectList<TScenario>);
TScenarioOutlineList = class(TObjectList<TScenarioOutline>);

TValueArray = TArray<TValue>;

TFeature = class
private
FName: string;
FBackground: TScenario;
FScenarios: TObjectList<TScenario>;
FScenarioOutlines: TObjectList<TScenarioOutline>;
FScenarios: TScenarioList;
FScenarioOutlines: TScenarioOutlineList;
FStepDefsClass: TStepDefinitionsClass;
public
constructor Create(const Name: string; StepDefsClass: TStepDefinitionsClass); reintroduce;
destructor Destroy; override;

property Background: TScenario read FBackground write FBackground;
property Name: string read FName;
property Scenarios: TObjectList<TScenario> read FScenarios;
property ScenarioOutlines: TObjectList<TScenarioOutline> read FScenarioOutlines;
property Scenarios: TScenarioList read FScenarios;
property ScenarioOutlines: TScenarioOutlineList read FScenarioOutlines;
property StepDefinitionsClass: TStepDefinitionsClass read FStepDefsClass;
end;

Expand All @@ -43,6 +50,8 @@ TStep = class
property DataTable: IDataTable read FDataTable;
property PyString: string read FPyString;
end;

TStepList = class(TObjectList<TStep>);
strict private
FName: string;
FFeature: TFeature;
Expand All @@ -56,9 +65,9 @@ TStep = class
function PrepareStep(const Step: string; AttributeClass: TDelphiSpecStepAttributeClass;
const MethodName: string; const Params: TArray<TRttiParameter>): string;
protected
FGiven: TObjectList<TStep>;
FWhen: TObjectList<TStep>;
FThen: TObjectList<TStep>;
FGiven: TStepList;
FWhen: TStepList;
FThen: TStepList;
public
constructor Create(Parent: TFeature; const Name: string); reintroduce; virtual;
destructor Destroy; override;
Expand All @@ -76,17 +85,17 @@ TStep = class
TScenarioOutline = class(TScenario)
private
FExamples: IDataTable;
FScenarios: TObjectList<TScenario>;
FScenarios: TScenarioList;
FScenariosReady: Boolean;
function GetScenarios: TObjectList<TScenario>;
function GetScenarios: TScenarioList;
procedure PrepareScenarios;
public
constructor Create(Parent: TFeature; const Name: string); override;
destructor Destroy; override;

procedure SetExamples(Examples: IDataTable);

property Scenarios: TObjectList<TScenario> read GetScenarios;
property Scenarios: TScenarioList read GetScenarios;
end;

implementation
Expand All @@ -101,8 +110,8 @@ constructor TFeature.Create(const Name: string; StepDefsClass: TStepDefinitionsC
inherited Create;
FName := Name;
FBackground := nil;
FScenarios := TObjectList<TScenario>.Create(True);
FScenarioOutlines := TObjectList<TScenarioOutline>.Create(True);
FScenarios := TScenarioList.Create(True);
FScenarioOutlines := TScenarioOutlineList.Create(True);
FStepDefsClass := StepDefsClass;
end;

Expand Down Expand Up @@ -157,7 +166,7 @@ function TScenario.ConvertParamValue(const Value: string;
Delimiter = ',';
var
Strings: TStringDynArray;
Values: TArray<TValue>;
Values: TValueArray;
I: Integer;
ElementType: TRttiType;
begin
Expand Down Expand Up @@ -186,16 +195,16 @@ constructor TScenario.Create(Parent: TFeature; const Name: string);
FFeature := Parent;
FName := Name;

FGiven := TObjectList<TStep>.Create(True);
FWhen := TObjectList<TStep>.Create(True);
FThen := TObjectList<TStep>.Create(True);
FGiven := TStepList.Create(True);
FWhen := TStepList.Create(True);
FThen := TStepList.Create(True);
end;

function TScenario.ConvertDataTable(DataTable: IDataTable;
ParamType: TRttiType): TValue;

function ConvertDataTableToArrayOfRecords(DataTable: IDataTable;
ElementType: TRttiType): TArray<TValue>;
ElementType: TRttiType): TValueArray;
var
I, J: Integer;
RttiField: TRttiField;
Expand All @@ -215,7 +224,7 @@ function TScenario.ConvertDataTable(DataTable: IDataTable;
end;

function ConvertDataTableToTwoDimArray(DataTable: IDataTable;
ElementType: TRttiType): TArray<TValue>;
ElementType: TRttiType): TValueArray;
var
I, J: Integer;
ArrayLength: Integer;
Expand All @@ -235,7 +244,7 @@ function TScenario.ConvertDataTable(DataTable: IDataTable;
end;

var
Values: TArray<TValue>;
Values: TValueArray;
ElementType: TRttiType;
begin
ElementType := (ParamType as TRttiDynamicArrayType).ElementType;
Expand Down Expand Up @@ -310,7 +319,7 @@ function TScenario.InvokeStep(Step: TStep; StepDefs: TStepDefinitions;
I: Integer;
S: string;
Params: TArray<TRttiParameter>;
Values: TArray<TValue>;
Values: TValueArray;
begin
Params := RttiMethod.GetParameters;
S := PrepareStep(Value, AttributeClass, RttiMethod.Name, Params);
Expand Down Expand Up @@ -368,7 +377,7 @@ constructor TScenarioOutline.Create(Parent: TFeature; const Name: string);
inherited;
FScenariosReady := False;
FExamples := nil;
FScenarios := TObjectList<TScenario>.Create(True);
FScenarios := TScenarioList.Create(True);
end;

destructor TScenarioOutline.Destroy;
Expand All @@ -377,7 +386,7 @@ destructor TScenarioOutline.Destroy;
inherited;
end;

function TScenarioOutline.GetScenarios: TObjectList<TScenario>;
function TScenarioOutline.GetScenarios: TScenarioList;
begin
if not FScenariosReady then
begin
Expand Down

0 comments on commit d724cea

Please sign in to comment.