diff --git a/Runtime/Scripts/Room.cs b/Runtime/Scripts/Room.cs index 88d58b2b..1076a64e 100644 --- a/Runtime/Scripts/Room.cs +++ b/Runtime/Scripts/Room.cs @@ -33,7 +33,8 @@ public Proto.IceServer ToProto() var proto = new Proto.IceServer(); proto.Username = Username; proto.Password = Password; - proto.Urls.AddRange(Urls); + if (Urls != null) + proto.Urls.AddRange(Urls); return proto; } @@ -72,9 +73,12 @@ public Proto.RtcConfig ToProto() break; } - foreach (var item in IceServers) + if (IceServers != null) { - proto.IceServers.Add(item.ToProto()); + foreach (var item in IceServers) + { + proto.IceServers.Add(item.ToProto()); + } } return proto; diff --git a/Tests/EditMode/LiveKit.EditModeTests.asmdef b/Tests/EditMode/LiveKit.EditModeTests.asmdef index 3ae0e42c..baca1e98 100644 --- a/Tests/EditMode/LiveKit.EditModeTests.asmdef +++ b/Tests/EditMode/LiveKit.EditModeTests.asmdef @@ -13,7 +13,8 @@ "allowUnsafeCode": false, "overrideReferences": true, "precompiledReferences": [ - "nunit.framework.dll" + "nunit.framework.dll", + "Google.Protobuf.dll" ], "autoReferenced": false, "defineConstraints": [ diff --git a/Tests/EditMode/RoomOptionsTests.cs b/Tests/EditMode/RoomOptionsTests.cs new file mode 100644 index 00000000..5f894435 --- /dev/null +++ b/Tests/EditMode/RoomOptionsTests.cs @@ -0,0 +1,39 @@ +using NUnit.Framework; + +namespace LiveKit.EditModeTests +{ + public class RoomOptionsTests + { + [Test] + public void RTCConfiguration_ToProto_DefaultInstance_DoesNotThrow() + { + var config = new RTCConfiguration(); + Assert.DoesNotThrow(() => config.ToProto()); + } + + [Test] + public void IceServer_ToProto_WithAllFieldsSet_Succeeds() + { + var server = new IceServer + { + Urls = new[] { "stun:stun.example.com:3478" }, + Username = "user", + Password = "pass" + }; + + var proto = server.ToProto(); + + Assert.AreEqual("user", proto.Username); + Assert.AreEqual("pass", proto.Password); + Assert.AreEqual(1, proto.Urls.Count); + Assert.AreEqual("stun:stun.example.com:3478", proto.Urls[0]); + } + + [Test] + public void IceServer_ToProto_WithNullUrls_DoesNotThrow() + { + var server = new IceServer { Username = "u", Password = "p" }; + Assert.DoesNotThrow(() => server.ToProto()); + } + } +} diff --git a/Tests/EditMode/RoomOptionsTests.cs.meta b/Tests/EditMode/RoomOptionsTests.cs.meta new file mode 100644 index 00000000..6725c86a --- /dev/null +++ b/Tests/EditMode/RoomOptionsTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1d83fa28ae6244f298a06ad3c590de1b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: