diff --git a/Cargo.toml b/Cargo.toml index 645e960..bb3c954 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["rpcl2", "rpcl2-derive"] +members = [ "derive-test","rpcl2", "rpcl2-derive"] resolver = "2" diff --git a/derive-test/Cargo.toml b/derive-test/Cargo.toml new file mode 100644 index 0000000..75692c8 --- /dev/null +++ b/derive-test/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "derive-test" +version = "0.1.0" +edition = "2021" + +[dependencies] +ros_pointcloud2 = { path = "../rpcl2", features = ["std", "derive"] } +rpcl2-derive = { path = "../rpcl2-derive" } diff --git a/derive-test/tests/derive_test.rs b/derive-test/tests/derive_test.rs new file mode 100644 index 0000000..e0720a6 --- /dev/null +++ b/derive-test/tests/derive_test.rs @@ -0,0 +1,20 @@ +use ros_pointcloud2::PointConvertible; +use rpcl2_derive::*; + +#[derive(Debug, PartialEq, Clone, Default, PointConvertible)] +#[repr(C, align(4))] +struct MyPointXYZI { + x: f32, + #[rpcl2(rename("test"))] + y: u16, + z: f32, + #[rpcl2(rename("i"))] + intensity: i32, + label: u8, +} + +#[test] +fn layout() { + let layout_str = format!("{:?}", MyPointXYZI::layout()); + assert_eq!("LayoutDescription([Field { name: \"x\", ty: \"f32\", size: 4 }, Field { name: \"test\", ty: \"u16\", size: 2 }, Padding { size: 2 }, Field { name: \"z\", ty: \"f32\", size: 4 }, Field { name: \"i\", ty: \"i32\", size: 4 }, Field { name: \"label\", ty: \"u8\", size: 1 }, Padding { size: 3 }])", layout_str); +}