// Protocol Buffers - Google's data interchange format // Copyright 2024 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 use googletest::prelude::*; use protobuf::prelude::*; use unittest_rust_proto::TestAllTypes; #[gtest] fn test_thread_local_arena() { // We use a thread-local arena to allocate minitables, so let's verify that a minitable remains // valid even after that the thread that initialized it has exited. let handle = std::thread::spawn(|| { let mut m = TestAllTypes::new(); m.set_optional_int32(3); let _ = m.serialize(); }); handle.join().unwrap(); let mut m1 = TestAllTypes::new(); m1.set_optional_int32(5); let m2 = TestAllTypes::parse(&m1.serialize().unwrap()).unwrap(); assert_that!(m1.optional_int32(), eq(m2.optional_int32())); }