public void AddPacket() { Assert.True(ProtocolBuilder .Create <int>() .RegisterPacket((a) => { }) .Build(nullBuilder).Packets.Length == 1); }
public void WriteField() { var def = ProtocolBuilder .Create <int>() .RegisterDefaultAccessors() .RegisterPacket((a) => a .Id(0x00) .BindingType <SamplePacket>() .BindField(nameof(SamplePacket.Field)) ).Build(new ExpressionDelegateBuilder()); var packetDef = def.Packets.First(); var vals = new byte[1]; rnd.NextBytes(vals); var val = vals[0]; using (var stream = new MemoryStream()) { var packet = new SamplePacket() { Field = val, }; packetDef.WriteDelegate(stream, packet); stream.Position = 0; Assert.AreEqual(val, (byte)stream.ReadByte()); } }
public void ReadProperty() { var def = ProtocolBuilder .Create <int>() .RegisterDefaultAccessors() .RegisterPacket((a) => a .Id(0x00) .BindingType <SamplePacket>() .BindProperty(nameof(SamplePacket.Property)) ).Build(new ExpressionDelegateBuilder()); var packetDef = def.Packets.First(); var vals = new byte[1]; rnd.NextBytes(vals); var val = vals[0]; using (var stream = new MemoryStream(new byte[] { val })) { var readPacket = (SamplePacket)packetDef.ReadDelegate(stream); Assert.NotNull(readPacket); Assert.AreEqual(val, readPacket.Property); } }
public void RegisterAccessorCannotConvertAccessorTypeException() { Assert.Throws <ArgumentException>(() => ProtocolBuilder .Create <int>() // Only "Implementing" Byte .RegisterAccessor(typeof(Int32), typeof(NullAccessor))); }
public void RegisterAccessorAccessorNullException() { Assert.Throws <ArgumentNullException>(() => ProtocolBuilder .Create <int>() .RegisterAccessor(typeof(Byte), null)); }
public void RegisterAccessorInvalidAccessorTypeException() { Assert.Throws <ArgumentException>(() => ProtocolBuilder .Create <int>() // Clearly not implementing INetworkAccessor .RegisterAccessor(typeof(Byte), typeof(Byte))); }
public void BindingTypeNullException() { Assert.Throws <ArgumentNullException>(() => ProtocolBuilder .Create <int>() .RegisterPacket((a) => a .BindingType(null))); }
public void IdWrongTypeException() { Assert.Throws <ArgumentException>(() => ProtocolBuilder .Create <int>() .RegisterPacket((a) => a .Id("this is the wrong type"))); }
public void SetBindingTypeBeforePropertyBinding() { Assert.Throws <InvalidOperationException>(() => ProtocolBuilder .Create <int>() .RegisterPacket((a) => a .BindProperty(nameof(SamplePacket.Field)))); }
public void IdSaved() { int Id = rnd.Next(); Assert.AreEqual(Id, ProtocolBuilder .Create <int>() .RegisterPacket((a) => a .Id(Id)).Build(nullBuilder).Packets.First().Id); }
public void PropertyBindingFieldException() { Assert.Throws <ArgumentException>(() => ProtocolBuilder .Create <int>() .RegisterPacket((a) => a .Id(0) .BindingType <SamplePacket>() .BindProperty(nameof(SamplePacket.Field)) )); }
public void BindingType() { var def = ProtocolBuilder .Create <int>() .RegisterPacket((a) => a .Id(0) .BindingType <SamplePacket>() ).Build(nullBuilder); Assert.True(def.Packets.First().Binding == typeof(SamplePacket)); }
public static ProtocolDefinition GetNetworkDefinition() => ProtocolBuilder .Create <int>() .LengthBehaviour(new DefaultDynamicInt32LengthBehaviour()) .UseIds(new DefaultIdHeader(), new DelegateIdMapper((id, protocol) => protocol.Packets.First(x => ((int)x.Id) == (int)id), (def, protocol) => def.Id)) .RegisterDefaultAccessors() .RegisterPacket((a) => a .Id(0x00) .BindingType <SingleByteTransferPacket>() .BindField(nameof(SingleByteTransferPacket.Data)) ).Build(new ExpressionDelegateBuilder());
public void PropertyBinding() { var def = ProtocolBuilder .Create <int>() .RegisterPacket((a) => a .Id(0) .BindingType <SamplePacket>() .BindProperty(nameof(SamplePacket.Property)) ).Build(nullBuilder); Assert.True(def.Packets.First().Bindings.Length == 1, "Wrong Length"); Assert.True(def.Packets.First().Bindings.First() == typeof(SamplePacket).GetProperty(nameof(SamplePacket.Property)), "Binding Type Wrong"); }
public void CreateExplicit() { Assert.AreEqual(typeof(Int32), ProtocolBuilder.Create(typeof(Int32)).Build(nullBuilder).IdType); }
public void CreateGeneric() { Assert.AreEqual(typeof(Int32), ProtocolBuilder.Create <Int32>().Build(nullBuilder).IdType); }
public void IdTypeNullException() { Assert.Throws <ArgumentNullException>(() => ProtocolBuilder.Create(null)); }