KeyCodeJsonConverterTests.cs 1.2 KB

123456789101112131415161718192021222324252627282930
  1. using System.Text.Json;
  2. namespace Terminal.Gui.ConfigurationTests;
  3. public class KeyCodeJsonConverterTests
  4. {
  5. [Theory]
  6. [InlineData (KeyCode.A, "A")]
  7. [InlineData (KeyCode.A | KeyCode.ShiftMask, "A, ShiftMask")]
  8. [InlineData (KeyCode.A | KeyCode.CtrlMask, "A, CtrlMask")]
  9. [InlineData (KeyCode.A | KeyCode.AltMask | KeyCode.CtrlMask, "A, CtrlMask, AltMask")]
  10. [InlineData ((KeyCode)'a' | KeyCode.AltMask | KeyCode.CtrlMask, "Space, A, CtrlMask, AltMask")]
  11. [InlineData ((KeyCode)'a' | KeyCode.ShiftMask, "Space, A, ShiftMask")]
  12. [InlineData (KeyCode.Delete | KeyCode.AltMask | KeyCode.CtrlMask, "Delete, CtrlMask, AltMask")]
  13. [InlineData (KeyCode.D4, "D4")]
  14. [InlineData (KeyCode.Esc, "Esc")]
  15. public void TestKeyRoundTripConversion (KeyCode key, string expectedStringTo)
  16. {
  17. // Arrange
  18. var options = new JsonSerializerOptions ();
  19. options.Converters.Add (new KeyCodeJsonConverter ());
  20. // Act
  21. string json = JsonSerializer.Serialize (key, options);
  22. var deserializedKey = JsonSerializer.Deserialize<KeyCode> (json, options);
  23. // Assert
  24. Assert.Equal (expectedStringTo, deserializedKey.ToString ());
  25. }
  26. }