using RadicadeServer.RecNet.Rooms; using Xunit; namespace RadicadeServer.Tests; /// /// Tests the scene-location rules behind . The client /// rejects a room-entry response whose "location" isn't a known Unity scene GUID /// ("RecNet room scene contains unknown scene location ID"), so subrooms must never carry /// null/empty/placeholder/non-GUID scene ids. /// public class SceneLocationsTests { [Theory] [InlineData("a75f7547-79eb-47c6-8986-6767abcb4f92")] [InlineData("76d98498-60a1-430c-ab76-b54a29b7a163")] public void IsValid_AcceptsRealSceneGuids(string id) { Assert.True(SceneLocations.IsValid(id)); } [Theory] [InlineData(null)] [InlineData("")] [InlineData(" ")] [InlineData("unknown")] [InlineData("UNKNOWN")] [InlineData("none")] [InlineData("null")] [InlineData("not-a-guid")] public void IsValid_RejectsNullEmptyPlaceholderAndGarbage(string? id) { Assert.False(SceneLocations.IsValid(id)); } [Fact] public void ResolveFallback_PicksFirstValidSibling() { var result = SceneLocations.ResolveFallback( new[] { "unknown", null, "acc06e66-c2d0-4361-b0cd-46246a4c455c" }, isDorm: false); Assert.Equal("acc06e66-c2d0-4361-b0cd-46246a4c455c", result); } [Fact] public void ResolveFallback_UsesDormSceneForDorms() { var result = SceneLocations.ResolveFallback(new string?[] { "unknown", "" }, isDorm: true); Assert.Equal(SceneLocations.Dorm, result); } [Fact] public void ResolveFallback_UsesMakerRoomForNonDorms() { var result = SceneLocations.ResolveFallback(new string?[] { null }, isDorm: false); Assert.Equal(SceneLocations.MakerRoom, result); } }