Files
NightAlert/ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.net35/ParserTests/DecodeTests.cs

99 lines
3.2 KiB
C#

using Quobject.EngineIoClientDotNet.Modules;
using Quobject.EngineIoClientDotNet.Parser;
using Xunit;
namespace Quobject.EngineIoClientDotNet_Tests.ParserTests
{
public class DecodeTests
{
private const string PARSER_ERROR = "parser error";
[Fact]
public void DecodeBadFormat()
{
LogManager.SetupLogManager();
var log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod());
log.Info("Start");
Packet p = Parser.DecodePacket(":::");
Assert.Equal(Packet.ERROR, p.Type);
Assert.Equal(PARSER_ERROR, p.Data);
}
[Fact]
public void DecodeInexistingTypes()
{
LogManager.SetupLogManager();
var log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod());
log.Info("Start");
Packet p = Parser.DecodePacket("94103");
Assert.Equal(Packet.ERROR, p.Type);
Assert.Equal(PARSER_ERROR, p.Data);
}
[Fact]
public void DecodeInvalidUTF8()
{
LogManager.SetupLogManager();
var log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod());
log.Info("Start");
Packet p = Parser.DecodePacket("4\uffff", true);
Assert.Equal(Packet.ERROR, p.Type);
Assert.Equal(PARSER_ERROR, p.Data);
}
public class DecodePayloadBadFormat_DecodeCallback : IDecodePayloadCallback
{
public bool Call(Packet packet, int index, int total)
{
var isLast = index + 1 == total;
Assert.True(isLast);
Assert.Equal(Packet.ERROR, packet.Type);
Assert.Equal(PARSER_ERROR, packet.Data);
return true;
}
}
[Fact]
public void EncodeAndDecodeEmptyPayloads()
{
LogManager.SetupLogManager();
var log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod());
log.Info("Start");
Packet.DecodePayload("1!", new DecodePayloadBadFormat_DecodeCallback());
Packet.DecodePayload("", new DecodePayloadBadFormat_DecodeCallback());
Packet.DecodePayload("))", new DecodePayloadBadFormat_DecodeCallback());
}
[Fact]
public void DecodePayloadBadPacketFormat()
{
LogManager.SetupLogManager();
var log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod());
log.Info("Start");
Packet.DecodePayload("3:99", new DecodePayloadBadFormat_DecodeCallback());
Packet.DecodePayload("1:aa", new DecodePayloadBadFormat_DecodeCallback());
Packet.DecodePayload("1:a2:b", new DecodePayloadBadFormat_DecodeCallback());
}
[Fact]
public void DecodePayloadInvalidUTF8()
{
LogManager.SetupLogManager();
var log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod());
log.Info("Start");
Packet.DecodePayload("2:4\uffff", new DecodePayloadBadFormat_DecodeCallback());
}
}
}