Skip to content

Commit

Permalink
Forgotten test units
Browse files Browse the repository at this point in the history
pozitronik committed Dec 11, 2023
1 parent 39de4d8 commit 462ff0b
Showing 2 changed files with 173 additions and 0 deletions.
56 changes: 56 additions & 0 deletions tests/helpers/SystemHelperTest.pas
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
unit SystemHelperTest;

interface

uses
SystemHelper,
DUnitX.TestFramework;

type
TTestRecordType = record
i: Integer;
s: WideString;
end;

[TestFixture]
TSystemHelperTest = class
public
[test]
procedure TestTernary;
end;

implementation

{TSystemHelperTest}

procedure TSystemHelperTest.TestTernary;
var
TestRecordOne, TestRecordTwo: TTestRecordType;
begin

Assert.IsTrue(Ternary.IfElse(1 = 1, True, False));
Assert.IsFalse(Ternary.IfElse(1 = 0, True, False));

Assert.AreEqual('StringOne', Ternary.IfElse(1 = 1, 'StringOne', 'StringTwo'));
Assert.AreEqual('StringFour', Ternary.IfElse(1 = 0, 'StringThree', 'StringFour'));

Ternary.IfElse<>(1 = 0, (100 * 2), (21 * 2));

Assert.AreEqual(10, Ternary.IfElse(1 = 1, 5 + 5, 6 + 6));
Assert.IsTrue(42 = Ternary.IfElse(1 = 0, 100 * 2, 84 / 2));

TestRecordOne.i := 12;
TestRecordOne.s := 'abc';

TestRecordTwo.i := 54;
TestRecordTwo.s := 'xyz';

Assert.AreEqual('StringOne', Ternary.IfElse<TTestRecordType>(1 = 1, TestRecordOne, TestRecordTwo));
Assert.AreEqual('StringFour', Ternary.IfElse<TTestRecordType>(1 = 0, TestRecordOne, TestRecordTwo));
end;

initialization

TDUnitX.RegisterTestFixture(TSystemHelperTest);

end.
117 changes: 117 additions & 0 deletions tests/models/settings/PluginSettingsManagerTest.pas
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
unit PluginSettingsManagerTest;

interface

uses
PluginSettings,
PluginSettingsManager,
SETTINGS_CONSTANTS,
TestHelper,
SysUtils,
IOUtils,
ConnectionSettings,
DUnitX.TestFramework;

type

[TestFixture]
TPluginSettingsManagerTest = class
AppDir: WideString; //the current test binary directory
AppDataSubDir: WideString; //the subdirectory in AppData
private const
FP_SETTINGS_INI = 'Settings.ini';
FP_SETTINGS_REDIRECT_INI = 'SettingsRedirect.ini';
public
[Setup]
procedure Setup;

[Test]
procedure TestCreateFromKnownFile; {When the ini file name is known, it can be used in the simple way}

[Test]
procedure TestCreateDefaults; {When there's no file, default values should be loaded}

[Test]
procedure TestCreateFindFile; {When the ini file name isn't known, constructor looks for it in the application directory and appdata folder}

end;

implementation

procedure TPluginSettingsManagerTest.Setup;
begin
AppDir := IncludeTrailingBackslash(ExtractFilePath(GetModuleName(hInstance)));
AppDataSubDir := IncludeTrailingBackslash(IncludeTrailingBackslash(SysUtils.GetEnvironmentVariable('APPDATA')) + APPDATA_DIR_NAME);

{cleans the previous run artefacts}
if FileExists(self.AppDir + PLUGIN_CONFIG_FILE_NAME) then
DeleteFile(self.AppDir + PLUGIN_CONFIG_FILE_NAME);

end;

procedure TPluginSettingsManagerTest.TestCreateDefaults;
var
TempSettingsManager: TPluginSettingsManager;
begin
TempSettingsManager := TPluginSettingsManager.Create('');

{peek some randoms of different data types}
Assert.IsFalse(TempSettingsManager.Settings.DescriptionEnabled); //boolean
Assert.AreEqual(1000, TempSettingsManager.Settings.AttemptWait); //integer
Assert.AreEqual('descript.ion', TempSettingsManager.Settings.DescriptionFileName); //string
Assert.IsFalse(TempSettingsManager.Settings.ConnectionSettings.ProxySettings.UseTCPasswordManager); //subrecord boolean
Assert.AreEqual(DEFAULT_USERAGENT, TempSettingsManager.Settings.ConnectionSettings.UserAgent); //subrecord string
Assert.AreEqual(0, TempSettingsManager.Settings.ConnectionSettings.ProxySettings.Port); //subrecord string
TempSettingsManager.Free;
end;

procedure TPluginSettingsManagerTest.TestCreateFindFile;
var
TempSettingsManager: TPluginSettingsManager;
begin
TempSettingsManager := TPluginSettingsManager.Create();

{It finds no config, but writeable application directory, and uses it}
Assert.AreEqual(self.AppDir, TempSettingsManager.ApplicationPath);
Assert.AreEqual(INI_DIR_PLUGIN, TempSettingsManager.Settings.IniDir);

TempSettingsManager.Free;

{Copies the ini with only one directive (redirect to the appdata) to the application dir}
TFile.Copy(DataPath(FP_SETTINGS_REDIRECT_INI), self.AppDir + PLUGIN_CONFIG_FILE_NAME);

TempSettingsManager := TPluginSettingsManager.Create();

{It finds a config, where IniPath is set to one, and interprets it as a redirection to the AppData}
Assert.AreEqual(self.AppDataSubDir, TempSettingsManager.IniFileDir);

{The IniPath in the redirected file can be any}
// Assert.AreEqual(INI_PATH_APPDATA, TempSettingsManager.IniPath);

TempSettingsManager.Free;

end;

procedure TPluginSettingsManagerTest.TestCreateFromKnownFile;
var
TempSettingsManager: TPluginSettingsManager;
begin
TempSettingsManager := TPluginSettingsManager.Create(DataPath(FP_SETTINGS_INI));

{peek some randoms of different data types}
Assert.IsTrue(TempSettingsManager.Settings.DescriptionEnabled); //boolean
Assert.AreEqual(1000, TempSettingsManager.Settings.AttemptWait); //integer
Assert.AreEqual('descript.ed', TempSettingsManager.Settings.DescriptionFileName); //string
Assert.IsFalse(TempSettingsManager.Settings.ConnectionSettings.ProxySettings.UseTCPasswordManager); //subrecord boolean
Assert.AreEqual('There''s no spoon', TempSettingsManager.Settings.ConnectionSettings.UserAgent); //subrecord string
Assert.AreEqual(5000, TempSettingsManager.Settings.ConnectionSettings.ProxySettings.Port); //subrecord string
TempSettingsManager.Free;

end;


initialization

TDUnitX.RegisterTestFixture(TPluginSettingsManagerTest);

end.

0 comments on commit 462ff0b

Please sign in to comment.