Skip to content

Commit 912b67c

Browse files
authored
add more coverage to BinaryData serialization tests (Azure#30540)
1 parent a0cd194 commit 912b67c

File tree

6 files changed

+132
-7
lines changed

6 files changed

+132
-7
lines changed

sdk/core/Azure.Core/tests/BinaryDataSerializationTests.cs

Lines changed: 128 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Collections.Generic;
66
using System.IO;
77
using System.Reflection;
8+
using System.Text;
89
using System.Text.Json;
910
using System.Text.Json.Serialization;
1011
using System.Threading;
@@ -53,6 +54,9 @@ public void CanConvertInt()
5354

5455
Assert.AreEqual("a.value", data.A);
5556
Assert.AreEqual(1, data.Properties.ToObjectFromJson<int>());
57+
58+
var roundTripString = GetSerializedString(data);
59+
Assert.AreEqual(File.ReadAllText(GetFileName("JsonFormattedStringInt.json")).TrimEnd(), roundTripString);
5660
}
5761

5862
[Test]
@@ -63,7 +67,10 @@ public void CanConvertDouble()
6367
var data = ModelWithBinaryData.DeserializeModelWithBinaryData(document.RootElement);
6468

6569
Assert.AreEqual("a.value", data.A);
66-
Assert.AreEqual(1.1, data.Properties.ToObjectFromJson<double>());
70+
Assert.AreEqual(1.5, data.Properties.ToObjectFromJson<double>());
71+
72+
var roundTripString = GetSerializedString(data);
73+
Assert.AreEqual(File.ReadAllText(GetFileName("JsonFormattedStringDouble.json")).TrimEnd(), roundTripString);
6774
}
6875

6976
[Test]
@@ -75,6 +82,51 @@ public void CanConvertString()
7582

7683
Assert.AreEqual("a.value", data.A);
7784
Assert.AreEqual("1", data.Properties.ToObjectFromJson<string>());
85+
86+
var roundTripString = GetSerializedString(data);
87+
Assert.AreEqual(File.ReadAllText(GetFileName("JsonFormattedStringString.json")).TrimEnd(), roundTripString);
88+
}
89+
90+
[Test]
91+
public void CanConvertNull()
92+
{
93+
using var fs = File.Open(GetFileName("JsonFormattedStringNull.json"), FileMode.Open, FileAccess.Read, FileShare.Read);
94+
using var document = JsonDocument.Parse(fs);
95+
var data = ModelWithBinaryData.DeserializeModelWithBinaryData(document.RootElement);
96+
97+
Assert.AreEqual("a.value", data.A);
98+
Assert.AreEqual(null, data.Properties.ToObjectFromJson<string>());
99+
100+
var roundTripString = GetSerializedString(data);
101+
Assert.AreEqual(File.ReadAllText(GetFileName("JsonFormattedStringNull.json")).TrimEnd(), roundTripString);
102+
}
103+
104+
[Test]
105+
public void CanConvertTrue()
106+
{
107+
using var fs = File.Open(GetFileName("JsonFormattedStringTrue.json"), FileMode.Open, FileAccess.Read, FileShare.Read);
108+
using var document = JsonDocument.Parse(fs);
109+
var data = ModelWithBinaryData.DeserializeModelWithBinaryData(document.RootElement);
110+
111+
Assert.AreEqual("a.value", data.A);
112+
Assert.AreEqual(true, data.Properties.ToObjectFromJson<bool>());
113+
114+
var roundTripString = GetSerializedString(data);
115+
Assert.AreEqual(File.ReadAllText(GetFileName("JsonFormattedStringTrue.json")).TrimEnd(), roundTripString);
116+
}
117+
118+
[Test]
119+
public void CanConvertFalse()
120+
{
121+
using var fs = File.Open(GetFileName("JsonFormattedStringFalse.json"), FileMode.Open, FileAccess.Read, FileShare.Read);
122+
using var document = JsonDocument.Parse(fs);
123+
var data = ModelWithBinaryData.DeserializeModelWithBinaryData(document.RootElement);
124+
125+
Assert.AreEqual("a.value", data.A);
126+
Assert.AreEqual(false, data.Properties.ToObjectFromJson<bool>());
127+
128+
var roundTripString = GetSerializedString(data);
129+
Assert.AreEqual(File.ReadAllText(GetFileName("JsonFormattedStringFalse.json")).TrimEnd(), roundTripString);
78130
}
79131

