SchemeManagerTests.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #nullable enable
  2. using System.Diagnostics;
  3. using System.Text.Json;
  4. namespace UnitTests_Parallelizable.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 RemoveScheme_Throws_On_BuiltIn_Scheme ()
  18. {
  19. // Built-in scheme name
  20. Assert.Throws<InvalidOperationException> (() => SchemeManager.RemoveScheme ("Base"));
  21. }
  22. [Fact]
  23. public void RemoveScheme_Throws_On_NonExistent_Scheme ()
  24. {
  25. Assert.Throws<InvalidOperationException> (() => SchemeManager.RemoveScheme ("DoesNotExist"));
  26. }
  27. [Fact]
  28. public void GetScheme_By_Enum_Returns_Scheme ()
  29. {
  30. var scheme = SchemeManager.GetScheme (Schemes.Base);
  31. Assert.NotNull (scheme);
  32. Assert.IsType<Scheme> (scheme);
  33. }
  34. [Fact]
  35. public void GetSchemeNames_Returns_All_Scheme_Names ()
  36. {
  37. var names = SchemeManager.GetSchemeNames ();
  38. Assert.NotNull (names);
  39. Assert.Contains ("Base", names);
  40. Assert.Contains ("Menu", names);
  41. Assert.Contains ("Dialog", names);
  42. Assert.Contains ("Toplevel", names);
  43. Assert.Contains ("Error", names);
  44. }
  45. [Fact]
  46. public void SchemesToSchemeName_And_SchemeNameToSchemes_RoundTrip ()
  47. {
  48. foreach (Schemes s in Enum.GetValues (typeof (Schemes)))
  49. {
  50. var name = SchemeManager.SchemesToSchemeName (s);
  51. Assert.NotNull (name);
  52. var roundTrip = SchemeManager.SchemeNameToSchemes (name!);
  53. Assert.NotNull (roundTrip);
  54. Assert.Equal (name, roundTrip);
  55. }
  56. }
  57. [Fact]
  58. public void GetScheme_Throws_On_Invalid_Enum ()
  59. {
  60. // Use an invalid enum value (not defined in Schemes)
  61. Assert.Throws<ArgumentException> (() => SchemeManager.GetScheme ((Schemes)999));
  62. }
  63. [Fact]
  64. public void GetScheme_Throws_On_Invalid_String ()
  65. {
  66. Assert.Throws<KeyNotFoundException> (() => SchemeManager.GetScheme ("NotAScheme"));
  67. }
  68. }