Skip to content

Commit d65c218

Browse files
committed
test: SystemTextJsonSerializerTest
1 parent 0a4a5d5 commit d65c218

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using SocketIOClient.JsonSerializer;
3+
using System.Text;
4+
5+
namespace SocketIOClient.UnitTest
6+
{
7+
[TestClass]
8+
public class SystemTextJsonSerializerTest
9+
{
10+
const string LONG_STRING= @"
11+
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
12+
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
13+
222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
14+
333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
15+
444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
16+
555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
17+
666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
18+
777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
19+
888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
20+
999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
21+
AmericanAmericanAmericanAmericanAmericanAmericanAmericanAmericanAmericanAmericanAmericanAmericanAme
22+
你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你
23+
ののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののの
24+
";
25+
26+
[TestMethod]
27+
public void TestEio3With1Byte()
28+
{
29+
var seriazlier = new SystemTextJsonSerializer(3);
30+
byte[] messageBytes = Encoding.UTF8.GetBytes(LONG_STRING + "xyz");
31+
var result = seriazlier.Serialize(new
32+
{
33+
Code = 404,
34+
Message = messageBytes
35+
});
36+
37+
Assert.AreEqual($"{{\"Code\":404,\"Message\":{{\"_placeholder\":true,\"num\":0}}}}", result.Json);
38+
Assert.AreEqual(1, result.Bytes.Count);
39+
Assert.AreEqual(messageBytes.Length + 1, result.Bytes[0].Length);
40+
Assert.AreEqual(4, result.Bytes[0][0]);
41+
Assert.AreEqual(LONG_STRING + "xyz", Encoding.UTF8.GetString(result.Bytes[0], 1, result.Bytes[0].Length - 1));
42+
}
43+
44+
[TestMethod]
45+
public void TestEio3With2Bytes()
46+
{
47+
var seriazlier = new SystemTextJsonSerializer(3);
48+
byte[] messageBytes = Encoding.UTF8.GetBytes(LONG_STRING + "xyz");
49+
byte[] dataBytes = Encoding.UTF8.GetBytes(LONG_STRING + "-data");
50+
var result = seriazlier.Serialize(new
51+
{
52+
Code = 404,
53+
Message = messageBytes,
54+
Data = dataBytes
55+
});
56+
57+
Assert.AreEqual($"{{\"Code\":404,\"Message\":{{\"_placeholder\":true,\"num\":0}},\"Data\":{{\"_placeholder\":true,\"num\":1}}}}", result.Json);
58+
Assert.AreEqual(2, result.Bytes.Count);
59+
Assert.AreEqual(messageBytes.Length + 1, result.Bytes[0].Length);
60+
Assert.AreEqual(4, result.Bytes[0][0]);
61+
Assert.AreEqual(LONG_STRING + "xyz", Encoding.UTF8.GetString(result.Bytes[0], 1, result.Bytes[0].Length - 1));
62+
Assert.AreEqual(dataBytes.Length + 1, result.Bytes[1].Length);
63+
Assert.AreEqual(4, result.Bytes[1][0]);
64+
Assert.AreEqual(LONG_STRING + "-data", Encoding.UTF8.GetString(result.Bytes[1], 1, result.Bytes[1].Length - 1));
65+
}
66+
67+
[TestMethod]
68+
public void TestEio4With1Byte()
69+
{
70+
var seriazlier = new SystemTextJsonSerializer(4);
71+
byte[] messageBytes = Encoding.UTF8.GetBytes(LONG_STRING + "xyz");
72+
var result = seriazlier.Serialize(new
73+
{
74+
Code = 404,
75+
Message = messageBytes
76+
});
77+
78+
Assert.AreEqual($"{{\"Code\":404,\"Message\":{{\"_placeholder\":true,\"num\":0}}}}", result.Json);
79+
Assert.AreEqual(messageBytes.Length, result.Bytes[0].Length);
80+
Assert.AreEqual(LONG_STRING + "xyz", Encoding.UTF8.GetString(result.Bytes[0]));
81+
}
82+
83+
[TestMethod]
84+
public void TestEio4With2Bytes()
85+
{
86+
var seriazlier = new SystemTextJsonSerializer(4);
87+
byte[] messageBytes = Encoding.UTF8.GetBytes(LONG_STRING + "xyz");
88+
byte[] dataBytes = Encoding.UTF8.GetBytes(LONG_STRING + "-data");
89+
var result = seriazlier.Serialize(new
90+
{
91+
Code = 404,
92+
Message = messageBytes,
93+
Data = dataBytes
94+
});
95+
96+
Assert.AreEqual($"{{\"Code\":404,\"Message\":{{\"_placeholder\":true,\"num\":0}},\"Data\":{{\"_placeholder\":true,\"num\":1}}}}", result.Json);
97+
Assert.AreEqual(2, result.Bytes.Count);
98+
Assert.AreEqual(messageBytes.Length, result.Bytes[0].Length);
99+
Assert.AreEqual(LONG_STRING + "xyz", Encoding.UTF8.GetString(result.Bytes[0]));
100+
Assert.AreEqual(dataBytes.Length, result.Bytes[1].Length);
101+
Assert.AreEqual(LONG_STRING + "-data", Encoding.UTF8.GetString(result.Bytes[1]));
102+
}
103+
}
104+
}

0 commit comments

Comments
 (0)