@@ -522,4 +522,43 @@ mod tests {
522
522
Err ( DynamicMessageError :: RequiredPrefixNotSourced { .. } )
523
523
) ) ;
524
524
}
525
+
526
+ #[ test]
527
+ fn message_getters_setters ( ) {
528
+ let message_type = MessageTypeName {
529
+ package_name : "test_msgs" . to_owned ( ) ,
530
+ type_name : "BasicTypes" . to_owned ( ) ,
531
+ } ;
532
+ let mut message = DynamicMessage :: new ( message_type) . unwrap ( ) ;
533
+
534
+ {
535
+ // Access non existing values
536
+ assert ! ( message. get( "invalid_value" ) . is_none( ) ) ;
537
+ }
538
+
539
+ {
540
+ // Get then set a sample value
541
+ let value = message. get_mut ( "int32_value" ) . unwrap ( ) ;
542
+ let ValueMut :: Simple ( value) = value else {
543
+ panic ! ( "Unexpected value type, expected Simple value" ) ;
544
+ } ;
545
+ let SimpleValueMut :: Int32 ( value) = value else {
546
+ panic ! ( "Unexpected value type, expected Int32" ) ;
547
+ } ;
548
+ assert_eq ! ( * value, 0 ) ;
549
+ * value = 42 ;
550
+ }
551
+
552
+ {
553
+ // Read previously set value
554
+ let value = message. get ( "int32_value" ) . unwrap ( ) ;
555
+ let Value :: Simple ( value) = value else {
556
+ panic ! ( "Unexpected value type, expected Simple value" ) ;
557
+ } ;
558
+ let SimpleValue :: Int32 ( value) = value else {
559
+ panic ! ( "Unexpected value type, expected Int32" ) ;
560
+ } ;
561
+ assert_eq ! ( * value, 42 ) ;
562
+ }
563
+ }
525
564
}
0 commit comments