nrbf 0.2.2

A parser for the .NET Remoting Binary Format (NRBF).
Documentation
use nrbf::{RemotingMessage, Value};

#[test]
fn binary_array_jagged() {
  #[rustfmt::skip]
  let input = [
    0,
      0x01, 0x00, 0x00, 0x00,
      0xFF, 0xFF, 0xFF, 0xFF,
      0x01, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00,
    7,
      0x01, 0x00, 0x00, 0x00,
      1,
      0x01, 0x00, 0x00, 0x00,
      0x03, 0x00, 0x00, 0x00,
      7,
      8,
      9,
        0x02, 0x00, 0x00, 0x00,
      9,
        0x03, 0x00, 0x00, 0x00,
      9,
        0x04, 0x00, 0x00, 0x00,
    15,
      0x02, 0x00, 0x00, 0x00,
      0x02, 0x00, 0x00, 0x00,
      8,
      0x01, 0x00, 0x00, 0x00,
      0x02, 0x00, 0x00, 0x00,
    15,
      0x03, 0x00, 0x00, 0x00,
      0x03, 0x00, 0x00, 0x00,
      8,
      0x03, 0x00, 0x00, 0x00,
      0x04, 0x00, 0x00, 0x00,
      0x05, 0x00, 0x00, 0x00,
    15,
      0x04, 0x00, 0x00, 0x00,
      0x04, 0x00, 0x00, 0x00,
      8,
      0x06, 0x00, 0x00, 0x00,
      0x07, 0x00, 0x00, 0x00,
      0x08, 0x00, 0x00, 0x00,
      0x09, 0x00, 0x00, 0x00,
    11,
  ];

  let output = RemotingMessage::Value(Value::Array(vec![
    Value::Array(vec![Value::Int32(1), Value::Int32(2)]),
    Value::Array(vec![Value::Int32(3), Value::Int32(4), Value::Int32(5)]),
    Value::Array(vec![Value::Int32(6), Value::Int32(7), Value::Int32(8), Value::Int32(9)]),
  ]));

  assert_eq!(RemotingMessage::parse(&input), Ok(output));
}