Added support for multiple data root paths

This commit is contained in:
2024-02-22 22:26:31 +01:00
parent 824ec0e29b
commit 801f8aa643
3 changed files with 67 additions and 31 deletions

View File

@@ -43,14 +43,14 @@ type
FEngine: TSolverEngine;
procedure Setup; override;
procedure TearDown; override;
function GetDataPath: string; virtual;
function GetDataPaths: TStringArray; virtual;
end;
{ TExampleEngineBaseTest }
TExampleEngineBaseTest = class(TEngineBaseTest)
protected
function GetDataPath: string; override;
function GetDataPaths: TStringArray; override;
end;
implementation
@@ -72,15 +72,10 @@ end;
{ TEngineBaseTest }
procedure TEngineBaseTest.Setup;
var
fileName: string;
begin
inherited Setup;
FEngine := TSolverEngine.Create(GetDataPath);
fileName := FEngine.GetDataFileName(FSolver);
AssertTrue('Cannot find puzzle input file ''' + ExpandFileName(fileName) + '''. '
+ 'Please download the file from https://adventofcode.com/2023/',
FileExists(fileName));
FEngine := TSolverEngine.Create(GetDataPaths);
AssertTrue(FEngine.GetInvalidDataPathMessage(FSolver), FEngine.HasValidDataPath(FSolver));
FEngine.ProcessData(FSolver);
end;
@@ -90,16 +85,22 @@ begin
inherited TearDown;
end;
function TEngineBaseTest.GetDataPath: string;
function TEngineBaseTest.GetDataPaths: TStringArray;
begin
Result := ConcatPaths(['..', '..', 'bin', 'data']);
Result := TStringArray.Create(
ConcatPaths(['..', '..', 'bin', 'data']),
ConcatPaths(['..', '..', '..', 'data'])
);
end;
{ TExampleEngineBaseTest }
function TExampleEngineBaseTest.GetDataPath: string;
function TExampleEngineBaseTest.GetDataPaths: TStringArray;
begin
Result := 'example_data';
Result := TStringArray.Create(
ConcatPaths(['..', '..', 'bin', 'data', 'example']),
ConcatPaths(['..', '..', '..', 'data', 'example'])
);
end;
end.