1 use googletest::prelude::*; 2 use protobuf::prelude::*; 3 use unittest_rust_proto::{NestedTestAllTypes, TestAllTypes}; 4 5 #[gtest] merge_from_empty()6fn merge_from_empty() { 7 let mut dst = TestAllTypes::new(); 8 let src = TestAllTypes::new(); 9 dst.merge_from(src.as_view()); 10 assert_that!(dst.as_view().has_optional_int32(), eq(false)); 11 } 12 13 #[gtest] merge_from_non_empty()14fn merge_from_non_empty() { 15 let mut dst = TestAllTypes::new(); 16 let src = proto!(TestAllTypes { optional_int32: 42 }); 17 dst.as_mut().merge_from(src.as_view()); 18 assert_eq!(dst.as_view().optional_int32(), 42); 19 } 20 21 #[gtest] merge_repeated_empty()22fn merge_repeated_empty() { 23 let mut dst = TestAllTypes::new(); 24 let mut src = TestAllTypes::new(); 25 src.repeated_int32_mut().extend(0..5); 26 dst.merge_from(src.as_view()); 27 assert_that!( 28 &dst.repeated_int32().iter().collect::<Vec<_>>(), 29 eq(&src.repeated_int32().iter().collect::<Vec<_>>()) 30 ); 31 } 32 33 #[gtest] merge_repeated_non_empty()34fn merge_repeated_non_empty() { 35 let mut dst = TestAllTypes::new(); 36 let mut src = TestAllTypes::new(); 37 dst.repeated_int32_mut().extend(0..5); 38 src.repeated_int32_mut().extend(5..10); 39 dst.merge_from(src.as_view()); 40 assert_that!( 41 &dst.repeated_int32().iter().collect::<Vec<_>>(), 42 eq(&(0..10).collect::<Vec<_>>()) 43 ); 44 } 45 46 #[gtest] merge_from_sub_message()47fn merge_from_sub_message() { 48 let mut dst = NestedTestAllTypes::new(); 49 let src = proto!(NestedTestAllTypes { 50 child: NestedTestAllTypes { payload: TestAllTypes { optional_int32: 42 } } 51 }); 52 dst.merge_from(src.as_view()); 53 assert_that!(dst.as_view().child().payload().optional_int32(), eq(42)); 54 } 55