From 3799d9e6582e6b3cc37a37cf6986a55aea69dfd3 Mon Sep 17 00:00:00 2001 From: AliveDevil Date: Mon, 25 Nov 2024 10:32:03 +0100 Subject: [PATCH] Remove string empty check in getProperty --- .../preferences/ApplicationPreferences.cs | 2 +- .../ApplicationPreferencesTests.cs | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/core/src/main/csharp/ch/cyberduck/core/preferences/ApplicationPreferences.cs b/core/src/main/csharp/ch/cyberduck/core/preferences/ApplicationPreferences.cs index d5f57a010c..cd43b7bfe6 100644 --- a/core/src/main/csharp/ch/cyberduck/core/preferences/ApplicationPreferences.cs +++ b/core/src/main/csharp/ch/cyberduck/core/preferences/ApplicationPreferences.cs @@ -96,7 +96,7 @@ public class ApplicationPreferences : DefaultPreferences public override string getProperty(string property) { - if (propertyStore[property] is not { } value || string.IsNullOrWhiteSpace(value)) + if (propertyStore[property] is not { } value) { value = getDefault(property); } diff --git a/core/src/test/csharp/ch/cyberduck/core/preferences/ApplicationPreferencesTests.cs b/core/src/test/csharp/ch/cyberduck/core/preferences/ApplicationPreferencesTests.cs index de81a26d7c..5533a2cc81 100644 --- a/core/src/test/csharp/ch/cyberduck/core/preferences/ApplicationPreferencesTests.cs +++ b/core/src/test/csharp/ch/cyberduck/core/preferences/ApplicationPreferencesTests.cs @@ -1,5 +1,6 @@ using java.util; using NUnit.Framework; +using System.Collections.Generic; namespace Ch.Cyberduck.Core.Preferences; @@ -18,10 +19,46 @@ public class ApplicationPreferencesTests } } + [TestCase] + public void PersistsEmptyValue() + { + TestPreferences preferences = new(); + preferences.setDefaults([ + new("test.empty.default", "DONT") + ]); + + Assert.AreEqual("DONT", preferences.getDefault("test.empty.default")); + preferences.setProperty("test.empty.default", ""); + Assert.AreEqual("DONT", preferences.getDefault("test.empty.default")); + Assert.AreEqual("", preferences.getProperty("test.empty.default")); + } + + [TestCase] + public void OverrideDefaultsDefault() + { + TestPreferences preferences = new(); + preferences.setDefaults([ + /* Mimick Cyberduck Defaults */ + new("test.core.override", "CORE"), + /* Override in downstream Defaults */ + new("test.core.override", "") + ]); + + Assert.IsEmpty(preferences.getProperty("test.core.override")); + } + public class TestPreferences : ApplicationPreferences { public TestPreferences() : base(new DefaultLocales(), new PropertyStoreFactory()) { } + + public void setDefaults(params KeyValuePair[] testDefaults) + { + foreach (var item in testDefaults) + { + setDefault(item.Key, item.Value); + } + } } }