您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
176 行
6.4 KiB
176 行
6.4 KiB
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using NUnit.Framework;
|
|
using Unity.Entities.Tests;
|
|
using UnityEditor.IMGUI.Controls;
|
|
|
|
namespace Unity.Entities.Editor.Tests
|
|
{
|
|
public class ListViewTests : ECSTestsFixture
|
|
{
|
|
private static void SetEntitySelection(Entity s)
|
|
{
|
|
}
|
|
|
|
private World GetWorldSelection()
|
|
{
|
|
return World.Active;
|
|
}
|
|
|
|
private static void SetComponentGroupSelection(EntityListQuery query)
|
|
{
|
|
}
|
|
|
|
private static void SetSystemSelection(ScriptBehaviourManager system, World world)
|
|
{
|
|
}
|
|
|
|
private EntityListQuery AllQuery => new EntityListQuery(new EntityArchetypeQuery(){All = new ComponentType[0], Any = new ComponentType[0], None = new ComponentType[0]});
|
|
|
|
private World World2;
|
|
|
|
public override void Setup()
|
|
{
|
|
base.Setup();
|
|
|
|
World2 = new World("Test World 2");
|
|
|
|
World2.GetOrCreateManager<EntityManager>();
|
|
World2.GetOrCreateManager<EmptySystem>();
|
|
|
|
ScriptBehaviourUpdateOrder.UpdatePlayerLoop(World.AllWorlds.ToArray());
|
|
}
|
|
|
|
public override void TearDown()
|
|
{
|
|
World2.Dispose();
|
|
World2 = null;
|
|
|
|
base.TearDown();
|
|
|
|
ScriptBehaviourUpdateOrder.UpdatePlayerLoop(World.Active);
|
|
}
|
|
|
|
[Test]
|
|
public void EntityListView_ShowNothingWithoutWorld()
|
|
{
|
|
m_Manager.CreateEntity();
|
|
var emptySystem = World.Active.GetOrCreateManager<EmptySystem>();
|
|
ScriptBehaviourManager currentSystem = null;
|
|
|
|
using (var listView = new EntityListView(new TreeViewState(), null, SetEntitySelection, () => null,
|
|
() => currentSystem))
|
|
{
|
|
currentSystem = World.Active.GetExistingManager<EntityManager>();
|
|
listView.SelectedEntityQuery = null;
|
|
Assert.IsFalse(listView.ShowingSomething);
|
|
|
|
currentSystem = emptySystem;
|
|
listView.SelectedEntityQuery = null;
|
|
Assert.IsFalse(listView.ShowingSomething);
|
|
|
|
currentSystem = null;
|
|
listView.SelectedEntityQuery = null;
|
|
Assert.IsFalse(listView.ShowingSomething);
|
|
|
|
currentSystem = null;
|
|
listView.SelectedEntityQuery = AllQuery;
|
|
Assert.IsFalse(listView.ShowingSomething);
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void EntityListView_ShowEntitiesFromWorld()
|
|
{
|
|
m_Manager.CreateEntity();
|
|
var emptySystem = World.Active.GetOrCreateManager<EmptySystem>();
|
|
var selectedWorld = World.Active;
|
|
ScriptBehaviourManager currentSystem = null;
|
|
|
|
using (var listView = new EntityListView(new TreeViewState(), null, SetEntitySelection, () => selectedWorld,
|
|
() => currentSystem))
|
|
{
|
|
currentSystem = World.Active.GetExistingManager<EntityManager>();
|
|
listView.SelectedEntityQuery = AllQuery;
|
|
Assert.IsTrue(listView.ShowingSomething);
|
|
Assert.AreEqual(1, listView.GetRows().Count);
|
|
|
|
currentSystem = World.Active.GetExistingManager<EntityManager>();
|
|
listView.SelectedEntityQuery = null;
|
|
Assert.IsTrue(listView.ShowingSomething);
|
|
Assert.AreEqual(1, listView.GetRows().Count);
|
|
|
|
currentSystem = emptySystem;
|
|
listView.SelectedEntityQuery = null;
|
|
Assert.IsFalse(listView.ShowingSomething);
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void ComponentGroupListView_CanSetNullSystem()
|
|
{
|
|
var listView = new ComponentGroupListView(new TreeViewState(), EmptySystem, SetComponentGroupSelection, GetWorldSelection);
|
|
|
|
Assert.DoesNotThrow(() => listView.SelectedSystem = null);
|
|
}
|
|
|
|
[Test]
|
|
public void ComponentGroupListView_SortOrderExpected()
|
|
{
|
|
var typeList = new List<ComponentType>();
|
|
var subtractive = ComponentType.Subtractive<EcsTestData>();
|
|
var readWrite = ComponentType.Create<EcsTestData2>();
|
|
var readOnly = ComponentType.ReadOnly<EcsTestData3>();
|
|
|
|
typeList.Add(subtractive);
|
|
typeList.Add(readOnly);
|
|
typeList.Add(readWrite);
|
|
typeList.Sort(ComponentGroupGUI.CompareTypes);
|
|
|
|
Assert.AreEqual(readOnly, typeList[0]);
|
|
Assert.AreEqual(readWrite, typeList[1]);
|
|
Assert.AreEqual(subtractive, typeList[2]);
|
|
}
|
|
|
|
[Test]
|
|
public void SystemListView_CanCreateWithNullWorld()
|
|
{
|
|
SystemListView listView;
|
|
var states = new List<TreeViewState>();
|
|
var stateNames = new List<string>();
|
|
Assert.DoesNotThrow(() =>
|
|
{
|
|
listView = SystemListView.CreateList(states, stateNames, SetSystemSelection, () => null);
|
|
listView.Reload();
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void SystemListView_ShowExactlyWorldSystems()
|
|
{
|
|
var listView = new SystemListView(
|
|
new TreeViewState(),
|
|
new MultiColumnHeader(SystemListView.GetHeaderState()),
|
|
(manager, world) => { },
|
|
() => World.Active);
|
|
var managerItems = listView.GetRows().Where(x => listView.managersById.ContainsKey(x.id)).Select(x => listView.managersById[x.id]);
|
|
Assert.AreEqual(World.Active.BehaviourManagers.Count(), managerItems.Intersect(World.Active.BehaviourManagers).Count());
|
|
}
|
|
|
|
[Test]
|
|
public void SystemListView_NullWorldShowsAllSystems()
|
|
{
|
|
var listView = new SystemListView(
|
|
new TreeViewState(),
|
|
new MultiColumnHeader(SystemListView.GetHeaderState()),
|
|
(manager, world) => { },
|
|
() => null);
|
|
var managerItems = listView.GetRows().Where(x => listView.managersById.ContainsKey(x.id)).Select(x => listView.managersById[x.id]);
|
|
var allManagers = new List<ScriptBehaviourManager>();
|
|
foreach (var world in World.AllWorlds)
|
|
allManagers.AddRange(world.BehaviourManagers);
|
|
Assert.AreEqual(allManagers.Count, allManagers.Intersect(managerItems).Count());
|
|
}
|
|
|
|
}
|
|
}
|