Files

81 lines
2.6 KiB
C#

using Newtonsoft.Json.Linq;
using Quobject.EngineIoClientDotNet.ComponentEmitter;
using Quobject.SocketIoClientDotNet.Parser;
using System.Text;
using Xunit;
namespace SocketIoClientDotNet.Tests.ParserTests
{
public class Helpers
{
private static Parser.Encoder Encoder = new Parser.Encoder();
public static void Test(Packet obj)
{
Encoder.Encode(obj, new Parser.Encoder.CallbackImp((encodedPackets) =>
{
var decoder = new Parser.Decoder();
decoder.On(Parser.Decoder.EVENT_DECODED, new ListenerImpl((data1) =>
{
var packet = (Packet) data1;
AssertPacket(obj, packet);
}));
decoder.Add((string)encodedPackets[0]);
}));
}
public static void TestBin(Packet obj)
{
object originalData = obj.Data;
Encoder.Encode(obj, new Parser.Encoder.CallbackImp((encodedPackets) =>
{
var decoder = new Parser.Decoder();
decoder.On(Parser.Decoder.EVENT_DECODED, new ListenerImpl((args) =>
{
var packet = (Packet) args;
obj.Data = originalData;
obj.Attachments = -1;
AssertPacket(obj, packet);
}));
foreach (var packet in encodedPackets)
{
if (packet is string)
{
decoder.Add((string)packet);
} else if (packet is byte[])
{
decoder.Add((byte[])packet);
}
}
}));
}
public static void AssertPacket(Packet expected, Packet actual)
{
Assert.Equal(expected.Type, actual.Type);
Assert.Equal(expected.Id, actual.Id);
Assert.Equal(expected.Nsp, actual.Nsp);
Assert.Equal(expected.Attachments, actual.Attachments);
if (expected.Data is JArray)
{
var exp = (JArray) expected.Data;
var act = (JArray) expected.Data;
Assert.Equal(exp.ToString(), act.ToString());
}
else if (expected.Data is JObject)
{
var exp = (JObject) expected.Data;
var act = (JObject) expected.Data;
Assert.Equal(exp.ToString(), act.ToString());
}
else
{
Assert.Equal(expected.Data.ToString(), actual.Data.ToString());
}
}
}
}