using System; using Sandbox.Internal; namespace SceneTests.GameObjects; /// /// Pins how deserialization behaves with bad input: a prefab instance referencing /// a missing prefab warns and degrades instead of crashing. /// [TestClass] public class SerializeRobustnessTest { /// /// A prefab instance referencing a prefab that doesn't exist warns and degrades /// instead of throwing. /// [TestMethod] public void MissingPrefabWarnsInsteadOfThrowing() { var scene = new Scene(); using var sceneScope = scene.Push(); var json = Json.ParseToJsonObject( $$""" { "__guid": "{{Guid.NewGuid()}}", "Name": "Ghost", "__Prefab": "prefabs/does_not_exist.prefab" } """ ); var go = new GameObject(); go.Deserialize( json ); Assert.IsTrue( go.IsValid() ); } }