Skip to content

Commit fca4ea2

Browse files
committed
Test JsonNode
1 parent 6f1d36e commit fca4ea2

File tree

1 file changed

+67
-1
lines changed

1 file changed

+67
-1
lines changed

Testing.Dynamic.Json.Test/DJsonTest.cs

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
using System;
1+
using System;
22
using System.Text.Json;
3+
using System.Text.Json.Nodes;
34
using Xunit;
45

56
namespace Testing.Dynamic.Test
@@ -80,5 +81,70 @@ private static void AssertDynamic(DJson dynJson)
8081
Assert.Equal("{\"grades\":[90,80,100,75]}", JsonSerializer.Serialize(dyn[2]));
8182
Assert.Equal("null", JsonSerializer.Serialize((object)dyn[3]));
8283
}
84+
85+
86+
[Fact]
87+
public void TestDeserializeJsonNode()
88+
{
89+
var dynJson = JsonNode.Parse(json)!;
90+
91+
AssertJsonNodeDynamic(dynJson);
92+
93+
AssertJsonNode(dynJson);
94+
}
95+
96+
private static void AssertJsonNodeDynamic(object dynJson)
97+
{
98+
dynamic dyn = dynJson;
99+
100+
Assert.Equal(3, dyn.Count);
101+
//Assert.Null(dyn[3]);
102+
var gradeObj = dyn[2];
103+
Assert.NotNull(gradeObj);
104+
Assert.Null(gradeObj["Dontknow"]);
105+
106+
var grades = gradeObj["grades"];
107+
Assert.NotNull(grades);
108+
Assert.Equal(90, (int)grades[0]);
109+
Assert.Equal(80, (int)grades[1]);
110+
Assert.Equal(100, (int)grades[2]);
111+
Assert.Equal(75, (int)grades[3]);
112+
113+
Assert.Equal("[{\"name\":\"John\"},[\"425-000-1212\",15],{\"grades\":[90,80,100,75]}]", JsonSerializer.Serialize(dyn));
114+
Assert.Equal("{\"name\":\"John\"}", JsonSerializer.Serialize(dyn[0]));
115+
Assert.Equal("[\"425-000-1212\",15]", JsonSerializer.Serialize(dyn[1]));
116+
Assert.Equal("{\"grades\":[90,80,100,75]}", JsonSerializer.Serialize(dyn[2]));
117+
//Assert.Equal("null", JsonSerializer.Serialize((object)dyn[3]));
118+
}
119+
120+
private static void AssertJsonNode(JsonNode dynJson)
121+
{
122+
var arr = (JsonArray)dynJson;
123+
Assert.Equal(3, arr.Count);
124+
//Assert.Null(dynJson[3]);
125+
var gradeObj = dynJson[2];
126+
Assert.NotNull(gradeObj);
127+
Assert.Null(gradeObj["Dontknow"]);
128+
129+
var grades = (JsonArray)gradeObj["grades"];
130+
Assert.NotNull(grades);
131+
132+
var obj90L = grades[0];
133+
Assert.NotEqual(90, obj90L);
134+
Assert.Equal(90, (int)(long)obj90L);
135+
//Assert.Equal(90, Convert.ToInt32(obj90L));
136+
//Assert.Equal(90, Convert.ToInt64(obj90L));
137+
138+
Assert.NotStrictEqual(90, grades[0]);
139+
Assert.NotStrictEqual(80, grades[1]);
140+
Assert.NotStrictEqual(100, grades[2]);
141+
Assert.NotStrictEqual(75, grades[3]);
142+
143+
Assert.Equal("[{\"name\":\"John\"},[\"425-000-1212\",15],{\"grades\":[90,80,100,75]}]", JsonSerializer.Serialize(dynJson));
144+
Assert.Equal("{\"name\":\"John\"}", JsonSerializer.Serialize(dynJson[0]));
145+
Assert.Equal("[\"425-000-1212\",15]", JsonSerializer.Serialize(dynJson[1]));
146+
Assert.Equal("{\"grades\":[90,80,100,75]}", JsonSerializer.Serialize(dynJson[2]));
147+
//Assert.Equal("null", JsonSerializer.Serialize(dynJson[3]));
148+
}
83149
}
84150
}

0 commit comments

Comments
 (0)