ThemeScopeTests.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. Assert.Equal (Alignment.End, Dialog.DefaultButtonAlignment);
  29. Themes ["Default"] ["Dialog.DefaultButtonAlignment"].PropertyValue = Alignment.Center;
  30. ThemeManager.Themes! [ThemeManager.SelectedTheme]!.Apply ();
  31. Assert.Equal (Alignment.Center, Dialog.DefaultButtonAlignment);
  32. Reset ();
  33. }
  34. [Fact]
  35. public void GetHardCodedDefaults_ShouldSetProperties ()
  36. {
  37. Reset ();
  38. GetHardCodedDefaults ();
  39. Assert.NotEmpty (Themes);
  40. Assert.Equal ("Default", Themes.Theme);
  41. }
  42. [Fact]
  43. public void TestSerialize_RoundTrip ()
  44. {
  45. Reset ();
  46. Dictionary<string, ThemeScope> initial = ThemeManager.Themes;
  47. string serialized = JsonSerializer.Serialize<IDictionary<string, ThemeScope>> (Themes, _jsonOptions);
  48. IDictionary<string, ThemeScope> deserialized =
  49. JsonSerializer.Deserialize<IDictionary<string, ThemeScope>> (serialized, _jsonOptions);
  50. Assert.NotEqual (initial, deserialized);
  51. Assert.Equal (deserialized.Count, initial.Count);
  52. }
  53. [Fact]
  54. public void ThemeManager_ClassMethodsWork ()
  55. {
  56. Reset ();
  57. Assert.Equal (ThemeManager.Instance, Themes);
  58. Assert.NotEmpty (ThemeManager.Themes);
  59. ThemeManager.SelectedTheme = "foo";
  60. Assert.Equal ("foo", ThemeManager.SelectedTheme);
  61. ThemeManager.Reset ();
  62. Assert.Equal (string.Empty, ThemeManager.SelectedTheme);
  63. Assert.Empty (ThemeManager.Themes);
  64. }
  65. }