public void ReadEmitsCorrectData() { const string encodedInput = "42696E00000001180000000A6E6577446576696365730000000100000100000000020000010100000002000000084348494C4452454E0000010000000003000000030000000776616C75652033000000030000000776616C75652032000000030000000776616C75652031000000084649524D574152450000000300000005312E353035000001010000000300000007414444524553530000000300000009426964436F532D5246000000084348494C4452454E0000010000000005000000030000000776616C75652035000000030000000776616C75652034000000030000000776616C75652033000000030000000776616C75652032000000030000000776616C75652031000000084649524D574152450000000300000005312E353035"; var input = BinaryUtils.CreateByteStream(encodedInput); var reader = new HmBinaryMessageReader(input); reader.ReadState.ShouldBe(ReadState.Initial); reader.Read().ShouldBe(true); reader.ReadState.ShouldBe(ReadState.Message); reader.MessageType.ShouldBe(MessageType.Request); reader.Read().ShouldBe(true); reader.ReadState.ShouldBe(ReadState.Body); //read body reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.String); reader.StringValue.ShouldBe("newDevices"); reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.Array); reader.ItemCount.ShouldBe(1); reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.Array); reader.ItemCount.ShouldBe(2); reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.Struct); reader.ItemCount.ShouldBe(2); reader.Read().ShouldBe(true); reader.PropertyName.ShouldBe("CHILDREN"); reader.ValueType.ShouldBe(ContentType.Array); reader.ItemCount.ShouldBe(3); reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.String); reader.StringValue.ShouldBe("value 3"); reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.String); reader.StringValue.ShouldBe("value 2"); reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.String); reader.StringValue.ShouldBe("value 1"); reader.Read().ShouldBe(true); reader.PropertyName.ShouldBe("FIRMWARE"); reader.ValueType.ShouldBe(ContentType.String); reader.StringValue.ShouldBe("1.505"); reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.Struct); reader.ItemCount.ShouldBe(3); reader.Read().ShouldBe(true); reader.PropertyName.ShouldBe("ADDRESS"); reader.ValueType.ShouldBe(ContentType.String); reader.StringValue.ShouldBe("BidCoS-RF"); reader.Read().ShouldBe(true); reader.PropertyName.ShouldBe("CHILDREN"); reader.ValueType.ShouldBe(ContentType.Array); reader.ItemCount.ShouldBe(5); reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.String); reader.StringValue.ShouldBe("value 5"); reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.String); reader.StringValue.ShouldBe("value 4"); reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.String); reader.StringValue.ShouldBe("value 3"); reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.String); reader.StringValue.ShouldBe("value 2"); reader.Read().ShouldBe(true); reader.ValueType.ShouldBe(ContentType.String); reader.StringValue.ShouldBe("value 1"); reader.Read().ShouldBe(true); reader.PropertyName.ShouldBe("FIRMWARE"); reader.ValueType.ShouldBe(ContentType.String); reader.StringValue.ShouldBe("1.505"); reader.Read().ShouldBe(true); reader.ReadState.ShouldBe(ReadState.EndOfFile); reader.Read().ShouldBe(false); }