From 4f932abf3b4045f8b0a8d40cf40d350e697490b3 Mon Sep 17 00:00:00 2001 From: Cameron Beeley Date: Fri, 10 Jul 2026 15:45:03 +0100 Subject: [PATCH] test: cover AppSettingsDTO deserialization with non-default values The XML string-proxy setters in AppSettingsDTO (bool/int/enum TryParse -> assign) were unasserted: mutation testing showed that negating the parse guard or deleting the assignment both survived, because the existing fixture only used default values. This adds a round-trip test that deserializes non-default values and asserts each typed property, so a setter that fails to assign is now caught. Part of #37 --- DS4WindowsTests/AppSettingsTests.cs | 72 +++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/DS4WindowsTests/AppSettingsTests.cs b/DS4WindowsTests/AppSettingsTests.cs index 648777e..67cdadb 100644 --- a/DS4WindowsTests/AppSettingsTests.cs +++ b/DS4WindowsTests/AppSettingsTests.cs @@ -184,5 +184,77 @@ public void CheckSettingsSave() Assert.AreEqual(appSettingsXml, testStr); } + + [TestMethod] + public void CheckSettingsDeserializeNonDefaultValues() + { + var nonDefaultSettingsXml = @" + + + 1 + True + True + False + True + True + True + False + Colored + Dark + True + True + True + True + True + False + + True + + + + False + + + True + + + True + + + True + + + True + + +"; + + XmlSerializer serializer = new XmlSerializer(typeof(AppSettingsDTO)); + using StringReader sr = new StringReader(nonDefaultSettingsXml); + AppSettingsDTO dto = serializer.Deserialize(sr) as AppSettingsDTO; + + Assert.AreEqual(1, dto.Notifications); + Assert.AreEqual(true, dto.ProfileChangedNotification); + Assert.AreEqual(true, dto.DisconnectBTAtStop); + Assert.AreEqual(false, dto.SwipeProfiles); + Assert.AreEqual(true, dto.QuickCharge); + Assert.AreEqual(true, dto.CloseMinimizes); + Assert.AreEqual(true, dto.DownloadLang); + Assert.AreEqual(false, dto.FlashWhenLate); + Assert.AreEqual(TrayIconChoice.Colored, dto.AppIcon); + Assert.AreEqual(AppThemeChoice.Dark, dto.AppTheme); + Assert.AreEqual(true, dto.UseOSCServer); + Assert.AreEqual(true, dto.InterpretingOscMonitoring); + Assert.AreEqual(true, dto.UseOSCSender); + Assert.AreEqual(true, dto.UseUDPServer); + Assert.AreEqual(true, dto.UseCustomSteamFolder); + Assert.AreEqual(false, dto.AutoProfileRevertDefaultProfile); + Assert.AreEqual(true, dto.UDPServerSmoothingOptions.UseSmoothing); + Assert.AreEqual(false, dto.DeviceOptions.DS4SupportSettings.Enabled); + Assert.AreEqual(true, dto.DeviceOptions.DualSenseSupportSettings.Enabled); + Assert.AreEqual(true, dto.DeviceOptions.SwitchProSupportSettings.Enabled); + Assert.AreEqual(true, dto.DeviceOptions.JoyConSupportSettings.Enabled); + Assert.AreEqual(true, dto.DeviceOptions.DS3SupportSettings.Enabled); + } } }