feat: basic universe object tests
This commit is contained in:
parent
d0aee7fe16
commit
22b3a342a8
272
Engine.Tests/Core/UniverseObject_Tests.cs
Normal file
272
Engine.Tests/Core/UniverseObject_Tests.cs
Normal file
@ -0,0 +1,272 @@
|
|||||||
|
using Syntriax.Engine.Core;
|
||||||
|
|
||||||
|
namespace Engine.Tests;
|
||||||
|
|
||||||
|
public class UniverseObject_Tests
|
||||||
|
{
|
||||||
|
private static IUniverseObject CreateUniverseObject()
|
||||||
|
{
|
||||||
|
UniverseObject universeObject = new();
|
||||||
|
BehaviourController behaviourController = new();
|
||||||
|
|
||||||
|
universeObject.Assign(new StateEnable());
|
||||||
|
|
||||||
|
behaviourController.Assign(new StateEnable());
|
||||||
|
behaviourController.StateEnable.Assign(behaviourController);
|
||||||
|
|
||||||
|
behaviourController.Assign(universeObject);
|
||||||
|
universeObject.Assign(behaviourController);
|
||||||
|
|
||||||
|
universeObject.Initialize();
|
||||||
|
behaviourController.Initialize();
|
||||||
|
|
||||||
|
return universeObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AddChildren()
|
||||||
|
{
|
||||||
|
IUniverseObject parentUO = CreateUniverseObject();
|
||||||
|
IUniverseObject childUO = CreateUniverseObject();
|
||||||
|
|
||||||
|
parentUO.AddChild(childUO);
|
||||||
|
Assert.NotEmpty(parentUO.Children);
|
||||||
|
Assert.Equal(parentUO.Children[0], childUO);
|
||||||
|
Assert.Equal(childUO.Parent, parentUO);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void RemoveChildren()
|
||||||
|
{
|
||||||
|
IUniverseObject parentUO = CreateUniverseObject();
|
||||||
|
IUniverseObject childUO = CreateUniverseObject();
|
||||||
|
|
||||||
|
parentUO.AddChild(childUO);
|
||||||
|
Assert.NotEmpty(parentUO.Children);
|
||||||
|
Assert.Contains(childUO, parentUO.Children);
|
||||||
|
Assert.Equal(childUO.Parent, parentUO);
|
||||||
|
|
||||||
|
parentUO.RemoveChild(childUO);
|
||||||
|
Assert.Empty(parentUO.Children);
|
||||||
|
Assert.Null(childUO.Parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void SetParentValue()
|
||||||
|
{
|
||||||
|
IUniverseObject parentUO = CreateUniverseObject();
|
||||||
|
IUniverseObject childUO = CreateUniverseObject();
|
||||||
|
|
||||||
|
childUO.Parent = parentUO;
|
||||||
|
Assert.Contains(childUO, parentUO.Children);
|
||||||
|
Assert.Equal(childUO.Parent, parentUO);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void SetParentNull()
|
||||||
|
{
|
||||||
|
IUniverseObject parentUO = CreateUniverseObject();
|
||||||
|
IUniverseObject childUO = CreateUniverseObject();
|
||||||
|
|
||||||
|
parentUO.AddChild(childUO);
|
||||||
|
|
||||||
|
childUO.Parent = null;
|
||||||
|
Assert.Empty(parentUO.Children);
|
||||||
|
Assert.Null(childUO.Parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AddChildrenEvents()
|
||||||
|
{
|
||||||
|
IUniverseObject parentUO = CreateUniverseObject();
|
||||||
|
IUniverseObject childUO = CreateUniverseObject();
|
||||||
|
|
||||||
|
IUniverseObject? sender = null;
|
||||||
|
IUniverseObject.ChildrenAddedArguments? arguments = null;
|
||||||
|
|
||||||
|
parentUO.OnChildrenAdded.AddListener((s, a) =>
|
||||||
|
{
|
||||||
|
sender = s;
|
||||||
|
arguments = a;
|
||||||
|
});
|
||||||
|
|
||||||
|
parentUO.AddChild(childUO);
|
||||||
|
Assert.NotNull(sender);
|
||||||
|
Assert.NotNull(arguments);
|
||||||
|
Assert.Equal(parentUO, sender);
|
||||||
|
Assert.Equal(childUO, arguments.Value.ChildrenAdded);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void RemoveChildrenEvents()
|
||||||
|
{
|
||||||
|
IUniverseObject parentUO = CreateUniverseObject();
|
||||||
|
IUniverseObject childUO = CreateUniverseObject();
|
||||||
|
|
||||||
|
IUniverseObject? sender = null;
|
||||||
|
IUniverseObject.ChildrenRemovedArguments? arguments = null;
|
||||||
|
|
||||||
|
parentUO.AddChild(childUO);
|
||||||
|
|
||||||
|
parentUO.OnChildrenRemoved.AddListener((s, a) =>
|
||||||
|
{
|
||||||
|
sender = s;
|
||||||
|
arguments = a;
|
||||||
|
});
|
||||||
|
|
||||||
|
parentUO.RemoveChild(childUO);
|
||||||
|
|
||||||
|
Assert.NotNull(sender);
|
||||||
|
Assert.NotNull(arguments);
|
||||||
|
Assert.Equal(parentUO, sender);
|
||||||
|
Assert.Equal(childUO, arguments.Value.ChildrenRemoved);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void SetParentEvents()
|
||||||
|
{
|
||||||
|
IUniverseObject parentUO = CreateUniverseObject();
|
||||||
|
IUniverseObject childUO = CreateUniverseObject();
|
||||||
|
|
||||||
|
IUniverseObject? sender = null;
|
||||||
|
IUniverseObject.ParentChangedArguments? arguments = null;
|
||||||
|
|
||||||
|
childUO.OnParentChanged.AddListener((s, a) =>
|
||||||
|
{
|
||||||
|
sender = s;
|
||||||
|
arguments = a;
|
||||||
|
});
|
||||||
|
|
||||||
|
childUO.Parent = parentUO;
|
||||||
|
|
||||||
|
Assert.NotNull(sender);
|
||||||
|
Assert.NotNull(arguments);
|
||||||
|
Assert.Equal(childUO, sender);
|
||||||
|
Assert.Null(arguments.Value.PreviousParent);
|
||||||
|
Assert.Equal(parentUO, arguments.Value.CurrentParent);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void UnsetParentEvents()
|
||||||
|
{
|
||||||
|
IUniverseObject parentUO = CreateUniverseObject();
|
||||||
|
IUniverseObject childUO = CreateUniverseObject();
|
||||||
|
|
||||||
|
IUniverseObject? sender = null;
|
||||||
|
IUniverseObject.ParentChangedArguments? arguments = null;
|
||||||
|
|
||||||
|
childUO.Parent = parentUO;
|
||||||
|
|
||||||
|
childUO.OnParentChanged.AddListener((s, a) =>
|
||||||
|
{
|
||||||
|
sender = s;
|
||||||
|
arguments = a;
|
||||||
|
});
|
||||||
|
|
||||||
|
childUO.Parent = null;
|
||||||
|
|
||||||
|
Assert.NotNull(sender);
|
||||||
|
Assert.NotNull(arguments);
|
||||||
|
Assert.Equal(childUO, sender);
|
||||||
|
Assert.Equal(parentUO, arguments.Value.PreviousParent);
|
||||||
|
Assert.Null(arguments.Value.CurrentParent);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Active()
|
||||||
|
{
|
||||||
|
IUniverseObject universeObject = CreateUniverseObject();
|
||||||
|
universeObject.StateEnable.Enabled = true;
|
||||||
|
|
||||||
|
Assert.True(universeObject.IsActive);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void NotActiveWhenDisabled()
|
||||||
|
{
|
||||||
|
IUniverseObject universeObject = CreateUniverseObject();
|
||||||
|
universeObject.StateEnable.Enabled = false;
|
||||||
|
|
||||||
|
Assert.False(universeObject.IsActive);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ActiveEvents()
|
||||||
|
{
|
||||||
|
IUniverseObject universeObject = CreateUniverseObject();
|
||||||
|
universeObject.StateEnable.Enabled = true;
|
||||||
|
|
||||||
|
IActive? sender = null;
|
||||||
|
IActive.ActiveChangedArguments? arguments = null;
|
||||||
|
|
||||||
|
universeObject.OnActiveChanged.AddListener((s, a) =>
|
||||||
|
{
|
||||||
|
sender = s;
|
||||||
|
arguments = a;
|
||||||
|
});
|
||||||
|
|
||||||
|
universeObject.StateEnable.Enabled = false;
|
||||||
|
|
||||||
|
Assert.NotNull(sender);
|
||||||
|
Assert.NotNull(arguments);
|
||||||
|
|
||||||
|
Assert.False(universeObject.IsActive);
|
||||||
|
Assert.True(arguments.Value.PreviousState);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void NotActiveEvents()
|
||||||
|
{
|
||||||
|
IUniverseObject universeObject = CreateUniverseObject();
|
||||||
|
universeObject.StateEnable.Enabled = false;
|
||||||
|
|
||||||
|
IActive? sender = null;
|
||||||
|
IActive.ActiveChangedArguments? arguments = null;
|
||||||
|
|
||||||
|
universeObject.OnActiveChanged.AddListener((s, a) =>
|
||||||
|
{
|
||||||
|
sender = s;
|
||||||
|
arguments = a;
|
||||||
|
});
|
||||||
|
|
||||||
|
universeObject.StateEnable.Enabled = true;
|
||||||
|
|
||||||
|
Assert.NotNull(sender);
|
||||||
|
Assert.NotNull(arguments);
|
||||||
|
|
||||||
|
Assert.True(universeObject.IsActive);
|
||||||
|
Assert.False(arguments.Value.PreviousState);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void SetName()
|
||||||
|
{
|
||||||
|
IUniverseObject universeObject = CreateUniverseObject();
|
||||||
|
universeObject.Name = "Test";
|
||||||
|
Assert.Equal("Test", universeObject.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void SetNameEvents()
|
||||||
|
{
|
||||||
|
IUniverseObject universeObject = CreateUniverseObject();
|
||||||
|
universeObject.Name = "Previous";
|
||||||
|
|
||||||
|
INameable? sender = null;
|
||||||
|
INameable.NameChangedArguments? arguments = null;
|
||||||
|
|
||||||
|
universeObject.OnNameChanged.AddListener((s, a) =>
|
||||||
|
{
|
||||||
|
sender = s;
|
||||||
|
arguments = a;
|
||||||
|
});
|
||||||
|
|
||||||
|
universeObject.Name = "Test";
|
||||||
|
|
||||||
|
Assert.NotNull(sender);
|
||||||
|
Assert.NotNull(arguments);
|
||||||
|
|
||||||
|
Assert.Equal("Test", universeObject.Name);
|
||||||
|
Assert.Equal("Previous", arguments.Value.PreviousName);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user