mirror of
https://github.com/JogmansonReal/Radicade.git
synced 2026-10-26 07:29:00 -07:00
62 lines
1.8 KiB
C#
62 lines
1.8 KiB
C#
using RadicadeServer.RecNet.Rooms;
|
|
using Xunit;
|
|
|
|
namespace RadicadeServer.Tests;
|
|
|
|
/// <summary>
|
|
/// Tests the scene-location rules behind <see cref="SubRoom.UnitySceneId"/>. 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.
|
|
/// </summary>
|
|
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);
|
|
}
|
|
}
|