From 462ff0be43fe01dfc2211af5ac2e744d78d7d2e8 Mon Sep 17 00:00:00 2001 From: Pozitronik Date: Mon, 11 Dec 2023 17:18:51 +0400 Subject: [PATCH] Forgotten test units --- tests/helpers/SystemHelperTest.pas | 56 +++++++++ .../settings/PluginSettingsManagerTest.pas | 117 ++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 tests/helpers/SystemHelperTest.pas create mode 100644 tests/models/settings/PluginSettingsManagerTest.pas diff --git a/tests/helpers/SystemHelperTest.pas b/tests/helpers/SystemHelperTest.pas new file mode 100644 index 0000000..f6c49ee --- /dev/null +++ b/tests/helpers/SystemHelperTest.pas @@ -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(1 = 1, TestRecordOne, TestRecordTwo)); + Assert.AreEqual('StringFour', Ternary.IfElse(1 = 0, TestRecordOne, TestRecordTwo)); +end; + +initialization + +TDUnitX.RegisterTestFixture(TSystemHelperTest); + +end. diff --git a/tests/models/settings/PluginSettingsManagerTest.pas b/tests/models/settings/PluginSettingsManagerTest.pas new file mode 100644 index 0000000..65535d5 --- /dev/null +++ b/tests/models/settings/PluginSettingsManagerTest.pas @@ -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.