public void ShouldBeSerializable() { string name = RndProvider.GetString(16); int age = RndProvider.Next(1, 100); byte[] rndBytes = RndProvider.GetNonZeroBytes(128); // build Payload payload = new Payload.Builder() .Value("name", name) .Value("age", age) .Value("rndBytes", rndBytes) .Build(); // serialize & deserialize Payload received = Payload.Parse(payload.ToBytes()); // assert Assert.Equal(name, received.Value <string>("name")); Assert.Equal(age, received.Value <int>("age")); Assert.True(rndBytes.SequenceEqual(received.Value <byte[]>("rndBytes"))); Assert.Equal(payload.Hash.ToHex(), received.Hash.ToHex()); Assert.Equal(payload.Hash, received.Hash); }
static void Main(string[] args) { Console.WriteLine("Hello World!"); ILoggable logger = new BLog.Builder() .WithConsole(true) .WithFilter(LogFilter.All) .Build(); using (CancellationTokenSource cts = new CancellationTokenSource()) { Console.CancelKeyPress += (sender, e) => { e.Cancel = true; cts.Cancel(); }; while (!cts.IsCancellationRequested) { // Thread.Sleep(100); Payload payload = new Payload.Builder() .Value("rndBytes", RndProvider.GetNonZeroBytes(MessageLength)) .Build(); TcpClient.SendTo("127.0.0.1", PORT, payload.ToBytes()); } } }
public void ShouldBeAbleToOverlap() { Payload header = new Payload.Builder() .Value("ver", 0x01) .Build(); Payload body = new Payload.Builder() .Value("message", "Hello, Bryllite!") .Value("rndBytes", RndProvider.GetNonZeroBytes(128)) .Build(); Payload message = new Payload.Builder() .Value("header", header) .Value("body", body) .Build(); Payload received = Payload.Parse(message.ToBytes()); Payload receivedHeader = received.Value <Payload>("header"); Payload receivedBody = received.Value <Payload>("body"); Assert.Equal(message.Hash, received.Hash); Assert.Equal(header.Hash, receivedHeader.Hash); Assert.Equal(body.Hash, receivedBody.Hash); Assert.Equal(header.Value <int>("ver"), receivedHeader.Value <int>("ver")); Assert.Equal(body.Value <string>("message"), receivedBody.Value <string>("message")); Assert.Equal(body.Value <byte[]>("rndBytes"), receivedBody.Value <byte[]>("rndBytes")); }
public void PayloadShouldBeParsable() { Elastic3D to = new Elastic3D(1, 2, 3); ElasticLayout layout = ElasticLayout.DefineLayout(1024); Payload payload = new Payload.Builder() .Value("to", to) .Value("layout", layout) .Build(); Payload received = Payload.Parse(payload.ToBytes()); Elastic3D receivedTo = received.Value <Elastic3D>("to"); ElasticLayout receivedLayout = received.Value <ElasticLayout>("layout"); Assert.Equal(1, receivedTo.X); Assert.Equal(2, receivedTo.Y); Assert.Equal(3, receivedTo.Z); Assert.Equal(to, receivedTo); Assert.Equal(layout.X, receivedLayout.X); Assert.Equal(layout.Y, receivedLayout.Y); Assert.Equal(layout.Z, receivedLayout.Z); }