JsonNullableGuidConverterTests.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using System;
  2. using System.Globalization;
  3. using System.Text.Json;
  4. using MediaBrowser.Common.Json.Converters;
  5. using Xunit;
  6. namespace Jellyfin.Common.Tests.Json
  7. {
  8. public class JsonNullableGuidConverterTests
  9. {
  10. private readonly JsonSerializerOptions _options;
  11. public JsonNullableGuidConverterTests()
  12. {
  13. _options = new JsonSerializerOptions();
  14. _options.Converters.Add(new JsonNullableGuidConverter());
  15. }
  16. [Fact]
  17. public void Deserialize_Valid_Success()
  18. {
  19. Guid? value = JsonSerializer.Deserialize<Guid?>(@"""a852a27afe324084ae66db579ee3ee18""", _options);
  20. Assert.Equal(new Guid("a852a27afe324084ae66db579ee3ee18"), value);
  21. }
  22. [Fact]
  23. public void Deserialize_ValidDashed_Success()
  24. {
  25. Guid? value = JsonSerializer.Deserialize<Guid?>(@"""e9b2dcaa-529c-426e-9433-5e9981f27f2e""", _options);
  26. Assert.Equal(new Guid("e9b2dcaa-529c-426e-9433-5e9981f27f2e"), value);
  27. }
  28. [Fact]
  29. public void Roundtrip_Valid_Success()
  30. {
  31. Guid guid = new Guid("a852a27afe324084ae66db579ee3ee18");
  32. string value = JsonSerializer.Serialize(guid, _options);
  33. Assert.Equal(guid, JsonSerializer.Deserialize<Guid?>(value, _options));
  34. }
  35. [Fact]
  36. public void Deserialize_Null_Null()
  37. {
  38. Assert.Null(JsonSerializer.Deserialize<Guid?>("null", _options));
  39. }
  40. [Fact]
  41. public void Deserialize_EmptyGuid_EmptyGuid()
  42. {
  43. Assert.Equal(Guid.Empty, JsonSerializer.Deserialize<Guid?>(@"""00000000-0000-0000-0000-000000000000""", _options));
  44. }
  45. [Fact]
  46. public void Serialize_EmptyGuid_Null()
  47. {
  48. Assert.Equal("null", JsonSerializer.Serialize((Guid?)Guid.Empty, _options));
  49. }
  50. [Fact]
  51. public void Serialize_Null_Null()
  52. {
  53. Assert.Equal("null", JsonSerializer.Serialize((Guid?)null, _options));
  54. }
  55. [Fact]
  56. public void Serialize_Valid_NoDash_Success()
  57. {
  58. var guid = (Guid?)new Guid("531797E9-9457-40E0-88BC-B1D6D38752FA");
  59. var str = JsonSerializer.Serialize(guid, _options);
  60. Assert.Equal($"\"{guid:N}\"", str);
  61. }
  62. [Fact]
  63. public void Serialize_Nullable_Success()
  64. {
  65. Guid? guid = new Guid("531797E9-9457-40E0-88BC-B1D6D38752FA");
  66. var str = JsonSerializer.Serialize(guid, _options);
  67. Assert.Equal($"\"{guid:N}\"", str);
  68. }
  69. }
  70. }