|
| 1 | +use issue_984::{ |
| 2 | + message_header_codec::MessageHeaderDecoder, |
| 3 | + simple_message_codec::{encoder::MyGroupEncoder, *}, |
| 4 | + *, |
| 5 | +}; |
| 6 | + |
| 7 | +fn create_encoder(buffer: &mut Vec<u8>) -> SimpleMessageEncoder { |
| 8 | + let simple_msg = SimpleMessageEncoder::default().wrap( |
| 9 | + WriteBuf::new(buffer.as_mut_slice()), |
| 10 | + message_header_codec::ENCODED_LENGTH, |
| 11 | + ); |
| 12 | + let mut header = simple_msg.header(0); |
| 13 | + header.parent().unwrap() |
| 14 | +} |
| 15 | + |
| 16 | +#[test] |
| 17 | +fn round_trip() -> SbeResult<()> { |
| 18 | + // encode... |
| 19 | + let mut buffer = vec![0u8; 256]; |
| 20 | + let mut simple_msg_encoder = create_encoder(&mut buffer); |
| 21 | + simple_msg_encoder.id(1985); |
| 22 | + |
| 23 | + let mut my_grp_encoder = simple_msg_encoder.my_group_encoder(1, MyGroupEncoder::default()); |
| 24 | + my_grp_encoder.advance()?; |
| 25 | + my_grp_encoder.f1(&[1, 2, 3, 4]); |
| 26 | + my_grp_encoder.f2(&[1, 2, 3, 4, 5]); |
| 27 | + my_grp_encoder.f3(&[1, 2, 3, 4, 5, 6]); |
| 28 | + |
| 29 | + // decode... |
| 30 | + let buf = ReadBuf::new(buffer.as_slice()); |
| 31 | + let header = MessageHeaderDecoder::default().wrap(buf, 0); |
| 32 | + assert_eq!(SBE_BLOCK_LENGTH, header.block_length()); |
| 33 | + assert_eq!(SBE_SCHEMA_VERSION, header.version()); |
| 34 | + assert_eq!(SBE_TEMPLATE_ID, header.template_id()); |
| 35 | + assert_eq!(SBE_SCHEMA_ID, header.schema_id()); |
| 36 | + |
| 37 | + let simple_msg_decoder = SimpleMessageDecoder::default().header(header); |
| 38 | + assert_eq!(1985, simple_msg_decoder.id()); |
| 39 | + let mut grp_decoder = simple_msg_decoder.my_group_decoder(); |
| 40 | + assert_eq!(1, grp_decoder.count()); |
| 41 | + grp_decoder.advance()?; |
| 42 | + |
| 43 | + assert_eq!([1, 2, 3, 4], grp_decoder.f1()); |
| 44 | + assert_eq!([1, 2, 3, 4, 5], grp_decoder.f2()); |
| 45 | + assert_eq!([1, 2, 3, 4, 5, 6], grp_decoder.f3()); |
| 46 | + Ok(()) |
| 47 | +} |
0 commit comments