|
@@ -7,359 +7,357 @@ using System.Text.Json;
|
|
using Xunit;
|
|
using Xunit;
|
|
using static Terminal.Gui.ConfigurationManager;
|
|
using static Terminal.Gui.ConfigurationManager;
|
|
|
|
|
|
-namespace Terminal.Gui.ConfigurationTests {
|
|
|
|
- public class ConfigurationManagerTests {
|
|
|
|
|
|
+namespace Terminal.Gui.ConfigurationTests;
|
|
|
|
|
|
- public static readonly JsonSerializerOptions _jsonOptions = new () {
|
|
|
|
- Converters = {
|
|
|
|
- new AttributeJsonConverter (),
|
|
|
|
- new ColorJsonConverter (),
|
|
|
|
- }
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- [Fact ()]
|
|
|
|
- public void DeepMemberwiseCopyTest ()
|
|
|
|
- {
|
|
|
|
- // Value types
|
|
|
|
- var stringDest = "Destination";
|
|
|
|
- var stringSrc = "Source";
|
|
|
|
- var stringCopy = DeepMemberwiseCopy (stringSrc, stringDest);
|
|
|
|
- Assert.Equal (stringSrc, stringCopy);
|
|
|
|
-
|
|
|
|
- stringDest = "Destination";
|
|
|
|
- stringSrc = "Destination";
|
|
|
|
- stringCopy = DeepMemberwiseCopy (stringSrc, stringDest);
|
|
|
|
- Assert.Equal (stringSrc, stringCopy);
|
|
|
|
-
|
|
|
|
- stringDest = "Destination";
|
|
|
|
- stringSrc = null;
|
|
|
|
- stringCopy = DeepMemberwiseCopy (stringSrc, stringDest);
|
|
|
|
- Assert.Equal (stringSrc, stringCopy);
|
|
|
|
-
|
|
|
|
- stringDest = "Destination";
|
|
|
|
- stringSrc = string.Empty;
|
|
|
|
- stringCopy = DeepMemberwiseCopy (stringSrc, stringDest);
|
|
|
|
- Assert.Equal (stringSrc, stringCopy);
|
|
|
|
-
|
|
|
|
- var boolDest = true;
|
|
|
|
- var boolSrc = false;
|
|
|
|
- var boolCopy = DeepMemberwiseCopy (boolSrc, boolDest);
|
|
|
|
- Assert.Equal (boolSrc, boolCopy);
|
|
|
|
-
|
|
|
|
- boolDest = false;
|
|
|
|
- boolSrc = true;
|
|
|
|
- boolCopy = DeepMemberwiseCopy (boolSrc, boolDest);
|
|
|
|
- Assert.Equal (boolSrc, boolCopy);
|
|
|
|
-
|
|
|
|
- boolDest = true;
|
|
|
|
- boolSrc = true;
|
|
|
|
- boolCopy = DeepMemberwiseCopy (boolSrc, boolDest);
|
|
|
|
- Assert.Equal (boolSrc, boolCopy);
|
|
|
|
-
|
|
|
|
- boolDest = false;
|
|
|
|
- boolSrc = false;
|
|
|
|
- boolCopy = DeepMemberwiseCopy (boolSrc, boolDest);
|
|
|
|
- Assert.Equal (boolSrc, boolCopy);
|
|
|
|
-
|
|
|
|
- // Structs
|
|
|
|
- var attrDest = new Attribute (Color.Black);
|
|
|
|
- var attrSrc = new Attribute (Color.White);
|
|
|
|
- var attrCopy = DeepMemberwiseCopy (attrSrc, attrDest);
|
|
|
|
- Assert.Equal (attrSrc, attrCopy);
|
|
|
|
-
|
|
|
|
- // Classes
|
|
|
|
- var colorschemeDest = new ColorScheme () { Disabled = new Attribute (Color.Black) };
|
|
|
|
- var colorschemeSrc = new ColorScheme () { Disabled = new Attribute (Color.White) };
|
|
|
|
- var colorschemeCopy = DeepMemberwiseCopy (colorschemeSrc, colorschemeDest);
|
|
|
|
- Assert.Equal (colorschemeSrc, colorschemeCopy);
|
|
|
|
-
|
|
|
|
- // Dictionaries
|
|
|
|
- var dictDest = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.Black) } };
|
|
|
|
- var dictSrc = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.White) } };
|
|
|
|
- var dictCopy = (Dictionary<string, Attribute>)DeepMemberwiseCopy (dictSrc, dictDest);
|
|
|
|
- Assert.Equal (dictSrc, dictCopy);
|
|
|
|
-
|
|
|
|
- dictDest = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.Black) } };
|
|
|
|
- dictSrc = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.White) }, { "Normal", new Attribute (Color.Blue) } };
|
|
|
|
- dictCopy = (Dictionary<string, Attribute>)DeepMemberwiseCopy (dictSrc, dictDest);
|
|
|
|
- Assert.Equal (dictSrc, dictCopy);
|
|
|
|
-
|
|
|
|
- // src adds an item
|
|
|
|
- dictDest = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.Black) } };
|
|
|
|
- dictSrc = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.White) }, { "Normal", new Attribute (Color.Blue) } };
|
|
|
|
- dictCopy = (Dictionary<string, Attribute>)DeepMemberwiseCopy (dictSrc, dictDest);
|
|
|
|
- Assert.Equal (2, dictCopy.Count);
|
|
|
|
- Assert.Equal (dictSrc ["Disabled"], dictCopy ["Disabled"]);
|
|
|
|
- Assert.Equal (dictSrc ["Normal"], dictCopy ["Normal"]);
|
|
|
|
-
|
|
|
|
- // src updates only one item
|
|
|
|
- dictDest = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.Black) }, { "Normal", new Attribute (Color.White) } };
|
|
|
|
- dictSrc = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.White) } };
|
|
|
|
- dictCopy = (Dictionary<string, Attribute>)DeepMemberwiseCopy (dictSrc, dictDest);
|
|
|
|
- Assert.Equal (2, dictCopy.Count);
|
|
|
|
- Assert.Equal (dictSrc ["Disabled"], dictCopy ["Disabled"]);
|
|
|
|
- Assert.Equal (dictDest ["Normal"], dictCopy ["Normal"]);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //[Fact ()]
|
|
|
|
- //public void LoadFromJsonTest ()
|
|
|
|
- //{
|
|
|
|
- // Assert.True (false, "This test needs an implementation");
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //[Fact ()]
|
|
|
|
- //public void ToJsonTest ()
|
|
|
|
- //{
|
|
|
|
- // Assert.True (false, "This test needs an implementation");
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //[Fact ()]
|
|
|
|
- //public void UpdateConfigurationTest ()
|
|
|
|
- //{
|
|
|
|
- // Assert.True (false, "This test needs an implementation");
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //[Fact ()]
|
|
|
|
- //public void UpdateConfigurationFromFileTest ()
|
|
|
|
- //{
|
|
|
|
- // Assert.True (false, "This test needs an implementation");
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //[Fact ()]
|
|
|
|
- //public void SaveHardCodedDefaultsTest ()
|
|
|
|
- //{
|
|
|
|
- // Assert.True (false, "This test needs an implementation");
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //[Fact ()]
|
|
|
|
- //public void LoadGlobalFromLibraryResourceTest ()
|
|
|
|
- //{
|
|
|
|
- // Assert.True (false, "This test needs an implementation");
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //[Fact ()]
|
|
|
|
- //public void LoadGlobalFromAppDirectoryTest ()
|
|
|
|
- //{
|
|
|
|
- // Assert.True (false, "This test needs an implementation");
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //[Fact ()]
|
|
|
|
- //public void LoadGlobalFromHomeDirectoryTest ()
|
|
|
|
- //{
|
|
|
|
- // Assert.True (false, "This test needs an implementation");
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //[Fact ()]
|
|
|
|
- //public void LoadAppFromAppResourcesTest ()
|
|
|
|
- //{
|
|
|
|
- // Assert.True (false, "This test needs an implementation");
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //[Fact ()]
|
|
|
|
- //public void LoadAppFromAppDirectoryTest ()
|
|
|
|
- //{
|
|
|
|
- // Assert.True (false, "This test needs an implementation");
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //[Fact ()]
|
|
|
|
- //public void LoadAppFromHomeDirectoryTest ()
|
|
|
|
- //{
|
|
|
|
- // Assert.True (false, "This test needs an implementation");
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //[Fact ()]
|
|
|
|
- //public void LoadTest ()
|
|
|
|
- //{
|
|
|
|
- // Assert.True (false, "This test needs an implementation");
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- /// <summary>
|
|
|
|
- /// Save the `config.json` file; this can be used to update the file in `Terminal.Gui.Resources.config.json'.
|
|
|
|
- /// </summary>
|
|
|
|
- /// <remarks>
|
|
|
|
- /// IMPORTANT: For the file generated to be valid, this must be the ONLY test run. Config Properties
|
|
|
|
- /// are all static and thus can be overwritten by other tests.</remarks>
|
|
|
|
- [Fact]
|
|
|
|
- public void SaveDefaults ()
|
|
|
|
- {
|
|
|
|
- ConfigurationManager.Initialize ();
|
|
|
|
- ConfigurationManager.Reset ();
|
|
|
|
-
|
|
|
|
- // Get the hard coded settings
|
|
|
|
- ConfigurationManager.GetHardCodedDefaults ();
|
|
|
|
-
|
|
|
|
- // Serialize to a JSON string
|
|
|
|
- string json = ConfigurationManager.ToJson ();
|
|
|
|
-
|
|
|
|
- // Write the JSON string to the file
|
|
|
|
- File.WriteAllText ("config.json", json);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- [Fact]
|
|
|
|
- public void UseWithoutResetAsserts ()
|
|
|
|
- {
|
|
|
|
- ConfigurationManager.Initialize ();
|
|
|
|
- Assert.Throws<InvalidOperationException> (() => _ = ConfigurationManager.Settings);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- [Fact]
|
|
|
|
- public void Reset_Resets ()
|
|
|
|
- {
|
|
|
|
- ConfigurationManager.Locations = ConfigLocations.DefaultOnly;
|
|
|
|
- ConfigurationManager.Reset ();
|
|
|
|
- Assert.NotEmpty (ConfigurationManager.Themes);
|
|
|
|
- Assert.Equal ("Default", ConfigurationManager.Themes.Theme);
|
|
|
|
|
|
+public class ConfigurationManagerTests {
|
|
|
|
+ public static readonly JsonSerializerOptions _jsonOptions = new JsonSerializerOptions {
|
|
|
|
+ Converters = {
|
|
|
|
+ new AttributeJsonConverter (),
|
|
|
|
+ new ColorJsonConverter ()
|
|
}
|
|
}
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ [Fact ()]
|
|
|
|
+ public void DeepMemberwiseCopyTest ()
|
|
|
|
+ {
|
|
|
|
+ // Value types
|
|
|
|
+ string stringDest = "Destination";
|
|
|
|
+ string stringSrc = "Source";
|
|
|
|
+ object stringCopy = DeepMemberwiseCopy (stringSrc, stringDest);
|
|
|
|
+ Assert.Equal (stringSrc, stringCopy);
|
|
|
|
+
|
|
|
|
+ stringDest = "Destination";
|
|
|
|
+ stringSrc = "Destination";
|
|
|
|
+ stringCopy = DeepMemberwiseCopy (stringSrc, stringDest);
|
|
|
|
+ Assert.Equal (stringSrc, stringCopy);
|
|
|
|
+
|
|
|
|
+ stringDest = "Destination";
|
|
|
|
+ stringSrc = null;
|
|
|
|
+ stringCopy = DeepMemberwiseCopy (stringSrc, stringDest);
|
|
|
|
+ Assert.Equal (stringSrc, stringCopy);
|
|
|
|
+
|
|
|
|
+ stringDest = "Destination";
|
|
|
|
+ stringSrc = string.Empty;
|
|
|
|
+ stringCopy = DeepMemberwiseCopy (stringSrc, stringDest);
|
|
|
|
+ Assert.Equal (stringSrc, stringCopy);
|
|
|
|
+
|
|
|
|
+ bool boolDest = true;
|
|
|
|
+ bool boolSrc = false;
|
|
|
|
+ object boolCopy = DeepMemberwiseCopy (boolSrc, boolDest);
|
|
|
|
+ Assert.Equal (boolSrc, boolCopy);
|
|
|
|
+
|
|
|
|
+ boolDest = false;
|
|
|
|
+ boolSrc = true;
|
|
|
|
+ boolCopy = DeepMemberwiseCopy (boolSrc, boolDest);
|
|
|
|
+ Assert.Equal (boolSrc, boolCopy);
|
|
|
|
+
|
|
|
|
+ boolDest = true;
|
|
|
|
+ boolSrc = true;
|
|
|
|
+ boolCopy = DeepMemberwiseCopy (boolSrc, boolDest);
|
|
|
|
+ Assert.Equal (boolSrc, boolCopy);
|
|
|
|
+
|
|
|
|
+ boolDest = false;
|
|
|
|
+ boolSrc = false;
|
|
|
|
+ boolCopy = DeepMemberwiseCopy (boolSrc, boolDest);
|
|
|
|
+ Assert.Equal (boolSrc, boolCopy);
|
|
|
|
+
|
|
|
|
+ // Structs
|
|
|
|
+ var attrDest = new Attribute (Color.Black);
|
|
|
|
+ var attrSrc = new Attribute (Color.White);
|
|
|
|
+ object attrCopy = DeepMemberwiseCopy (attrSrc, attrDest);
|
|
|
|
+ Assert.Equal (attrSrc, attrCopy);
|
|
|
|
+
|
|
|
|
+ // Classes
|
|
|
|
+ var colorschemeDest = new ColorScheme () { Disabled = new Attribute (Color.Black) };
|
|
|
|
+ var colorschemeSrc = new ColorScheme () { Disabled = new Attribute (Color.White) };
|
|
|
|
+ object colorschemeCopy = DeepMemberwiseCopy (colorschemeSrc, colorschemeDest);
|
|
|
|
+ Assert.Equal (colorschemeSrc, colorschemeCopy);
|
|
|
|
+
|
|
|
|
+ // Dictionaries
|
|
|
|
+ var dictDest = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.Black) } };
|
|
|
|
+ var dictSrc = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.White) } };
|
|
|
|
+ var dictCopy = (Dictionary<string, Attribute>)DeepMemberwiseCopy (dictSrc, dictDest);
|
|
|
|
+ Assert.Equal (dictSrc, dictCopy);
|
|
|
|
+
|
|
|
|
+ dictDest = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.Black) } };
|
|
|
|
+ dictSrc = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.White) }, { "Normal", new Attribute (Color.Blue) } };
|
|
|
|
+ dictCopy = (Dictionary<string, Attribute>)DeepMemberwiseCopy (dictSrc, dictDest);
|
|
|
|
+ Assert.Equal (dictSrc, dictCopy);
|
|
|
|
+
|
|
|
|
+ // src adds an item
|
|
|
|
+ dictDest = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.Black) } };
|
|
|
|
+ dictSrc = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.White) }, { "Normal", new Attribute (Color.Blue) } };
|
|
|
|
+ dictCopy = (Dictionary<string, Attribute>)DeepMemberwiseCopy (dictSrc, dictDest);
|
|
|
|
+ Assert.Equal (2, dictCopy.Count);
|
|
|
|
+ Assert.Equal (dictSrc ["Disabled"], dictCopy ["Disabled"]);
|
|
|
|
+ Assert.Equal (dictSrc ["Normal"], dictCopy ["Normal"]);
|
|
|
|
+
|
|
|
|
+ // src updates only one item
|
|
|
|
+ dictDest = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.Black) }, { "Normal", new Attribute (Color.White) } };
|
|
|
|
+ dictSrc = new Dictionary<string, Attribute> () { { "Disabled", new Attribute (Color.White) } };
|
|
|
|
+ dictCopy = (Dictionary<string, Attribute>)DeepMemberwiseCopy (dictSrc, dictDest);
|
|
|
|
+ Assert.Equal (2, dictCopy.Count);
|
|
|
|
+ Assert.Equal (dictSrc ["Disabled"], dictCopy ["Disabled"]);
|
|
|
|
+ Assert.Equal (dictDest ["Normal"], dictCopy ["Normal"]);
|
|
|
|
+ }
|
|
|
|
|
|
- [Fact]
|
|
|
|
- public void Reset_and_ResetLoadWithLibraryResourcesOnly_are_same ()
|
|
|
|
- {
|
|
|
|
- ConfigurationManager.Locations = ConfigLocations.DefaultOnly;
|
|
|
|
- // arrange
|
|
|
|
- ConfigurationManager.Reset ();
|
|
|
|
- ConfigurationManager.Settings ["Application.QuitKey"].PropertyValue = new Key (KeyCode.Q);
|
|
|
|
- ConfigurationManager.Settings ["Application.AlternateForwardKey"].PropertyValue = new Key (KeyCode.F);
|
|
|
|
- ConfigurationManager.Settings ["Application.AlternateBackwardKey"].PropertyValue = new Key (KeyCode.B);
|
|
|
|
- ConfigurationManager.Settings ["Application.IsMouseDisabled"].PropertyValue = true;
|
|
|
|
- ConfigurationManager.Settings.Apply ();
|
|
|
|
-
|
|
|
|
- // assert apply worked
|
|
|
|
- Assert.Equal (KeyCode.Q, Application.QuitKey.KeyCode);
|
|
|
|
- Assert.Equal (KeyCode.F, Application.AlternateForwardKey.KeyCode);
|
|
|
|
- Assert.Equal (KeyCode.B, Application.AlternateBackwardKey.KeyCode);
|
|
|
|
- Assert.True (Application.IsMouseDisabled);
|
|
|
|
|
|
+ //[Fact ()]
|
|
|
|
+ //public void LoadFromJsonTest ()
|
|
|
|
+ //{
|
|
|
|
+ // Assert.True (false, "This test needs an implementation");
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //[Fact ()]
|
|
|
|
+ //public void ToJsonTest ()
|
|
|
|
+ //{
|
|
|
|
+ // Assert.True (false, "This test needs an implementation");
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //[Fact ()]
|
|
|
|
+ //public void UpdateConfigurationTest ()
|
|
|
|
+ //{
|
|
|
|
+ // Assert.True (false, "This test needs an implementation");
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //[Fact ()]
|
|
|
|
+ //public void UpdateConfigurationFromFileTest ()
|
|
|
|
+ //{
|
|
|
|
+ // Assert.True (false, "This test needs an implementation");
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //[Fact ()]
|
|
|
|
+ //public void SaveHardCodedDefaultsTest ()
|
|
|
|
+ //{
|
|
|
|
+ // Assert.True (false, "This test needs an implementation");
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //[Fact ()]
|
|
|
|
+ //public void LoadGlobalFromLibraryResourceTest ()
|
|
|
|
+ //{
|
|
|
|
+ // Assert.True (false, "This test needs an implementation");
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //[Fact ()]
|
|
|
|
+ //public void LoadGlobalFromAppDirectoryTest ()
|
|
|
|
+ //{
|
|
|
|
+ // Assert.True (false, "This test needs an implementation");
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //[Fact ()]
|
|
|
|
+ //public void LoadGlobalFromHomeDirectoryTest ()
|
|
|
|
+ //{
|
|
|
|
+ // Assert.True (false, "This test needs an implementation");
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //[Fact ()]
|
|
|
|
+ //public void LoadAppFromAppResourcesTest ()
|
|
|
|
+ //{
|
|
|
|
+ // Assert.True (false, "This test needs an implementation");
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //[Fact ()]
|
|
|
|
+ //public void LoadAppFromAppDirectoryTest ()
|
|
|
|
+ //{
|
|
|
|
+ // Assert.True (false, "This test needs an implementation");
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //[Fact ()]
|
|
|
|
+ //public void LoadAppFromHomeDirectoryTest ()
|
|
|
|
+ //{
|
|
|
|
+ // Assert.True (false, "This test needs an implementation");
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //[Fact ()]
|
|
|
|
+ //public void LoadTest ()
|
|
|
|
+ //{
|
|
|
|
+ // Assert.True (false, "This test needs an implementation");
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// Save the `config.json` file; this can be used to update the file in `Terminal.Gui.Resources.config.json'.
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <remarks>
|
|
|
|
+ /// IMPORTANT: For the file generated to be valid, this must be the ONLY test run. Config Properties
|
|
|
|
+ /// are all static and thus can be overwritten by other tests.</remarks>
|
|
|
|
+ [Fact]
|
|
|
|
+ public void SaveDefaults ()
|
|
|
|
+ {
|
|
|
|
+ Initialize ();
|
|
|
|
+ Reset ();
|
|
|
|
+
|
|
|
|
+ // Get the hard coded settings
|
|
|
|
+ GetHardCodedDefaults ();
|
|
|
|
+
|
|
|
|
+ // Serialize to a JSON string
|
|
|
|
+ string json = ToJson ();
|
|
|
|
+
|
|
|
|
+ // Write the JSON string to the file
|
|
|
|
+ File.WriteAllText ("config.json", json);
|
|
|
|
+ }
|
|
|
|
|
|
- //act
|
|
|
|
- ConfigurationManager.Reset ();
|
|
|
|
|
|
+ [Fact]
|
|
|
|
+ public void UseWithoutResetAsserts ()
|
|
|
|
+ {
|
|
|
|
+ Initialize ();
|
|
|
|
+ Assert.Throws<InvalidOperationException> (() => _ = Settings);
|
|
|
|
+ }
|
|
|
|
|
|
- // assert
|
|
|
|
- Assert.NotEmpty (ConfigurationManager.Themes);
|
|
|
|
- Assert.Equal ("Default", ConfigurationManager.Themes.Theme);
|
|
|
|
- Assert.Equal (KeyCode.Q | KeyCode.CtrlMask, Application.QuitKey.KeyCode);
|
|
|
|
- Assert.Equal (KeyCode.PageDown | KeyCode.CtrlMask, Application.AlternateForwardKey.KeyCode);
|
|
|
|
- Assert.Equal (KeyCode.PageUp | KeyCode.CtrlMask, Application.AlternateBackwardKey.KeyCode);
|
|
|
|
- Assert.False (Application.IsMouseDisabled);
|
|
|
|
-
|
|
|
|
- // arrange
|
|
|
|
- ConfigurationManager.Settings ["Application.QuitKey"].PropertyValue = new Key (KeyCode.Q);
|
|
|
|
- ConfigurationManager.Settings ["Application.AlternateForwardKey"].PropertyValue = new Key (KeyCode.F);
|
|
|
|
- ConfigurationManager.Settings ["Application.AlternateBackwardKey"].PropertyValue = new Key (KeyCode.B);
|
|
|
|
- ConfigurationManager.Settings ["Application.IsMouseDisabled"].PropertyValue = true;
|
|
|
|
- ConfigurationManager.Settings.Apply ();
|
|
|
|
-
|
|
|
|
- ConfigurationManager.Locations = ConfigLocations.DefaultOnly;
|
|
|
|
-
|
|
|
|
- // act
|
|
|
|
- ConfigurationManager.Reset ();
|
|
|
|
- ConfigurationManager.Load ();
|
|
|
|
|
|
+ [Fact]
|
|
|
|
+ public void Reset_Resets ()
|
|
|
|
+ {
|
|
|
|
+ Locations = ConfigLocations.DefaultOnly;
|
|
|
|
+ Reset ();
|
|
|
|
+ Assert.NotEmpty (Themes);
|
|
|
|
+ Assert.Equal ("Default", Themes.Theme);
|
|
|
|
+ }
|
|
|
|
|
|
- // assert
|
|
|
|
- Assert.NotEmpty (ConfigurationManager.Themes);
|
|
|
|
- Assert.Equal ("Default", ConfigurationManager.Themes.Theme);
|
|
|
|
- Assert.Equal (KeyCode.Q | KeyCode.CtrlMask, Application.QuitKey.KeyCode);
|
|
|
|
- Assert.Equal (KeyCode.PageDown | KeyCode.CtrlMask, Application.AlternateForwardKey.KeyCode);
|
|
|
|
- Assert.Equal (KeyCode.PageUp | KeyCode.CtrlMask, Application.AlternateBackwardKey.KeyCode);
|
|
|
|
- Assert.False (Application.IsMouseDisabled);
|
|
|
|
|
|
+ [Fact]
|
|
|
|
+ public void Reset_and_ResetLoadWithLibraryResourcesOnly_are_same ()
|
|
|
|
+ {
|
|
|
|
+ Locations = ConfigLocations.DefaultOnly;
|
|
|
|
+ // arrange
|
|
|
|
+ Reset ();
|
|
|
|
+ Settings ["Application.QuitKey"].PropertyValue = new Key (KeyCode.Q);
|
|
|
|
+ Settings ["Application.AlternateForwardKey"].PropertyValue = new Key (KeyCode.F);
|
|
|
|
+ Settings ["Application.AlternateBackwardKey"].PropertyValue = new Key (KeyCode.B);
|
|
|
|
+ Settings ["Application.IsMouseDisabled"].PropertyValue = true;
|
|
|
|
+ Settings.Apply ();
|
|
|
|
+
|
|
|
|
+ // assert apply worked
|
|
|
|
+ Assert.Equal (KeyCode.Q, Application.QuitKey.KeyCode);
|
|
|
|
+ Assert.Equal (KeyCode.F, Application.AlternateForwardKey.KeyCode);
|
|
|
|
+ Assert.Equal (KeyCode.B, Application.AlternateBackwardKey.KeyCode);
|
|
|
|
+ Assert.True (Application.IsMouseDisabled);
|
|
|
|
+
|
|
|
|
+ //act
|
|
|
|
+ Reset ();
|
|
|
|
+
|
|
|
|
+ // assert
|
|
|
|
+ Assert.NotEmpty (Themes);
|
|
|
|
+ Assert.Equal ("Default", Themes.Theme);
|
|
|
|
+ Assert.Equal (KeyCode.Q | KeyCode.CtrlMask, Application.QuitKey.KeyCode);
|
|
|
|
+ Assert.Equal (KeyCode.PageDown | KeyCode.CtrlMask, Application.AlternateForwardKey.KeyCode);
|
|
|
|
+ Assert.Equal (KeyCode.PageUp | KeyCode.CtrlMask, Application.AlternateBackwardKey.KeyCode);
|
|
|
|
+ Assert.False (Application.IsMouseDisabled);
|
|
|
|
+
|
|
|
|
+ // arrange
|
|
|
|
+ Settings ["Application.QuitKey"].PropertyValue = new Key (KeyCode.Q);
|
|
|
|
+ Settings ["Application.AlternateForwardKey"].PropertyValue = new Key (KeyCode.F);
|
|
|
|
+ Settings ["Application.AlternateBackwardKey"].PropertyValue = new Key (KeyCode.B);
|
|
|
|
+ Settings ["Application.IsMouseDisabled"].PropertyValue = true;
|
|
|
|
+ Settings.Apply ();
|
|
|
|
+
|
|
|
|
+ Locations = ConfigLocations.DefaultOnly;
|
|
|
|
+
|
|
|
|
+ // act
|
|
|
|
+ Reset ();
|
|
|
|
+ Load ();
|
|
|
|
+
|
|
|
|
+ // assert
|
|
|
|
+ Assert.NotEmpty (Themes);
|
|
|
|
+ Assert.Equal ("Default", Themes.Theme);
|
|
|
|
+ Assert.Equal (KeyCode.Q | KeyCode.CtrlMask, Application.QuitKey.KeyCode);
|
|
|
|
+ Assert.Equal (KeyCode.PageDown | KeyCode.CtrlMask, Application.AlternateForwardKey.KeyCode);
|
|
|
|
+ Assert.Equal (KeyCode.PageUp | KeyCode.CtrlMask, Application.AlternateBackwardKey.KeyCode);
|
|
|
|
+ Assert.False (Application.IsMouseDisabled);
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- [Fact]
|
|
|
|
- public void TestConfigProperties ()
|
|
|
|
- {
|
|
|
|
- ConfigurationManager.Locations = ConfigLocations.All;
|
|
|
|
- ConfigurationManager.Reset ();
|
|
|
|
-
|
|
|
|
- Assert.NotEmpty (ConfigurationManager.Settings);
|
|
|
|
- // test that all ConfigProperites have our attribute
|
|
|
|
- Assert.All (ConfigurationManager.Settings, item => Assert.NotEmpty (item.Value.PropertyInfo.CustomAttributes.Where (a => a.AttributeType == typeof (SerializableConfigurationProperty))));
|
|
|
|
- Assert.Empty (ConfigurationManager.Settings.Where (cp => cp.Value.PropertyInfo.GetCustomAttribute (typeof (SerializableConfigurationProperty)) == null));
|
|
|
|
-
|
|
|
|
- // Application is a static class
|
|
|
|
- PropertyInfo pi = typeof (Application).GetProperty ("QuitKey");
|
|
|
|
- Assert.Equal (pi, ConfigurationManager.Settings ["Application.QuitKey"].PropertyInfo);
|
|
|
|
-
|
|
|
|
- // FrameView is not a static class and DefaultBorderStyle is Scope.Scheme
|
|
|
|
- pi = typeof (FrameView).GetProperty ("DefaultBorderStyle");
|
|
|
|
- Assert.False (ConfigurationManager.Settings.ContainsKey ("FrameView.DefaultBorderStyle"));
|
|
|
|
- Assert.True (ConfigurationManager.Themes ["Default"].ContainsKey ("FrameView.DefaultBorderStyle"));
|
|
|
|
- }
|
|
|
|
|
|
+ [Fact]
|
|
|
|
+ public void TestConfigProperties ()
|
|
|
|
+ {
|
|
|
|
+ Locations = ConfigLocations.All;
|
|
|
|
+ Reset ();
|
|
|
|
+
|
|
|
|
+ Assert.NotEmpty (Settings);
|
|
|
|
+ // test that all ConfigProperites have our attribute
|
|
|
|
+ Assert.All (Settings, item => Assert.NotEmpty (item.Value.PropertyInfo.CustomAttributes.Where (a => a.AttributeType == typeof (SerializableConfigurationProperty))));
|
|
|
|
+ Assert.Empty (Settings.Where (cp => cp.Value.PropertyInfo.GetCustomAttribute (typeof (SerializableConfigurationProperty)) == null));
|
|
|
|
+
|
|
|
|
+ // Application is a static class
|
|
|
|
+ var pi = typeof (Application).GetProperty ("QuitKey");
|
|
|
|
+ Assert.Equal (pi, Settings ["Application.QuitKey"].PropertyInfo);
|
|
|
|
+
|
|
|
|
+ // FrameView is not a static class and DefaultBorderStyle is Scope.Scheme
|
|
|
|
+ pi = typeof (FrameView).GetProperty ("DefaultBorderStyle");
|
|
|
|
+ Assert.False (Settings.ContainsKey ("FrameView.DefaultBorderStyle"));
|
|
|
|
+ Assert.True (Themes ["Default"].ContainsKey ("FrameView.DefaultBorderStyle"));
|
|
|
|
+ }
|
|
|
|
|
|
- [Fact]
|
|
|
|
- public void TestConfigPropertyOmitClassName ()
|
|
|
|
- {
|
|
|
|
- // Color.ColorShemes is serialzied as "ColorSchemes", not "Colors.ColorSchemes"
|
|
|
|
- PropertyInfo pi = typeof (Colors).GetProperty ("ColorSchemes");
|
|
|
|
- var scp = ((SerializableConfigurationProperty)pi.GetCustomAttribute (typeof (SerializableConfigurationProperty)));
|
|
|
|
- Assert.True (scp.Scope == typeof (ThemeScope));
|
|
|
|
- Assert.True (scp.OmitClassName);
|
|
|
|
-
|
|
|
|
- ConfigurationManager.Reset ();
|
|
|
|
- Assert.Equal (pi, ConfigurationManager.Themes ["Default"] ["ColorSchemes"].PropertyInfo);
|
|
|
|
- }
|
|
|
|
|
|
+ [Fact]
|
|
|
|
+ public void TestConfigPropertyOmitClassName ()
|
|
|
|
+ {
|
|
|
|
+ // Color.ColorShemes is serialzied as "ColorSchemes", not "Colors.ColorSchemes"
|
|
|
|
+ var pi = typeof (Colors).GetProperty ("ColorSchemes");
|
|
|
|
+ var scp = (SerializableConfigurationProperty)pi.GetCustomAttribute (typeof (SerializableConfigurationProperty));
|
|
|
|
+ Assert.True (scp.Scope == typeof (ThemeScope));
|
|
|
|
+ Assert.True (scp.OmitClassName);
|
|
|
|
+
|
|
|
|
+ Reset ();
|
|
|
|
+ Assert.Equal (pi, Themes ["Default"] ["ColorSchemes"].PropertyInfo);
|
|
|
|
+ }
|
|
|
|
|
|
- [Fact, AutoInitShutdown]
|
|
|
|
- public void TestConfigurationManagerToJson ()
|
|
|
|
- {
|
|
|
|
- ConfigurationManager.Reset ();
|
|
|
|
- ConfigurationManager.GetHardCodedDefaults ();
|
|
|
|
- var stream = ConfigurationManager.ToStream ();
|
|
|
|
|
|
+ [Fact] [AutoInitShutdown]
|
|
|
|
+ public void TestConfigurationManagerToJson ()
|
|
|
|
+ {
|
|
|
|
+ Reset ();
|
|
|
|
+ GetHardCodedDefaults ();
|
|
|
|
+ var stream = ToStream ();
|
|
|
|
|
|
- ConfigurationManager.Settings.Update (stream, "TestConfigurationManagerToJson");
|
|
|
|
- }
|
|
|
|
|
|
+ Settings.Update (stream, "TestConfigurationManagerToJson");
|
|
|
|
+ }
|
|
|
|
|
|
- [Fact, AutoInitShutdown (configLocation: ConfigLocations.None)]
|
|
|
|
- public void TestConfigurationManagerInitDriver_NoLocations ()
|
|
|
|
- {
|
|
|
|
|
|
+ [Fact] [AutoInitShutdown (configLocation: ConfigLocations.None)]
|
|
|
|
+ public void TestConfigurationManagerInitDriver_NoLocations ()
|
|
|
|
+ {
|
|
|
|
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- [Fact, AutoInitShutdown (configLocation: ConfigLocations.DefaultOnly)]
|
|
|
|
- public void TestConfigurationManagerInitDriver ()
|
|
|
|
- {
|
|
|
|
- Assert.Equal ("Default", ConfigurationManager.Themes.Theme);
|
|
|
|
- Assert.True (ConfigurationManager.Themes.ContainsKey ("Default"));
|
|
|
|
|
|
+ [Fact] [AutoInitShutdown (configLocation: ConfigLocations.DefaultOnly)]
|
|
|
|
+ public void TestConfigurationManagerInitDriver ()
|
|
|
|
+ {
|
|
|
|
+ Assert.Equal ("Default", Themes.Theme);
|
|
|
|
+ Assert.True (Themes.ContainsKey ("Default"));
|
|
|
|
|
|
- Assert.Equal (KeyCode.Q | KeyCode.CtrlMask, Application.QuitKey.KeyCode);
|
|
|
|
|
|
+ Assert.Equal (KeyCode.Q | KeyCode.CtrlMask, Application.QuitKey.KeyCode);
|
|
|
|
|
|
- Assert.Equal (new Color (Color.White), Colors.ColorSchemes ["Base"].Normal.Foreground);
|
|
|
|
- Assert.Equal (new Color (Color.Blue), Colors.ColorSchemes ["Base"].Normal.Background);
|
|
|
|
|
|
+ Assert.Equal (new Color (Color.White), Colors.ColorSchemes ["Base"].Normal.Foreground);
|
|
|
|
+ Assert.Equal (new Color (Color.Blue), Colors.ColorSchemes ["Base"].Normal.Background);
|
|
|
|
|
|
- // Change Base
|
|
|
|
- var json = ConfigurationManager.ToStream ();
|
|
|
|
|
|
+ // Change Base
|
|
|
|
+ var json = ToStream ();
|
|
|
|
|
|
- ConfigurationManager.Settings.Update (json, "TestConfigurationManagerInitDriver");
|
|
|
|
|
|
+ Settings.Update (json, "TestConfigurationManagerInitDriver");
|
|
|
|
|
|
- var colorSchemes = ((Dictionary<string, ColorScheme>)ConfigurationManager.Themes [ConfigurationManager.Themes.Theme] ["ColorSchemes"].PropertyValue);
|
|
|
|
- Assert.Equal (Colors.Base, colorSchemes ["Base"]);
|
|
|
|
- Assert.Equal (Colors.TopLevel, colorSchemes ["TopLevel"]);
|
|
|
|
- Assert.Equal (Colors.Error, colorSchemes ["Error"]);
|
|
|
|
- Assert.Equal (Colors.Dialog, colorSchemes ["Dialog"]);
|
|
|
|
- Assert.Equal (Colors.Menu, colorSchemes ["Menu"]);
|
|
|
|
|
|
+ var colorSchemes = (Dictionary<string, ColorScheme>)Themes [Themes.Theme] ["ColorSchemes"].PropertyValue;
|
|
|
|
+ Assert.Equal (Colors.Base, colorSchemes ["Base"]);
|
|
|
|
+ Assert.Equal (Colors.TopLevel, colorSchemes ["TopLevel"]);
|
|
|
|
+ Assert.Equal (Colors.Error, colorSchemes ["Error"]);
|
|
|
|
+ Assert.Equal (Colors.Dialog, colorSchemes ["Dialog"]);
|
|
|
|
+ Assert.Equal (Colors.Menu, colorSchemes ["Menu"]);
|
|
|
|
|
|
- Colors.Base = colorSchemes ["Base"];
|
|
|
|
- Colors.TopLevel = colorSchemes ["TopLevel"];
|
|
|
|
- Colors.Error = colorSchemes ["Error"];
|
|
|
|
- Colors.Dialog = colorSchemes ["Dialog"];
|
|
|
|
- Colors.Menu = colorSchemes ["Menu"];
|
|
|
|
|
|
+ Colors.Base = colorSchemes ["Base"];
|
|
|
|
+ Colors.TopLevel = colorSchemes ["TopLevel"];
|
|
|
|
+ Colors.Error = colorSchemes ["Error"];
|
|
|
|
+ Colors.Dialog = colorSchemes ["Dialog"];
|
|
|
|
+ Colors.Menu = colorSchemes ["Menu"];
|
|
|
|
|
|
- Assert.Equal (colorSchemes ["Base"], Colors.Base);
|
|
|
|
- Assert.Equal (colorSchemes ["TopLevel"], Colors.TopLevel);
|
|
|
|
- Assert.Equal (colorSchemes ["Error"], Colors.Error);
|
|
|
|
- Assert.Equal (colorSchemes ["Dialog"], Colors.Dialog);
|
|
|
|
- Assert.Equal (colorSchemes ["Menu"], Colors.Menu);
|
|
|
|
- }
|
|
|
|
|
|
+ Assert.Equal (colorSchemes ["Base"], Colors.Base);
|
|
|
|
+ Assert.Equal (colorSchemes ["TopLevel"], Colors.TopLevel);
|
|
|
|
+ Assert.Equal (colorSchemes ["Error"], Colors.Error);
|
|
|
|
+ Assert.Equal (colorSchemes ["Dialog"], Colors.Dialog);
|
|
|
|
+ Assert.Equal (colorSchemes ["Menu"], Colors.Menu);
|
|
|
|
+ }
|
|
|
|
|
|
- [Fact]
|
|
|
|
- public void TestConfigurationManagerUpdateFromJson ()
|
|
|
|
- {
|
|
|
|
- // Arrange
|
|
|
|
- string json = @"
|
|
|
|
|
|
+ [Fact]
|
|
|
|
+ public void TestConfigurationManagerUpdateFromJson ()
|
|
|
|
+ {
|
|
|
|
+ // Arrange
|
|
|
|
+ string json = @"
|
|
{
|
|
{
|
|
""$schema"": ""https://gui-cs.github.io/Terminal.Gui/schemas/tui-config-schema.json"",
|
|
""$schema"": ""https://gui-cs.github.io/Terminal.Gui/schemas/tui-config-schema.json"",
|
|
- ""Application.QuitKey"": {
|
|
|
|
- ""Key"": ""Alt-Z""
|
|
|
|
- },
|
|
|
|
|
|
+ ""Application.QuitKey"": ""Alt-Z"",
|
|
""Theme"": ""Default"",
|
|
""Theme"": ""Default"",
|
|
""Themes"": [
|
|
""Themes"": [
|
|
{
|
|
{
|
|
@@ -493,39 +491,39 @@ namespace Terminal.Gui.ConfigurationTests {
|
|
}
|
|
}
|
|
";
|
|
";
|
|
|
|
|
|
- ConfigurationManager.Reset ();
|
|
|
|
- ConfigurationManager.ThrowOnJsonErrors = true;
|
|
|
|
|
|
+ Reset ();
|
|
|
|
+ ThrowOnJsonErrors = true;
|
|
|
|
|
|
- ConfigurationManager.Settings.Update (json, "TestConfigurationManagerUpdateFromJson");
|
|
|
|
-
|
|
|
|
- Assert.Equal (KeyCode.Q | KeyCode.CtrlMask, Application.QuitKey.KeyCode);
|
|
|
|
- Assert.Equal (KeyCode.Z | KeyCode.AltMask, ((Key)ConfigurationManager.Settings ["Application.QuitKey"].PropertyValue).KeyCode);
|
|
|
|
|
|
+ Settings.Update (json, "TestConfigurationManagerUpdateFromJson");
|
|
|
|
|
|
- Assert.Equal ("Default", ConfigurationManager.Themes.Theme);
|
|
|
|
|
|
+ Assert.Equal (KeyCode.Q | KeyCode.CtrlMask, Application.QuitKey.KeyCode);
|
|
|
|
+ Assert.Equal (KeyCode.Z | KeyCode.AltMask, ((Key)Settings ["Application.QuitKey"].PropertyValue).KeyCode);
|
|
|
|
|
|
- Assert.Equal (new Color (Color.White), Colors.ColorSchemes ["Base"].Normal.Foreground);
|
|
|
|
- Assert.Equal (new Color (Color.Blue), Colors.ColorSchemes ["Base"].Normal.Background);
|
|
|
|
|
|
+ Assert.Equal ("Default", Themes.Theme);
|
|
|
|
|
|
- var colorSchemes = (Dictionary<string, ColorScheme>)Themes.First ().Value ["ColorSchemes"].PropertyValue;
|
|
|
|
- Assert.Equal (new Color (Color.White), colorSchemes ["Base"].Normal.Foreground);
|
|
|
|
- Assert.Equal (new Color (Color.Blue), colorSchemes ["Base"].Normal.Background);
|
|
|
|
|
|
+ Assert.Equal (new Color (Color.White), Colors.ColorSchemes ["Base"].Normal.Foreground);
|
|
|
|
+ Assert.Equal (new Color (Color.Blue), Colors.ColorSchemes ["Base"].Normal.Background);
|
|
|
|
|
|
- // Now re-apply
|
|
|
|
- ConfigurationManager.Apply ();
|
|
|
|
|
|
+ var colorSchemes = (Dictionary<string, ColorScheme>)Themes.First ().Value ["ColorSchemes"].PropertyValue;
|
|
|
|
+ Assert.Equal (new Color (Color.White), colorSchemes ["Base"].Normal.Foreground);
|
|
|
|
+ Assert.Equal (new Color (Color.Blue), colorSchemes ["Base"].Normal.Background);
|
|
|
|
|
|
- Assert.Equal (KeyCode.Z | KeyCode.AltMask, Application.QuitKey.KeyCode);
|
|
|
|
- Assert.Equal ("Default", ConfigurationManager.Themes.Theme);
|
|
|
|
|
|
+ // Now re-apply
|
|
|
|
+ Apply ();
|
|
|
|
|
|
- Assert.Equal (new Color (Color.White), Colors.ColorSchemes ["Base"].Normal.Foreground);
|
|
|
|
- Assert.Equal (new Color (Color.Blue), Colors.ColorSchemes ["Base"].Normal.Background);
|
|
|
|
- }
|
|
|
|
|
|
+ Assert.Equal (KeyCode.Z | KeyCode.AltMask, Application.QuitKey.KeyCode);
|
|
|
|
+ Assert.Equal ("Default", Themes.Theme);
|
|
|
|
|
|
- [Fact, AutoInitShutdown]
|
|
|
|
- public void TestConfigurationManagerInvalidJsonThrows ()
|
|
|
|
- {
|
|
|
|
- ConfigurationManager.ThrowOnJsonErrors = true;
|
|
|
|
- // "yellow" is not a color
|
|
|
|
- string json = @"
|
|
|
|
|
|
+ Assert.Equal (new Color (Color.White), Colors.ColorSchemes ["Base"].Normal.Foreground);
|
|
|
|
+ Assert.Equal (new Color (Color.Blue), Colors.ColorSchemes ["Base"].Normal.Background);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [Fact] [AutoInitShutdown]
|
|
|
|
+ public void TestConfigurationManagerInvalidJsonThrows ()
|
|
|
|
+ {
|
|
|
|
+ ThrowOnJsonErrors = true;
|
|
|
|
+ // "yellow" is not a color
|
|
|
|
+ string json = @"
|
|
{
|
|
{
|
|
""Themes"" : [
|
|
""Themes"" : [
|
|
{
|
|
{
|
|
@@ -545,11 +543,11 @@ namespace Terminal.Gui.ConfigurationTests {
|
|
]
|
|
]
|
|
}";
|
|
}";
|
|
|
|
|
|
- JsonException jsonException = Assert.Throws<JsonException> (() => ConfigurationManager.Settings.Update (json, "test"));
|
|
|
|
- Assert.Equal ("Unexpected color name: brown.", jsonException.Message);
|
|
|
|
|
|
+ var jsonException = Assert.Throws<JsonException> (() => Settings.Update (json, "test"));
|
|
|
|
+ Assert.Equal ("Unexpected color name: brown.", jsonException.Message);
|
|
|
|
|
|
- // AbNormal is not a ColorScheme attribute
|
|
|
|
- json = @"
|
|
|
|
|
|
+ // AbNormal is not a ColorScheme attribute
|
|
|
|
+ json = @"
|
|
{
|
|
{
|
|
""Themes"" : [
|
|
""Themes"" : [
|
|
{
|
|
{
|
|
@@ -569,11 +567,11 @@ namespace Terminal.Gui.ConfigurationTests {
|
|
]
|
|
]
|
|
}";
|
|
}";
|
|
|
|
|
|
- jsonException = Assert.Throws<JsonException> (() => ConfigurationManager.Settings.Update (json, "test"));
|
|
|
|
- Assert.Equal ("Unrecognized ColorScheme Attribute name: AbNormal.", jsonException.Message);
|
|
|
|
|
|
+ jsonException = Assert.Throws<JsonException> (() => Settings.Update (json, "test"));
|
|
|
|
+ Assert.Equal ("Unrecognized ColorScheme Attribute name: AbNormal.", jsonException.Message);
|
|
|
|
|
|
- // Modify hotNormal background only
|
|
|
|
- json = @"
|
|
|
|
|
|
+ // Modify hotNormal background only
|
|
|
|
+ json = @"
|
|
{
|
|
{
|
|
""Themes"" : [
|
|
""Themes"" : [
|
|
{
|
|
{
|
|
@@ -592,31 +590,31 @@ namespace Terminal.Gui.ConfigurationTests {
|
|
]
|
|
]
|
|
}";
|
|
}";
|
|
|
|
|
|
- jsonException = Assert.Throws<JsonException> (() => ConfigurationManager.Settings.Update (json, "test"));
|
|
|
|
- Assert.Equal ("Both Foreground and Background colors must be provided.", jsonException.Message);
|
|
|
|
|
|
+ jsonException = Assert.Throws<JsonException> (() => Settings.Update (json, "test"));
|
|
|
|
+ Assert.Equal ("Both Foreground and Background colors must be provided.", jsonException.Message);
|
|
|
|
|
|
- // Unknown proeprty
|
|
|
|
- json = @"
|
|
|
|
|
|
+ // Unknown proeprty
|
|
|
|
+ json = @"
|
|
{
|
|
{
|
|
""Unknown"" : ""Not known""
|
|
""Unknown"" : ""Not known""
|
|
}";
|
|
}";
|
|
|
|
|
|
- jsonException = Assert.Throws<JsonException> (() => ConfigurationManager.Settings.Update (json, "test"));
|
|
|
|
- Assert.StartsWith ("Unknown property", jsonException.Message);
|
|
|
|
|
|
+ jsonException = Assert.Throws<JsonException> (() => Settings.Update (json, "test"));
|
|
|
|
+ Assert.StartsWith ("Unknown property", jsonException.Message);
|
|
|
|
|
|
- Assert.Equal (0, ConfigurationManager.jsonErrors.Length);
|
|
|
|
|
|
+ Assert.Equal (0, jsonErrors.Length);
|
|
|
|
|
|
- ConfigurationManager.ThrowOnJsonErrors = false;
|
|
|
|
- }
|
|
|
|
|
|
+ ThrowOnJsonErrors = false;
|
|
|
|
+ }
|
|
|
|
|
|
- [Fact]
|
|
|
|
- public void TestConfigurationManagerInvalidJsonLogs ()
|
|
|
|
- {
|
|
|
|
- Application.Init (new FakeDriver ());
|
|
|
|
|
|
+ [Fact]
|
|
|
|
+ public void TestConfigurationManagerInvalidJsonLogs ()
|
|
|
|
+ {
|
|
|
|
+ Application.Init (new FakeDriver ());
|
|
|
|
|
|
- ConfigurationManager.ThrowOnJsonErrors = false;
|
|
|
|
- // "brown" is not a color
|
|
|
|
- string json = @"
|
|
|
|
|
|
+ ThrowOnJsonErrors = false;
|
|
|
|
+ // "brown" is not a color
|
|
|
|
+ string json = @"
|
|
{
|
|
{
|
|
""Themes"" : [
|
|
""Themes"" : [
|
|
{
|
|
{
|
|
@@ -636,10 +634,10 @@ namespace Terminal.Gui.ConfigurationTests {
|
|
}
|
|
}
|
|
}";
|
|
}";
|
|
|
|
|
|
- ConfigurationManager.Settings.Update (json, "test");
|
|
|
|
|
|
+ Settings.Update (json, "test");
|
|
|
|
|
|
- // AbNormal is not a ColorScheme attribute
|
|
|
|
- json = @"
|
|
|
|
|
|
+ // AbNormal is not a ColorScheme attribute
|
|
|
|
+ json = @"
|
|
{
|
|
{
|
|
""Themes"" : [
|
|
""Themes"" : [
|
|
{
|
|
{
|
|
@@ -659,10 +657,10 @@ namespace Terminal.Gui.ConfigurationTests {
|
|
}
|
|
}
|
|
}";
|
|
}";
|
|
|
|
|
|
- ConfigurationManager.Settings.Update (json, "test");
|
|
|
|
|
|
+ Settings.Update (json, "test");
|
|
|
|
|
|
- // Modify hotNormal background only
|
|
|
|
- json = @"
|
|
|
|
|
|
+ // Modify hotNormal background only
|
|
|
|
+ json = @"
|
|
{
|
|
{
|
|
""Themes"" : [
|
|
""Themes"" : [
|
|
{
|
|
{
|
|
@@ -681,111 +679,109 @@ namespace Terminal.Gui.ConfigurationTests {
|
|
}
|
|
}
|
|
}";
|
|
}";
|
|
|
|
|
|
- ConfigurationManager.Settings.Update (json, "test");
|
|
|
|
|
|
+ Settings.Update (json, "test");
|
|
|
|
|
|
- ConfigurationManager.Settings.Update ("{}}", "test");
|
|
|
|
|
|
+ Settings.Update ("{}}", "test");
|
|
|
|
|
|
- Assert.NotEqual (0, ConfigurationManager.jsonErrors.Length);
|
|
|
|
|
|
+ Assert.NotEqual (0, jsonErrors.Length);
|
|
|
|
|
|
- Application.Shutdown ();
|
|
|
|
|
|
+ Application.Shutdown ();
|
|
|
|
|
|
- ConfigurationManager.ThrowOnJsonErrors = false;
|
|
|
|
- }
|
|
|
|
|
|
+ ThrowOnJsonErrors = false;
|
|
|
|
+ }
|
|
|
|
|
|
- [Fact, AutoInitShutdown]
|
|
|
|
- public void LoadConfigurationFromAllSources_ShouldLoadSettingsFromAllSources ()
|
|
|
|
- {
|
|
|
|
- //var _configFilename = "config.json";
|
|
|
|
- //// Arrange
|
|
|
|
- //// Create a mock of the configuration files in all sources
|
|
|
|
- //// Home directory
|
|
|
|
- //string homeDir = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.UserProfile), ".tui");
|
|
|
|
- //if (!Directory.Exists (homeDir)) {
|
|
|
|
- // Directory.CreateDirectory (homeDir);
|
|
|
|
- //}
|
|
|
|
- //string globalConfigFile = Path.Combine (homeDir, _configFilename);
|
|
|
|
- //string appSpecificConfigFile = Path.Combine (homeDir, "appname.config.json");
|
|
|
|
- //File.WriteAllText (globalConfigFile, "{\"Settings\": {\"TestSetting\":\"Global\"}}");
|
|
|
|
- //File.WriteAllText (appSpecificConfigFile, "{\"Settings\": {\"TestSetting\":\"AppSpecific\"}}");
|
|
|
|
-
|
|
|
|
- //// App directory
|
|
|
|
- //string appDir = Directory.GetCurrentDirectory ();
|
|
|
|
- //string appDirGlobalConfigFile = Path.Combine (appDir, _configFilename);
|
|
|
|
- //string appDirAppSpecificConfigFile = Path.Combine (appDir, "appname.config.json");
|
|
|
|
- //File.WriteAllText (appDirGlobalConfigFile, "{\"Settings\": {\"TestSetting\":\"GlobalAppDir\"}}");
|
|
|
|
- //File.WriteAllText (appDirAppSpecificConfigFile, "{\"Settings\": {\"TestSetting\":\"AppSpecificAppDir\"}}");
|
|
|
|
-
|
|
|
|
- //// App resources
|
|
|
|
- //// ...
|
|
|
|
-
|
|
|
|
- //// Act
|
|
|
|
- //ConfigurationManager.Locations = ConfigurationManager.ConfigLocation.All;
|
|
|
|
- //ConfigurationManager.Load ();
|
|
|
|
-
|
|
|
|
- //// Assert
|
|
|
|
- //// Check that the settings from the highest precedence source are loaded
|
|
|
|
- //Assert.Equal ("AppSpecific", ConfigurationManager.Config.Settings.TestSetting);
|
|
|
|
- }
|
|
|
|
|
|
+ [Fact] [AutoInitShutdown]
|
|
|
|
+ public void LoadConfigurationFromAllSources_ShouldLoadSettingsFromAllSources ()
|
|
|
|
+ {
|
|
|
|
+ //var _configFilename = "config.json";
|
|
|
|
+ //// Arrange
|
|
|
|
+ //// Create a mock of the configuration files in all sources
|
|
|
|
+ //// Home directory
|
|
|
|
+ //string homeDir = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.UserProfile), ".tui");
|
|
|
|
+ //if (!Directory.Exists (homeDir)) {
|
|
|
|
+ // Directory.CreateDirectory (homeDir);
|
|
|
|
+ //}
|
|
|
|
+ //string globalConfigFile = Path.Combine (homeDir, _configFilename);
|
|
|
|
+ //string appSpecificConfigFile = Path.Combine (homeDir, "appname.config.json");
|
|
|
|
+ //File.WriteAllText (globalConfigFile, "{\"Settings\": {\"TestSetting\":\"Global\"}}");
|
|
|
|
+ //File.WriteAllText (appSpecificConfigFile, "{\"Settings\": {\"TestSetting\":\"AppSpecific\"}}");
|
|
|
|
+
|
|
|
|
+ //// App directory
|
|
|
|
+ //string appDir = Directory.GetCurrentDirectory ();
|
|
|
|
+ //string appDirGlobalConfigFile = Path.Combine (appDir, _configFilename);
|
|
|
|
+ //string appDirAppSpecificConfigFile = Path.Combine (appDir, "appname.config.json");
|
|
|
|
+ //File.WriteAllText (appDirGlobalConfigFile, "{\"Settings\": {\"TestSetting\":\"GlobalAppDir\"}}");
|
|
|
|
+ //File.WriteAllText (appDirAppSpecificConfigFile, "{\"Settings\": {\"TestSetting\":\"AppSpecificAppDir\"}}");
|
|
|
|
+
|
|
|
|
+ //// App resources
|
|
|
|
+ //// ...
|
|
|
|
+
|
|
|
|
+ //// Act
|
|
|
|
+ //ConfigurationManager.Locations = ConfigurationManager.ConfigLocation.All;
|
|
|
|
+ //ConfigurationManager.Load ();
|
|
|
|
+
|
|
|
|
+ //// Assert
|
|
|
|
+ //// Check that the settings from the highest precedence source are loaded
|
|
|
|
+ //Assert.Equal ("AppSpecific", ConfigurationManager.Config.Settings.TestSetting);
|
|
|
|
+ }
|
|
|
|
|
|
- [Fact]
|
|
|
|
- public void Load_FiresUpdated ()
|
|
|
|
|
|
+ [Fact]
|
|
|
|
+ public void Load_FiresUpdated ()
|
|
|
|
+ {
|
|
|
|
+ Reset ();
|
|
|
|
+
|
|
|
|
+ Settings ["Application.QuitKey"].PropertyValue = new Key (KeyCode.Q);
|
|
|
|
+ Settings ["Application.AlternateForwardKey"].PropertyValue = new Key (KeyCode.F);
|
|
|
|
+ Settings ["Application.AlternateBackwardKey"].PropertyValue = new Key (KeyCode.B);
|
|
|
|
+ Settings ["Application.IsMouseDisabled"].PropertyValue = true;
|
|
|
|
+
|
|
|
|
+ Updated += ConfigurationManager_Updated;
|
|
|
|
+ bool fired = false;
|
|
|
|
+ void ConfigurationManager_Updated (object sender, ConfigurationManagerEventArgs obj)
|
|
{
|
|
{
|
|
- ConfigurationManager.Reset ();
|
|
|
|
|
|
+ fired = true;
|
|
|
|
+ // assert
|
|
|
|
+ Assert.Equal (KeyCode.Q | KeyCode.CtrlMask, ((Key)Settings ["Application.QuitKey"].PropertyValue).KeyCode);
|
|
|
|
+ Assert.Equal (KeyCode.PageDown | KeyCode.CtrlMask, ((Key)Settings ["Application.AlternateForwardKey"].PropertyValue).KeyCode);
|
|
|
|
+ Assert.Equal (KeyCode.PageUp | KeyCode.CtrlMask, ((Key)Settings ["Application.AlternateBackwardKey"].PropertyValue).KeyCode);
|
|
|
|
+ Assert.False ((bool)Settings ["Application.IsMouseDisabled"].PropertyValue);
|
|
|
|
+ }
|
|
|
|
|
|
- ConfigurationManager.Settings ["Application.QuitKey"].PropertyValue = new Key (KeyCode.Q);
|
|
|
|
- ConfigurationManager.Settings ["Application.AlternateForwardKey"].PropertyValue = new Key (KeyCode.F);
|
|
|
|
- ConfigurationManager.Settings ["Application.AlternateBackwardKey"].PropertyValue = new Key (KeyCode.B);
|
|
|
|
- ConfigurationManager.Settings ["Application.IsMouseDisabled"].PropertyValue = true;
|
|
|
|
|
|
+ Load (true);
|
|
|
|
|
|
- ConfigurationManager.Updated += ConfigurationManager_Updated;
|
|
|
|
- bool fired = false;
|
|
|
|
- void ConfigurationManager_Updated (object sender, ConfigurationManagerEventArgs obj)
|
|
|
|
- {
|
|
|
|
- fired = true;
|
|
|
|
- // assert
|
|
|
|
- Assert.Equal (KeyCode.Q | KeyCode.CtrlMask, ((Key)ConfigurationManager.Settings ["Application.QuitKey"].PropertyValue).KeyCode);
|
|
|
|
- Assert.Equal (KeyCode.PageDown | KeyCode.CtrlMask, ((Key)ConfigurationManager.Settings ["Application.AlternateForwardKey"].PropertyValue).KeyCode);
|
|
|
|
- Assert.Equal (KeyCode.PageUp | KeyCode.CtrlMask, ((Key)ConfigurationManager.Settings ["Application.AlternateBackwardKey"].PropertyValue).KeyCode);
|
|
|
|
- Assert.False ((bool)ConfigurationManager.Settings ["Application.IsMouseDisabled"].PropertyValue);
|
|
|
|
- }
|
|
|
|
|
|
+ // assert
|
|
|
|
+ Assert.True (fired);
|
|
|
|
|
|
- ConfigurationManager.Load (true);
|
|
|
|
|
|
+ Updated -= ConfigurationManager_Updated;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ [Fact]
|
|
|
|
+ public void Apply_FiresApplied ()
|
|
|
|
+ {
|
|
|
|
+ Reset ();
|
|
|
|
+ Applied += ConfigurationManager_Applied;
|
|
|
|
+ bool fired = false;
|
|
|
|
+ void ConfigurationManager_Applied (object sender, ConfigurationManagerEventArgs obj)
|
|
|
|
+ {
|
|
|
|
+ fired = true;
|
|
// assert
|
|
// assert
|
|
- Assert.True (fired);
|
|
|
|
-
|
|
|
|
- ConfigurationManager.Updated -= ConfigurationManager_Updated;
|
|
|
|
|
|
+ Assert.Equal (KeyCode.Q, Application.QuitKey.KeyCode);
|
|
|
|
+ Assert.Equal (KeyCode.F, Application.AlternateForwardKey.KeyCode);
|
|
|
|
+ Assert.Equal (KeyCode.B, Application.AlternateBackwardKey.KeyCode);
|
|
|
|
+ Assert.True (Application.IsMouseDisabled);
|
|
}
|
|
}
|
|
|
|
|
|
- [Fact]
|
|
|
|
- public void Apply_FiresApplied ()
|
|
|
|
- {
|
|
|
|
- ConfigurationManager.Reset ();
|
|
|
|
- ConfigurationManager.Applied += ConfigurationManager_Applied;
|
|
|
|
- bool fired = false;
|
|
|
|
- void ConfigurationManager_Applied (object sender, ConfigurationManagerEventArgs obj)
|
|
|
|
- {
|
|
|
|
- fired = true;
|
|
|
|
- // assert
|
|
|
|
- Assert.Equal (KeyCode.Q, Application.QuitKey.KeyCode);
|
|
|
|
- Assert.Equal (KeyCode.F, Application.AlternateForwardKey.KeyCode);
|
|
|
|
- Assert.Equal (KeyCode.B, Application.AlternateBackwardKey.KeyCode);
|
|
|
|
- Assert.True (Application.IsMouseDisabled);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // act
|
|
|
|
- ConfigurationManager.Settings ["Application.QuitKey"].PropertyValue = new Key (KeyCode.Q);
|
|
|
|
- ConfigurationManager.Settings ["Application.AlternateForwardKey"].PropertyValue = new Key (KeyCode.F);
|
|
|
|
- ConfigurationManager.Settings ["Application.AlternateBackwardKey"].PropertyValue = new Key (KeyCode.B);
|
|
|
|
- ConfigurationManager.Settings ["Application.IsMouseDisabled"].PropertyValue = true;
|
|
|
|
-
|
|
|
|
- ConfigurationManager.Apply ();
|
|
|
|
|
|
+ // act
|
|
|
|
+ Settings ["Application.QuitKey"].PropertyValue = new Key (KeyCode.Q);
|
|
|
|
+ Settings ["Application.AlternateForwardKey"].PropertyValue = new Key (KeyCode.F);
|
|
|
|
+ Settings ["Application.AlternateBackwardKey"].PropertyValue = new Key (KeyCode.B);
|
|
|
|
+ Settings ["Application.IsMouseDisabled"].PropertyValue = true;
|
|
|
|
|
|
- // assert
|
|
|
|
- Assert.True (fired);
|
|
|
|
|
|
+ Apply ();
|
|
|
|
|
|
- ConfigurationManager.Applied -= ConfigurationManager_Applied;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
|
|
+ // assert
|
|
|
|
+ Assert.True (fired);
|
|
|
|
|
|
|
|
+ Applied -= ConfigurationManager_Applied;
|
|
|
|
+ }
|
|
|
|
+}
|