@@ -192,6 +192,7 @@ TEST_F(RoomTest, RoomOptionsDefaults) {
192192 EXPECT_FALSE (options.join_retries .has_value ()) << " join_retries should defer to Rust default" ;
193193 EXPECT_TRUE (options.single_peer_connection ) << " single_peer_connection should default to true" ;
194194 EXPECT_FALSE (options.connect_timeout .has_value ()) << " connect_timeout should defer to Rust default" ;
195+ EXPECT_FALSE (options.other_sdks .has_value ()) << " other_sdks should not report additional SDKs by default" ;
195196}
196197
197198TEST_F (RoomTest, RoomOptionsToProtoSerializesDefaults) {
@@ -208,6 +209,7 @@ TEST_F(RoomTest, RoomOptionsToProtoSerializesDefaults) {
208209 EXPECT_TRUE (proto_options.has_single_peer_connection ());
209210 EXPECT_TRUE (proto_options.single_peer_connection ());
210211 EXPECT_FALSE (proto_options.has_connect_timeout_ms ());
212+ EXPECT_FALSE (proto_options.has_other_sdks ());
211213}
212214
213215TEST_F (RoomTest, RoomOptionsProtoConverter) {
@@ -227,6 +229,7 @@ TEST_F(RoomTest, RoomOptionsProtoConverter) {
227229 options.join_retries = 8 ;
228230 options.single_peer_connection = false ;
229231 options.connect_timeout = std::chrono::milliseconds (750 );
232+ options.other_sdks = " ros_portal:1.2.3,another-sdk:2.0.0" ;
230233
231234 const proto::RoomOptions proto_options = toProto (options);
232235
@@ -255,6 +258,8 @@ TEST_F(RoomTest, RoomOptionsProtoConverter) {
255258 EXPECT_FALSE (proto_options.single_peer_connection ());
256259 EXPECT_TRUE (proto_options.has_connect_timeout_ms ());
257260 EXPECT_EQ (proto_options.connect_timeout_ms (), 750U );
261+ EXPECT_TRUE (proto_options.has_other_sdks ());
262+ EXPECT_EQ (proto_options.other_sdks (), " ros_portal:1.2.3,another-sdk:2.0.0" );
258263}
259264
260265TEST (RoomOptionsProtoTest, ConnectRequestSerializesRetryOptions) {
@@ -285,6 +290,18 @@ TEST(RoomOptionsProtoTest, ConnectRequestSerializesRetryOptions) {
285290 EXPECT_EQ (decoded.connect ().options ().connect_timeout_ms (), 750U );
286291}
287292
293+ TEST (RoomOptionsProtoTest, EmptyOtherSdksIsStillSerialized) {
294+ // An explicitly empty list stays distinguishable from unset on the wire; Rust
295+ // collapses both to "no additional SDKs".
296+ RoomOptions options;
297+ options.other_sdks = " " ;
298+
299+ const proto::RoomOptions proto_options = toProto (options);
300+
301+ ASSERT_TRUE (proto_options.has_other_sdks ());
302+ EXPECT_EQ (proto_options.other_sdks (), " " );
303+ }
304+
288305TEST_F (RoomTest, RtcConfigDefaults) {
289306 RtcConfig config;
290307
0 commit comments