Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
886 changes: 886 additions & 0 deletions CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dpr

Large diffs are not rendered by default.

2,472 changes: 2,472 additions & 0 deletions CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dproj

Large diffs are not rendered by default.

81 changes: 81 additions & 0 deletions CryptoLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.fmx
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
object MobileTestHostForm: TMobileTestHostForm
Left = 0
Top = 0
Caption = 'CryptoLib Tests (Mobile)'
ClientHeight = 606
ClientWidth = 360
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
OnActivate = FormActivate
OnShow = FormShow
DesignerMasterStyle = 3
object lblBaseUrl: TLabel
AutoSize = True
Position.X = 8.000000000000000000
Position.Y = 26.000000000000000000
Size.Width = 177.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
Text = 'TestInsight URL'
TabOrder = 4
end
object edtBaseUrl: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
Anchors = [akLeft, akTop, akRight, akBottom]
TabOrder = 0
Position.X = 8.000000000000000000
Position.Y = 56.000000000000000000
Size.Width = 344.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TextPrompt = 'http://IP:PORT'
OnChange = edtBaseUrlChange
OnChangeTracking = edtBaseUrlChange
end
object btnSaveUrl: TButton
Enabled = False
Position.X = 8.000000000000000000
Position.Y = 114.000000000000000000
Size.Width = 89.000000000000000000
Size.Height = 44.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
Text = 'Save URL'
OnClick = btnSaveUrlClick
end
object lblConnection: TLabel
AutoSize = True
Position.X = 8.000000000000000000
Position.Y = 222.000000000000000000
Size.Width = 344.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
Text = 'IDE: (status)'
TabOrder = 5
end
object btnRunTests: TButton
Enabled = False
Position.X = 8.000000000000000000
Position.Y = 166.000000000000000000
Size.Width = 89.000000000000000000
Size.Height = 44.000000000000000000
Size.PlatformDefault = False
TabOrder = 2
Text = 'Run Tests'
OnClick = btnRunTestsClick
end
object memLog: TMemo
Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
DataDetectorTypes = []
Anchors = [akLeft, akTop, akRight, akBottom]
Position.X = 8.000000000000000000
Position.Y = 264.000000000000000000
Size.Width = 344.000000000000000000
Size.Height = 334.000000000000000000
Size.PlatformDefault = False
TabOrder = 3
Viewport.Width = 336.000000000000000000
Viewport.Height = 326.000000000000000000
end
end
150 changes: 150 additions & 0 deletions CryptoLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.pas
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
unit MobileTestHostFormUnit;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
System.IOUtils,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Controls.Presentation, FMX.Edit, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo,
CryptoLibTestResourceLoader, MobileTestRunner;

type
TMobileTestHostForm = class(TForm)
lblBaseUrl: TLabel;
edtBaseUrl: TEdit;
btnSaveUrl: TButton;
lblConnection: TLabel;
btnRunTests: TButton;
memLog: TMemo;
procedure FormShow(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure edtBaseUrlChange(Sender: TObject);
procedure btnSaveUrlClick(Sender: TObject);
procedure btnRunTestsClick(Sender: TObject);
private
procedure RefreshDataRootSection;
procedure AppendLog(const ALine: string);
procedure UpdateConnectionLabel;
procedure UpdateActionButtons;
public
end;

var
MobileTestHostForm: TMobileTestHostForm;

implementation

{$R *.fmx}

procedure TMobileTestHostForm.AppendLog(const ALine: string);
begin
if ALine <> '' then
memLog.Lines.Add(ALine);
end;

procedure TMobileTestHostForm.UpdateConnectionLabel;
var
LUrl: string;
begin
LUrl := Trim(edtBaseUrl.Text);
if not ProbeTestInsightServer(LUrl) then
lblConnection.Text := 'IDE: enter TestInsight BaseUrl'
else
lblConnection.Text := 'IDE: URL set (open TestInsight Explorer)';
end;

procedure TMobileTestHostForm.UpdateActionButtons;
var
LUrlOk: Boolean;
begin
LUrlOk := ProbeTestInsightServer(edtBaseUrl.Text);
btnSaveUrl.Enabled := LUrlOk;
btnRunTests.Enabled := LUrlOk and not MobileTestsRunning;
end;

procedure TMobileTestHostForm.edtBaseUrlChange(Sender: TObject);
begin
UpdateConnectionLabel;
UpdateActionButtons;
end;

procedure TMobileTestHostForm.RefreshDataRootSection;
var
LDataRoot, LSentinelPath: string;
LFiles: TArray<string>;
begin
LDataRoot := TCryptoLibTestResourceLoader.DataRoot;
memLog.Lines.BeginUpdate;
try
memLog.Lines.Clear;
memLog.Lines.Add('=== Test data ===');
memLog.Lines.Add('Data root: ' + LDataRoot);
if LDataRoot = '' then
begin
memLog.Lines.Add('(path provider did not resolve a data root)');
Exit;
end;
LSentinelPath := TCryptoLibTestResourceLoader.ResolveRelativePath(LDataRoot,
TCryptoLibTestResourceLoader.CryptoLibTestDataSentinel);
if FileExists(LSentinelPath) then
memLog.Lines.Add('Sentinel ' + TCryptoLibTestResourceLoader.CryptoLibTestDataSentinel + ': yes')
else
memLog.Lines.Add('Sentinel ' + TCryptoLibTestResourceLoader.CryptoLibTestDataSentinel + ': no');
if TDirectory.Exists(LDataRoot) then
begin
LFiles := TDirectory.GetFiles(LDataRoot, '*', TSearchOption.soAllDirectories);
memLog.Lines.Add('file count: ' + IntToStr(Length(LFiles)));
end
else
memLog.Lines.Add('(directory does not exist)');
memLog.Lines.Add('');
memLog.Lines.Add('=== Test log ===');
finally
memLog.Lines.EndUpdate;
end;
end;

procedure TMobileTestHostForm.FormShow(Sender: TObject);
begin
edtBaseUrl.Text := LoadTestInsightBaseUrl;
UpdateConnectionLabel;
UpdateActionButtons;
RefreshDataRootSection;
end;

procedure TMobileTestHostForm.FormActivate(Sender: TObject);
begin
RefreshDataRootSection;
end;

procedure TMobileTestHostForm.btnSaveUrlClick(Sender: TObject);
begin
SaveTestInsightBaseUrl(edtBaseUrl.Text);
UpdateConnectionLabel;
AppendLog('Saved TestInsight BaseUrl.');
end;

procedure TMobileTestHostForm.btnRunTestsClick(Sender: TObject);
begin
if MobileTestsRunning then
Exit;

SaveTestInsightBaseUrl(edtBaseUrl.Text);
UpdateConnectionLabel;
AppendLog('Running tests (TestInsight remote)…');

RunMobileTestsAsync(edtBaseUrl.Text,
procedure(const AMessage: string)
begin
AppendLog(AMessage);
end,
procedure
begin
UpdateActionButtons;
AppendLog('Tests finished.');
end);
UpdateActionButtons;
end;

end.
Loading
Loading