ThemeScopeTests.cs 2.6 KB

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