Files
sbox-public/engine/Sandbox.Test/System/Json/Interfaces.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

64 lines
1.4 KiB
C#

using Sandbox.Internal;
using Sandbox.SceneTests;
namespace TestSystem.JsonTests;
public class Damage : Component
{
[Property] public IDamageable Damageable { get; set; }
}
[Expose]
public interface IDisplay
{
public string Name { get; set; }
public string Description { get; set; }
public Texture Icon { get; set; }
}
[TestClass]
public sealed class InterfaceTests
{
[TestMethod]
public void DeserializeInterfaces()
{
GlobalGameNamespace.TypeLibrary.AddAssembly( typeof( Damage ).Assembly, false );
var scene = Helpers.LoadSceneFromJson( "example.scene",
"""
{
"__guid": "86b89011-9646-4ee7-ad30-c0e11d258674",
"Name": "My Object",
"Enabled": true,
"NetworkMode": 1,
"Components": [
{
"__type": "Prop",
"__guid": "3a83b805-bb2c-47ac-9bfd-d5f7a4af7853",
"__enabled": true
},
{
"__type": "Damage",
"__guid": "9f2a61a8-21b0-487a-8c33-96c8df753cac",
"__enabled": true,
"Damageable": {
"Type": "Component",
"Value": {
"_type": "component",
"component_id": "3a83b805-bb2c-47ac-9bfd-d5f7a4af7853",
"go": "5499ad65-e791-49ec-9f33-fd30cb70e758",
"component_type": "Prop"
}
}
}
]
}
""" );
using var scope = scene.Push();
var damage = scene.Get<Damage>();
Assert.IsTrue( damage.Damageable is not null, "Damage damageable is invalid" );
}
}