Skip to content

Commit 35e8f3c

Browse files
committed
fix: the parameter of IJsonSerializer.Serialize is always an array, so change the method signature.
1 parent 98499e9 commit 35e8f3c

File tree

4 files changed

+58
-23
lines changed

4 files changed

+58
-23
lines changed

src/SocketIOClient.Newtonsoft.Json/NewtonsoftJsonSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public NewtonsoftJsonSerializer(int eio)
1616

1717
public Func<JsonSerializerSettings> JsonSerializerOptions { get; }
1818

19-
public JsonSerializeResult Serialize<T>(T data)
19+
public JsonSerializeResult Serialize(object[] data)
2020
{
2121
var converter = new ByteArrayConverter(eio);
2222
var settings = CreateOptions();

src/SocketIOClient.UnitTest/SystemTextJsonSerializerTest.cs

Lines changed: 55 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace SocketIOClient.UnitTest
77
[TestClass]
88
public class SystemTextJsonSerializerTest
99
{
10-
const string LONG_STRING= @"
10+
const string LONG_STRING = @"
1111
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1212
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1313
222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
@@ -28,13 +28,15 @@ public void TestEio3With1Byte()
2828
{
2929
var seriazlier = new SystemTextJsonSerializer(3);
3030
byte[] messageBytes = Encoding.UTF8.GetBytes(LONG_STRING + "xyz");
31-
var result = seriazlier.Serialize(new
32-
{
33-
Code = 404,
34-
Message = messageBytes
31+
var result = seriazlier.Serialize(new object[] {
32+
new
33+
{
34+
Code = 404,
35+
Message = messageBytes
36+
}
3537
});
3638

37-
Assert.AreEqual($"{{\"Code\":404,\"Message\":{{\"_placeholder\":true,\"num\":0}}}}", result.Json);
39+
Assert.AreEqual("[{\"Code\":404,\"Message\":{\"_placeholder\":true,\"num\":0}}]", result.Json);
3840
Assert.AreEqual(1, result.Bytes.Count);
3941
Assert.AreEqual(messageBytes.Length + 1, result.Bytes[0].Length);
4042
Assert.AreEqual(4, result.Bytes[0][0]);
@@ -47,14 +49,17 @@ public void TestEio3With2Bytes()
4749
var seriazlier = new SystemTextJsonSerializer(3);
4850
byte[] messageBytes = Encoding.UTF8.GetBytes(LONG_STRING + "xyz");
4951
byte[] dataBytes = Encoding.UTF8.GetBytes(LONG_STRING + "-data");
50-
var result = seriazlier.Serialize(new
52+
var result = seriazlier.Serialize(new object[]
5153
{
52-
Code = 404,
53-
Message = messageBytes,
54-
Data = dataBytes
54+
new
55+
{
56+
Code = 404,
57+
Message = messageBytes,
58+
Data = dataBytes
59+
}
5560
});
5661

57-
Assert.AreEqual($"{{\"Code\":404,\"Message\":{{\"_placeholder\":true,\"num\":0}},\"Data\":{{\"_placeholder\":true,\"num\":1}}}}", result.Json);
62+
Assert.AreEqual("[{\"Code\":404,\"Message\":{\"_placeholder\":true,\"num\":0},\"Data\":{\"_placeholder\":true,\"num\":1}}]", result.Json);
5863
Assert.AreEqual(2, result.Bytes.Count);
5964
Assert.AreEqual(messageBytes.Length + 1, result.Bytes[0].Length);
6065
Assert.AreEqual(4, result.Bytes[0][0]);
@@ -69,13 +74,16 @@ public void TestEio4With1Byte()
6974
{
7075
var seriazlier = new SystemTextJsonSerializer(4);
7176
byte[] messageBytes = Encoding.UTF8.GetBytes(LONG_STRING + "xyz");
72-
var result = seriazlier.Serialize(new
77+
var result = seriazlier.Serialize(new object[]
7378
{
74-
Code = 404,
75-
Message = messageBytes
79+
new
80+
{
81+
Code = 404,
82+
Message = messageBytes
83+
}
7684
});
7785

78-
Assert.AreEqual($"{{\"Code\":404,\"Message\":{{\"_placeholder\":true,\"num\":0}}}}", result.Json);
86+
Assert.AreEqual("[{\"Code\":404,\"Message\":{\"_placeholder\":true,\"num\":0}}]", result.Json);
7987
Assert.AreEqual(messageBytes.Length, result.Bytes[0].Length);
8088
Assert.AreEqual(LONG_STRING + "xyz", Encoding.UTF8.GetString(result.Bytes[0]));
8189
}
@@ -86,14 +94,41 @@ public void TestEio4With2Bytes()
8694
var seriazlier = new SystemTextJsonSerializer(4);
8795
byte[] messageBytes = Encoding.UTF8.GetBytes(LONG_STRING + "xyz");
8896
byte[] dataBytes = Encoding.UTF8.GetBytes(LONG_STRING + "-data");
89-
var result = seriazlier.Serialize(new
97+
var result = seriazlier.Serialize(new object[]
98+
{
99+
new
100+
{
101+
Code = 404,
102+
Message = messageBytes,
103+
Data = dataBytes
104+
}
105+
});
106+
107+
Assert.AreEqual("[{\"Code\":404,\"Message\":{\"_placeholder\":true,\"num\":0},\"Data\":{\"_placeholder\":true,\"num\":1}}]", result.Json);
108+
Assert.AreEqual(2, result.Bytes.Count);
109+
Assert.AreEqual(messageBytes.Length, result.Bytes[0].Length);
110+
Assert.AreEqual(LONG_STRING + "xyz", Encoding.UTF8.GetString(result.Bytes[0]));
111+
Assert.AreEqual(dataBytes.Length, result.Bytes[1].Length);
112+
Assert.AreEqual(LONG_STRING + "-data", Encoding.UTF8.GetString(result.Bytes[1]));
113+
}
114+
115+
[TestMethod]
116+
public void TestEio4With2Bytes2Params()
117+
{
118+
var seriazlier = new SystemTextJsonSerializer(4);
119+
byte[] messageBytes = Encoding.UTF8.GetBytes(LONG_STRING + "xyz");
120+
byte[] dataBytes = Encoding.UTF8.GetBytes(LONG_STRING + "-data");
121+
var result = seriazlier.Serialize(new object[]
90122
{
91-
Code = 404,
92-
Message = messageBytes,
93-
Data = dataBytes
123+
new
124+
{
125+
Code = 404,
126+
Message = messageBytes
127+
},
128+
dataBytes
94129
});
95130

96-
Assert.AreEqual($"{{\"Code\":404,\"Message\":{{\"_placeholder\":true,\"num\":0}},\"Data\":{{\"_placeholder\":true,\"num\":1}}}}", result.Json);
131+
Assert.AreEqual("[{\"Code\":404,\"Message\":{\"_placeholder\":true,\"num\":0}},{\"_placeholder\":true,\"num\":1}]", result.Json);
97132
Assert.AreEqual(2, result.Bytes.Count);
98133
Assert.AreEqual(messageBytes.Length, result.Bytes[0].Length);
99134
Assert.AreEqual(LONG_STRING + "xyz", Encoding.UTF8.GetString(result.Bytes[0]));

src/SocketIOClient/JsonSerializer/IJsonSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace SocketIOClient.JsonSerializer
44
{
55
public interface IJsonSerializer
66
{
7-
JsonSerializeResult Serialize<T>(T data);
7+
JsonSerializeResult Serialize(object[] data);
88
T Deserialize<T>(string json);
99
T Deserialize<T>(string json, IList<byte[]> incomingBytes);
1010
}

src/SocketIOClient/JsonSerializer/SystemTextJsonSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public SystemTextJsonSerializer(int eio)
1212

1313
readonly int eio;
1414

15-
public JsonSerializeResult Serialize<T>(T data)
15+
public JsonSerializeResult Serialize(object[] data)
1616
{
1717
var converter = new ByteArrayConverter(eio);
1818
var options = CreateOptions();

0 commit comments

Comments
 (0)