80132
[Test]
@@ -325,6 +377,81 @@ public void SerailizeUsingAnonObject()
325377
Assert.AreEqual(expected, actual);
326378
}
327379

380+
[Test]
381+
public void SerailizeUsingAnonObjectSettingString()
382+
{
383+
var expected = File.ReadAllText(GetFileName("JsonFormattedStringString.json")).TrimEnd();
384+
385+
var payload = new ModelWithBinaryData { A = "a.value" };
386+
payload.Properties = BinaryData.FromObjectAsJson("1");
387+
string actual = GetSerializedString(payload);
388+
Assert.AreEqual(expected, actual);
389+
390+
payload.Properties = BinaryData.FromString("\"1\"");
391+
actual = GetSerializedString(payload);
392+
Assert.AreEqual(expected, actual);
393+
}
394+
395+
[Test]
396+
public void SerailizeUsingAnonObjectSettingTrue()
397+
{
398+
var expected = File.ReadAllText(GetFileName("JsonFormattedStringTrue.json")).TrimEnd();
399+
400+
var payload = new ModelWithBinaryData { A = "a.value" };
401+
payload.Properties = BinaryData.FromObjectAsJson(true);
402+
403+
string actual = GetSerializedString(payload);
404+
Assert.AreEqual(expected, actual);
405+
}
406+
407+
[Test]
408+
public void SerailizeUsingAnonObjectSettingFalse()
409+
{
410+
var expected = File.ReadAllText(GetFileName("JsonFormattedStringFalse.json")).TrimEnd();
411+
412+
var payload = new ModelWithBinaryData { A = "a.value" };
413+
payload.Properties = BinaryData.FromObjectAsJson(false);
414+
415+
string actual = GetSerializedString(payload);
416+
Assert.AreEqual(expected, actual);
417+
}
418+
419+
[Test]
420+
public void SerailizeUsingAnonObjectSettingInt()
421+
{
422+
var expected = File.ReadAllText(GetFileName("JsonFormattedStringInt.json")).TrimEnd();
423+
424+
var payload = new ModelWithBinaryData { A = "a.value" };
425+
payload.Properties = BinaryData.FromObjectAsJson(1);
426+
427+
string actual = GetSerializedString(payload);
428+
Assert.AreEqual(expected, actual);
429+
}
430+
431+
[Test]
432+
public void SerailizeUsingAnonObjectSettingDouble()
433+
{
434+
var expected = File.ReadAllText(GetFileName("JsonFormattedStringDouble.json")).TrimEnd();
435+
436+
var payload = new ModelWithBinaryData { A = "a.value" };
437+
payload.Properties = BinaryData.FromObjectAsJson(1.5);
438+
439+
string actual = GetSerializedString(payload);
440+
Assert.AreEqual(expected, actual);
441+
}
442+
443+
[Test]
444+
public void SerailizeUsingAnonObjectSettingNull()
445+
{
446+
var expected = File.ReadAllText(GetFileName("JsonFormattedStringNull.json")).TrimEnd();
447+
448+
var payload = new ModelWithBinaryData { A = "a.value" };
449+
payload.Properties = BinaryData.FromObjectAsJson<object>(null);
450+
451+
string actual = GetSerializedString(payload);
452+
Assert.AreEqual(expected, actual);
453+
}
454+
328455
private static string GetSerializedString(BinaryData payload)
329456
{
330457
using var ms = new MemoryStream();

sdk/core/Azure.Core/tests/ModelWithBinaryData.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,6 @@ internal static ModelWithBinaryData DeserializeModelWithBinaryData(JsonElement e
5454
}
5555
if (property.NameEquals("properties"))
5656
{
57-
if (property.Value.ValueKind == JsonValueKind.Null)
58-
{
59-
property.ThrowNonNullablePropertyIsNull();
60-
continue;
61-
}
6257
properties = BinaryData.FromString(property.Value.GetRawText());
6358
continue;
6459
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"a":"a.value","properties":1.1}
1+
{"a":"a.value","properties":1.5}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"a":"a.value","properties":false}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"a":"a.value","properties":null}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"a":"a.value","properties":true}

0 commit comments

Comments
 (0)