lazarus/components/fpcunit/ide/testinsightcontroller.pas
2023-11-26 10:45:53 +01:00

138 lines
2.8 KiB
ObjectPascal

unit TestInsightController;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
Const
DefaultPort = 6789;
DefaultAutoFetchTests = True;
DefaultBasePath = '/tests';
TestInsightConfig = 'TestInsight.xml';
Type
{ TTestInsightOptions }
TTestInsightOptions = class(TPersistent)
private
FAutoFetchTests: Boolean;
FBasePath: String;
FPort: Word;
Public
Constructor Create;
procedure Reset; virtual;
procedure LoadFromFile(FileName : String);
procedure SaveToFile(FileName: String);
Property Port : Word Read FPort Write FPort;
property BasePath : String Read FBasePath Write FBasePath;
Property AutoFetchTests : Boolean Read FAutoFetchTests Write FautoFetchTests;
end;
{ TTestInsightController }
TTestInsightController = class(TObject)
private
class var _instance : TTestInsightController;
Class constructor Init;
Class destructor Done;
private
FOptions: TTestInsightOptions;
public
Public
Constructor Create;
Destructor Destroy; override;
Class Property Instance : TTestInsightController Read _instance;
Property Options : TTestInsightOptions Read FOptions;
end;
Function gTestInsightController : TTestInsightController;
implementation
Uses BaseIDEIntf, LazConfigStorage;
Const
KeyPort = 'Port/Value';
KeyAutoFetchTests = 'AutoFetchTests/Value';
KeyBasePath = 'BasePath/Value';
function gTestInsightController: TTestInsightController;
begin
Result:=TTestInsightController.Instance
end;
{ TTestInsightOptions }
procedure TTestInsightOptions.SaveToFile(FileName: String);
var
Cfg: TConfigStorage;
begin
Cfg:=GetIDEConfigStorage(Filename,False);
try
Cfg.SetDeleteValue(KeyPort,Port,DefaultPort);
Cfg.SetDeleteValue(KeyBasePath,BasePath,DefaultBasePath);
Cfg.SetDeleteValue(KeyAutoFetchTests,AutoFetchTests,DefaultAutoFetchTests);
Cfg.WriteToDisk;
finally
Cfg.Free;
end;
end;
constructor TTestInsightOptions.Create;
begin
Reset;
end;
procedure TTestInsightOptions.Reset;
begin
Port:=DefaultPort;
BasePath:=DefaultBasePath;
AutoFetchTests:=DefaultAutoFetchTests;
end;
procedure TTestInsightOptions.LoadFromFile(FileName: String);
var
Cfg: TConfigStorage;
begin
Cfg:=GetIDEConfigStorage(Filename,True);
try
Port:=Cfg.GetValue(KeyPort,DefaultPort);
BasePath:=Cfg.GetValue(KeyBasePath,DefaultBasePath);
AutoFetchTests:=Cfg.GetValue(KeyAutoFetchTests,DefaultAutoFetchTests);
finally
Cfg.Free;
end;
end;
{ TTestInsightController }
class constructor TTestInsightController.Init;
begin
_Instance:=TTestInsightController.Create;
end;
class destructor TTestInsightController.Done;
begin
FreeAndNil(_Instance)
end;
constructor TTestInsightController.Create;
begin
FOptions:=TTestInsightOptions.Create;
end;
destructor TTestInsightController.Destroy;
begin
FreeAndNil(FOptions);
inherited Destroy;
end;
end.