RuneJsonConverterTests.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System.Text;
  2. using Xunit;
  3. using System.Text.Json;
  4. namespace Terminal.Gui.ConfigurationTests;
  5. public class RunJsonConverterTests {
  6. [Theory]
  7. [InlineData ("a", "a")]
  8. [InlineData ("☑", "☑")]
  9. [InlineData ("\\u2611", "☑")]
  10. [InlineData ("U+2611", "☑")]
  11. [InlineData ("🍎", "🍎")]
  12. [InlineData ("U+1F34E", "🍎")]
  13. [InlineData ("\\U0001F34E", "🍎")]
  14. [InlineData ("\\ud83d \\udc69", "👩")]
  15. [InlineData ("\\ud83d\\udc69", "👩")]
  16. [InlineData ("U+d83d U+dc69", "👩")]
  17. [InlineData ("U+1F469", "👩")]
  18. [InlineData ("\\U0001F469", "👩")]
  19. [InlineData ("\\u0065\\u0301", "é")]
  20. public void RoundTripConversion_Positive (string rune, string expected)
  21. {
  22. // Arrange
  23. // Act
  24. var json = JsonSerializer.Serialize (rune, ConfigurationManager._serializerOptions);
  25. var deserialized = JsonSerializer.Deserialize<Rune> (json, ConfigurationManager._serializerOptions);
  26. // Assert
  27. Assert.Equal (expected, deserialized.ToString ());
  28. }
  29. [Theory]
  30. [InlineData ("aa")]
  31. [InlineData ("☑☑")]
  32. [InlineData ("\\x2611")]
  33. [InlineData ("Z+2611")]
  34. [InlineData ("🍎🍎")]
  35. [InlineData ("U+FFF1F34E")]
  36. [InlineData ("\\UFFF1F34E")]
  37. [InlineData ("\\ud83d")] // not printable
  38. [InlineData ("\\ud83d \\u1c69")] // bad surrogate pair
  39. [InlineData ("\\ud83ddc69")]
  40. // Emoji - Family Unit:
  41. // Woman (U+1F469, 👩)
  42. // Zero Width Joiner (U+200D)
  43. // Woman (U+1F469, 👩)
  44. // Zero Width Joiner (U+200D)
  45. // Girl (U+1F467, 👧)
  46. // Zero Width Joiner (U+200D)
  47. // Girl (U+1F467, 👧)
  48. [InlineData ("U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D U+1F467")]
  49. [InlineData ("\\U0001F469\\u200D\\U0001F469\\u200D\\U0001F467\\u200D\\U0001F467")]
  50. public void RoundTripConversion_Negative (string rune)
  51. {
  52. // Act
  53. var json = JsonSerializer.Serialize (rune, ConfigurationManager._serializerOptions);
  54. // Assert
  55. Assert.Throws<JsonException> (() => JsonSerializer.Deserialize<Rune> (json, ConfigurationManager._serializerOptions));
  56. }
  57. }