ThemeScopeTests.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using Xunit;
  2. using Terminal.Gui.Configuration;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Text.Json;
  9. using static Terminal.Gui.Configuration.ConfigurationManager;
  10. namespace Terminal.Gui.ConfigurationTests {
  11. public class ThemeScopeTests {
  12. public static readonly JsonSerializerOptions _jsonOptions = new() {
  13. Converters = {
  14. //new AttributeJsonConverter (),
  15. //new ColorJsonConverter ()
  16. }
  17. };
  18. [Fact]
  19. public void ThemeManager_ClassMethodsWork ()
  20. {
  21. ConfigurationManager.Reset ();
  22. Assert.Equal (ConfigurationManager.ThemeManager.Instance, ConfigurationManager.Themes);
  23. Assert.NotEmpty (ConfigurationManager.ThemeManager.Themes);
  24. ConfigurationManager.ThemeManager.SelectedTheme = "foo";
  25. Assert.Equal ("foo", ConfigurationManager.ThemeManager.SelectedTheme);
  26. ConfigurationManager.ThemeManager.Reset ();
  27. Assert.Equal (string.Empty, ConfigurationManager.ThemeManager.SelectedTheme);
  28. Assert.Empty (ConfigurationManager.ThemeManager.Themes);
  29. }
  30. [Fact]
  31. public void AllThemesPresent()
  32. {
  33. ConfigurationManager.Reset ();
  34. Assert.True (ConfigurationManager.Themes.ContainsKey ("Default"));
  35. Assert.True (ConfigurationManager.Themes.ContainsKey ("Dark"));
  36. Assert.True (ConfigurationManager.Themes.ContainsKey ("Light"));
  37. }
  38. [Fact]
  39. public void GetHardCodedDefaults_ShouldSetProperties ()
  40. {
  41. ConfigurationManager.Reset ();
  42. ConfigurationManager.GetHardCodedDefaults ();
  43. Assert.NotEmpty (ConfigurationManager.Themes);
  44. Assert.Equal ("Default", ConfigurationManager.Themes.Theme);
  45. }
  46. [Fact, AutoInitShutdown]
  47. public void Apply_ShouldApplyUpdatedProperties ()
  48. {
  49. ConfigurationManager.Reset ();
  50. Assert.NotEmpty (ConfigurationManager.Themes);
  51. Assert.Equal (Dialog.ButtonAlignments.Center, Dialog.DefaultButtonAlignment);
  52. ConfigurationManager.Themes ["Default"] ["Dialog.DefaultButtonAlignment"].PropertyValue = Dialog.ButtonAlignments.Right;
  53. ConfigurationManager.ThemeManager.Themes! [ThemeManager.SelectedTheme]!.Apply ();
  54. Assert.Equal (Dialog.ButtonAlignments.Right, Dialog.DefaultButtonAlignment);
  55. }
  56. [Fact]
  57. public void TestSerialize_RoundTrip ()
  58. {
  59. ConfigurationManager.Reset ();
  60. var initial = ConfigurationManager.ThemeManager.Themes;
  61. var serialized = JsonSerializer.Serialize<IDictionary<string, ThemeScope>> (ConfigurationManager.Themes, _jsonOptions);
  62. var deserialized = JsonSerializer.Deserialize<IDictionary<string, ThemeScope>> (serialized, _jsonOptions);
  63. Assert.NotEqual (initial, deserialized);
  64. Assert.Equal (deserialized.Count, initial.Count);
  65. }
  66. }
  67. }