-
Notifications
You must be signed in to change notification settings - Fork 48
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
1 parent
39de4d8
commit 462ff0b
Showing
2 changed files
with
173 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |