Files
sbox-public/engine/Sandbox.Test/Scene/UI/ScenePanelTests.cs
Carson Kompon 0e68d1b9f7 Fix hotloading completely resetting ScenePanels (#4462)
- Fix hotloading breaking ScenePanels
- `ScenePanel.Scene` setter now handles cleanup and will make sure re-assigning the same scene instance doessn't break anything
- Add tests
2026-04-14 07:13:03 -04:00

70 lines
1.4 KiB
C#

using Sandbox;
using Sandbox.UI;
namespace UI;
[TestClass]
public class ScenePanelTests
{
[TestMethod]
public void Delete_DestroysOwnedScene()
{
var panel = new ScenePanel();
var ownedScene = panel.RenderScene;
Assert.IsTrue( ownedScene.IsValid() );
panel.Delete();
Assert.IsFalse( ownedScene.IsValid() );
}
[TestMethod]
public void Delete_DoesNotDestroyExternalScene()
{
var panel = new ScenePanel();
var externalScene = new Scene();
panel.RenderScene = externalScene;
panel.Delete();
Assert.IsTrue( externalScene.IsValid() );
externalScene.Destroy();
}
[TestMethod]
public void SetRenderScene_DestroysOwnedSceneWhenReplaced()
{
var panel = new ScenePanel();
var ownedScene = panel.RenderScene;
Assert.IsTrue( ownedScene.IsValid() );
var externalScene = new Scene();
panel.RenderScene = externalScene;
Assert.IsFalse( ownedScene.IsValid() );
Assert.IsTrue( externalScene.IsValid() );
Assert.AreSame( externalScene, panel.RenderScene );
panel.Delete();
externalScene.Destroy();
}
[TestMethod]
public void SetRenderScene_SameInstancePreservesOwnership()
{
var panel = new ScenePanel();
var ownedScene = panel.RenderScene;
// Re-assign the same scene (usually happens on hotload)
panel.RenderScene = ownedScene;
// Ownership should be preserved (so Delete() should destroy it here)
panel.Delete();
Assert.IsFalse( ownedScene.IsValid() );
}
}