// Protocol Buffers - Google's data interchange format // Copyright 2023 Google LLC. All rights reserved. // // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file or at // https://developers.google.com/open-source/licenses/bsd #[cfg(not(bzl))] mod protos; #[cfg(not(bzl))] use protos::*; use googletest::prelude::*; use std::sync::{Arc, Mutex}; use unittest_rust_proto::TestAllTypes; #[gtest] fn test_sending_owned_arc() { let msg = Arc::new(Mutex::new(TestAllTypes::default())); let msg_clone = Arc::clone(&msg); let handle = std::thread::spawn(move || { let mut locked_msg = msg_clone.lock().unwrap(); locked_msg.set_optional_int32(123); }); handle.join().unwrap(); let locked_msg = msg.lock().unwrap(); assert_eq!(locked_msg.optional_int32(), 123); } #[gtest] fn test_sending_mut_scoped() { let mut msg = TestAllTypes::default(); std::thread::scope(|scope| { let mut child_mut = msg.optional_nested_message_mut(); scope.spawn(move || { child_mut.set_bb(123); }); }); assert_eq!(msg.optional_nested_message().bb(), 123); }