RuneJsonConverterTests.cs 2.5 KB

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