KeyJsonConverterTests.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System.Text;
  2. using System.Text.Encodings.Web;
  3. using System.Text.Json;
  4. using System.Text.Unicode;
  5. namespace Terminal.Gui.ConfigurationTests;
  6. public class KeyJsonConverterTests
  7. {
  8. [Fact]
  9. public void Separator_Property_Set_Changes_Serialization_Format ()
  10. {
  11. Rune savedSeparator = Key.Separator;
  12. // Act
  13. // NOTE: This means this test can't be parallelized
  14. Key.Separator = (Rune)'*';
  15. string json = JsonSerializer.Serialize (Key.Separator, ConfigurationManager.SerializerContext.Options);
  16. // Assert
  17. Assert.Equal ("\"*\"", json);
  18. Key.Separator = savedSeparator;
  19. }
  20. [Theory]
  21. [InlineData ('A', '+', "\"Ctrl+Alt+A\"")]
  22. [InlineData ('A', '-', "\"Ctrl+Alt+A\"")]
  23. [InlineData ('A', '*', "\"Ctrl+Alt+A\"")]
  24. [InlineData ('A', '@', "\"Ctrl+Alt+A\"")]
  25. [InlineData ('A', '+', "\"Ctrl@Alt@A\"")]
  26. [InlineData ('A', '-', "\"Ctrl@Alt@A\"")]
  27. [InlineData ('A', '*', "\"Ctrl@Alt@A\"")]
  28. [InlineData ('A', '@', "\"Ctrl@Alt@A\"")]
  29. [InlineData ('+', '+', "\"Ctrl+Alt++\"")]
  30. [InlineData ('+', '-', "\"Ctrl+Alt++\"")]
  31. [InlineData ('+', '*', "\"Ctrl+Alt++\"")]
  32. [InlineData ('+', '@', "\"Ctrl+Alt++\"")]
  33. [InlineData ('+', '+', "\"Ctrl@Alt@+\"")]
  34. [InlineData ('+', '-', "\"Ctrl@Alt@+\"")]
  35. [InlineData ('+', '*', "\"Ctrl@Alt@+\"")]
  36. [InlineData ('+', '@', "\"Ctrl@Alt@+\"")]
  37. public void Separator_Property_Set_Deserialization_Works_With_Any (char keyChar, char separator, string json)
  38. {
  39. Rune savedSeparator = Key.Separator;
  40. // Act
  41. // NOTE: This means this test can't be parallelized
  42. Key.Separator = (Rune)separator;
  43. Key deserializedKey = JsonSerializer.Deserialize<Key> (json, ConfigurationManager.SerializerContext.Options);
  44. Key expectedKey = new Key ((KeyCode)keyChar).WithCtrl.WithAlt;
  45. // Assert
  46. Assert.Equal (expectedKey, deserializedKey);
  47. Key.Separator = savedSeparator;
  48. }
  49. }