SchemeManagerTests.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #nullable enable
  2. using System.Diagnostics;
  3. using System.Text.Json;
  4. namespace Terminal.Gui.ConfigurationTests;
  5. public class SchemeManagerTests
  6. {
  7. [Fact]
  8. public void GetHardCodedSchemes_Gets_HardCodedDefaults ()
  9. {
  10. var hardCoded = SchemeManager.GetHardCodedSchemes ();
  11. // Check that the hardcoded schemes are not null
  12. Assert.NotNull (hardCoded);
  13. // Check that the hardcoded schemes are not empty
  14. Assert.NotEmpty (hardCoded);
  15. }
  16. [Fact]
  17. public void AddScheme_Adds_And_Updates_Scheme ()
  18. {
  19. // Arrange
  20. var scheme = new Scheme (new Attribute (Color.Red, Color.Green));
  21. string schemeName = "CustomScheme";
  22. // Act
  23. SchemeManager.AddScheme (schemeName, scheme);
  24. // Assert
  25. Assert.Equal (scheme, SchemeManager.GetScheme (schemeName));
  26. // Update the scheme
  27. var updatedScheme = new Scheme (new Attribute (Color.Blue, Color.Yellow));
  28. SchemeManager.AddScheme (schemeName, updatedScheme);
  29. Assert.Equal (updatedScheme, SchemeManager.GetScheme (schemeName));
  30. // Cleanup
  31. SchemeManager.RemoveScheme (schemeName);
  32. }
  33. [Fact]
  34. public void RemoveScheme_Removes_Custom_Scheme ()
  35. {
  36. var scheme = new Scheme (new Attribute (Color.Red, Color.Green));
  37. string schemeName = "RemovableScheme";
  38. SchemeManager.AddScheme (schemeName, scheme);
  39. Assert.Equal (scheme, SchemeManager.GetScheme (schemeName));
  40. SchemeManager.RemoveScheme (schemeName);
  41. Assert.Throws<KeyNotFoundException> (() => SchemeManager.GetScheme (schemeName));
  42. }
  43. [Fact]
  44. public void RemoveScheme_Throws_On_BuiltIn_Scheme ()
  45. {
  46. // Built-in scheme name
  47. Assert.Throws<InvalidOperationException> (() => SchemeManager.RemoveScheme ("Base"));
  48. }
  49. [Fact]
  50. public void RemoveScheme_Throws_On_NonExistent_Scheme ()
  51. {
  52. Assert.Throws<InvalidOperationException> (() => SchemeManager.RemoveScheme ("DoesNotExist"));
  53. }
  54. [Fact]
  55. public void GetScheme_By_Enum_Returns_Scheme ()
  56. {
  57. var scheme = SchemeManager.GetScheme (Schemes.Base);
  58. Assert.NotNull (scheme);
  59. Assert.IsType<Scheme> (scheme);
  60. }
  61. [Fact]
  62. public void GetSchemeNames_Returns_All_Scheme_Names ()
  63. {
  64. var names = SchemeManager.GetSchemeNames ();
  65. Assert.NotNull (names);
  66. Assert.Contains ("Base", names);
  67. Assert.Contains ("Menu", names);
  68. Assert.Contains ("Dialog", names);
  69. Assert.Contains ("Toplevel", names);
  70. Assert.Contains ("Error", names);
  71. }
  72. [Fact]
  73. public void SchemesToSchemeName_And_SchemeNameToSchemes_RoundTrip ()
  74. {
  75. foreach (Schemes s in Enum.GetValues (typeof (Schemes)))
  76. {
  77. var name = SchemeManager.SchemesToSchemeName (s);
  78. Assert.NotNull (name);
  79. var roundTrip = SchemeManager.SchemeNameToSchemes (name!);
  80. Assert.NotNull (roundTrip);
  81. Assert.Equal (name, roundTrip);
  82. }
  83. }
  84. [Fact]
  85. public void GetScheme_Throws_On_Invalid_Enum ()
  86. {
  87. // Use an invalid enum value (not defined in Schemes)
  88. Assert.Throws<ArgumentException> (() => SchemeManager.GetScheme ((Schemes)999));
  89. }
  90. [Fact]
  91. public void GetScheme_Throws_On_Invalid_String ()
  92. {
  93. Assert.Throws<KeyNotFoundException> (() => SchemeManager.GetScheme ("NotAScheme"));
  94. }
  95. }