From 72e5d8c618507d95ff4bc61be3447fc03d39e3b7 Mon Sep 17 00:00:00 2001 From: Drew Galbraith Date: Thu, 29 Aug 2024 23:39:30 -0700 Subject: [PATCH] [Yunq] Rust tests for nested messages. --- lib/yunq/test/example/example.yunq | 12 ++++++++ rust/lib/yunq-test/src/lib.rs | 45 ++++++++++++++++++++++++++++-- rust/lib/yunq/src/message.rs | 2 +- 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/lib/yunq/test/example/example.yunq b/lib/yunq/test/example/example.yunq index a3c9e59..7b11e08 100644 --- a/lib/yunq/test/example/example.yunq +++ b/lib/yunq/test/example/example.yunq @@ -13,3 +13,15 @@ message Cap { message Repeated { repeated u64 unsigned_ints; } + + +message Nested { + Basic basic; + Cap cap1; + Cap cap2; +} + +message RepeatedNested { + repeated Basic basics; + repeated Cap caps; +} diff --git a/rust/lib/yunq-test/src/lib.rs b/rust/lib/yunq-test/src/lib.rs index 58825a6..1a3c3ec 100644 --- a/rust/lib/yunq-test/src/lib.rs +++ b/rust/lib/yunq-test/src/lib.rs @@ -71,10 +71,51 @@ mod tests { let parsed = Repeated::parse(&buf, 0, &caps)?; - println!("{:?}", parsed.unsigned_ints); - assert!(parsed == rep); Ok(()) } + + #[test] + fn nested_serialization() -> Result<(), ZError> { + let nested = Nested { + basic: Basic { unsigned_int: 82, signed_int: -1234, strn: "abc".to_string() }, + cap1: Cap { cap: 37}, + cap2: Cap { cap: 39}, + }; + + let mut buf = ByteBuffer::<1024>::new(); + let mut caps = Vec::new(); + nested.serialize(&mut buf, 0, &mut caps)?; + + let parsed = Nested::parse(&buf, 0, &caps)?; + + + assert!(parsed == nested); + + Ok(()) + } + + #[test] + fn repeated_nested_serialization() -> Result<(), ZError> { + let nested = RepeatedNested { + basics: vec![Basic { unsigned_int: 82, signed_int: -1234, strn: "abc".to_string(),}, + Basic { unsigned_int: 21, signed_int: -8, strn: "def".to_string(), },], + caps: vec![Cap{ cap: 123}, Cap {cap: 12343}], + }; + + let mut buf = ByteBuffer::<1024>::new(); + let mut caps = Vec::new(); + nested.serialize(&mut buf, 0, &mut caps)?; + + let parsed = RepeatedNested::parse(&buf, 0, &caps)?; + + + assert!(parsed == nested); + + + Ok(()) + } + + } diff --git a/rust/lib/yunq/src/message.rs b/rust/lib/yunq/src/message.rs index eb5dfc6..d1fc6a5 100644 --- a/rust/lib/yunq/src/message.rs +++ b/rust/lib/yunq/src/message.rs @@ -58,7 +58,7 @@ pub fn serialize_repeated_message( caps: &mut Vec, ) -> Result { for item in data { - offset = item.serialize(buf, offset, caps)?; + offset += item.serialize(buf, offset, caps)?; } Ok(offset) }