add more query tests
parent
50974c181a
commit
120fb738d7
|
@ -1238,6 +1238,217 @@ namespace Tests
|
||||||
|
|
||||||
queriedEntities.ToArray().Should().BeEquivalentTo(new Entity[] { entityD });
|
queriedEntities.ToArray().Should().BeEquivalentTo(new Entity[] { entityD });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Reads(typeof(MockComponent))]
|
||||||
|
[WritesPending(typeof(MockComponentB))]
|
||||||
|
[Writes(typeof(MockComponentB), 0)]
|
||||||
|
class AddPendingComponentEngine : Engine
|
||||||
|
{
|
||||||
|
public override void Update(double dt)
|
||||||
|
{
|
||||||
|
foreach (var entity in QueryEntities().With<MockComponent>())
|
||||||
|
{
|
||||||
|
SetComponent(entity, new MockComponentB());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[ReadsPending(typeof(MockComponentB))]
|
||||||
|
class EntityQueryWithPendingComponentsEngine : Engine
|
||||||
|
{
|
||||||
|
private List<Entity> entities;
|
||||||
|
|
||||||
|
public EntityQueryWithPendingComponentsEngine(List<Entity> entities)
|
||||||
|
{
|
||||||
|
this.entities = entities;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Update(double dt)
|
||||||
|
{
|
||||||
|
entities.Clear();
|
||||||
|
|
||||||
|
entities.AddRange(QueryEntities().With<MockComponentB>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void EntitiesWithPendingComponents()
|
||||||
|
{
|
||||||
|
var worldBuilder = new WorldBuilder();
|
||||||
|
|
||||||
|
var entity = worldBuilder.CreateEntity();
|
||||||
|
var entityB = worldBuilder.CreateEntity();
|
||||||
|
|
||||||
|
worldBuilder.SetComponent(entity, new MockComponent());
|
||||||
|
|
||||||
|
var queriedEntities = new List<Entity>();
|
||||||
|
worldBuilder.AddEngine(new AddPendingComponentEngine());
|
||||||
|
worldBuilder.AddEngine(new EntityQueryWithPendingComponentsEngine(queriedEntities));
|
||||||
|
|
||||||
|
var world = worldBuilder.Build();
|
||||||
|
|
||||||
|
world.Update(0.01);
|
||||||
|
|
||||||
|
queriedEntities.ToArray().Should().BeEquivalentTo(new Entity[] { entity });
|
||||||
|
}
|
||||||
|
|
||||||
|
[ReadsPending(typeof(MockComponentB))]
|
||||||
|
class EntityQueryWithoutPendingComponentsEngine : Engine
|
||||||
|
{
|
||||||
|
private List<Entity> entities;
|
||||||
|
|
||||||
|
public EntityQueryWithoutPendingComponentsEngine(List<Entity> entities)
|
||||||
|
{
|
||||||
|
this.entities = entities;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Update(double dt)
|
||||||
|
{
|
||||||
|
entities.Clear();
|
||||||
|
|
||||||
|
entities.AddRange(QueryEntities().Without<MockComponentB>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void EntitiesWithoutPendingComponents()
|
||||||
|
{
|
||||||
|
var worldBuilder = new WorldBuilder();
|
||||||
|
|
||||||
|
var entity = worldBuilder.CreateEntity();
|
||||||
|
var entityB = worldBuilder.CreateEntity();
|
||||||
|
|
||||||
|
worldBuilder.SetComponent(entity, new MockComponent());
|
||||||
|
|
||||||
|
var queriedEntities = new List<Entity>();
|
||||||
|
worldBuilder.AddEngine(new AddPendingComponentEngine());
|
||||||
|
worldBuilder.AddEngine(new EntityQueryWithoutPendingComponentsEngine(queriedEntities));
|
||||||
|
|
||||||
|
var world = worldBuilder.Build();
|
||||||
|
|
||||||
|
world.Update(0.01);
|
||||||
|
|
||||||
|
queriedEntities.ToArray().Should().BeEquivalentTo(new Entity[] { entityB });
|
||||||
|
}
|
||||||
|
|
||||||
|
[Reads(typeof(MockComponentC), typeof(MockComponentD))]
|
||||||
|
[WritesPending(typeof(MockComponent), typeof(MockComponentB))]
|
||||||
|
[Writes(typeof(MockComponent), 0)]
|
||||||
|
[Writes(typeof(MockComponentB), 0)]
|
||||||
|
class ConditionallyAddPendingComponentsEngine : Engine
|
||||||
|
{
|
||||||
|
public override void Update(double dt)
|
||||||
|
{
|
||||||
|
foreach (var entity in QueryEntities().With<MockComponentC>())
|
||||||
|
{
|
||||||
|
SetComponent(entity, new MockComponent());
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var entity in QueryEntities().With<MockComponentD>())
|
||||||
|
{
|
||||||
|
SetComponent(entity, new MockComponent());
|
||||||
|
SetComponent(entity, new MockComponentB());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[ReadsPending(typeof(MockComponent), typeof(MockComponentB))]
|
||||||
|
class EntityQueryWithAndWithoutPendingComponentsEngine : Engine
|
||||||
|
{
|
||||||
|
private List<Entity> entities;
|
||||||
|
|
||||||
|
public EntityQueryWithAndWithoutPendingComponentsEngine(List<Entity> entities)
|
||||||
|
{
|
||||||
|
this.entities = entities;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Update(double dt)
|
||||||
|
{
|
||||||
|
entities.Clear();
|
||||||
|
|
||||||
|
entities.AddRange(QueryEntities().With<MockComponent>().Without<MockComponentB>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void EntitiesWithAndWithoutPendingComponents()
|
||||||
|
{
|
||||||
|
var worldBuilder = new WorldBuilder();
|
||||||
|
|
||||||
|
var entity = worldBuilder.CreateEntity();
|
||||||
|
var entityB = worldBuilder.CreateEntity();
|
||||||
|
var entityC = worldBuilder.CreateEntity();
|
||||||
|
|
||||||
|
worldBuilder.SetComponent(entityB, new MockComponentC());
|
||||||
|
worldBuilder.SetComponent(entityC, new MockComponentD());
|
||||||
|
|
||||||
|
var queriedEntities = new List<Entity>();
|
||||||
|
worldBuilder.AddEngine(new ConditionallyAddPendingComponentsEngine());
|
||||||
|
worldBuilder.AddEngine(new EntityQueryWithAndWithoutPendingComponentsEngine(queriedEntities));
|
||||||
|
|
||||||
|
var world = worldBuilder.Build();
|
||||||
|
|
||||||
|
world.Update(0.01);
|
||||||
|
|
||||||
|
queriedEntities.ToArray().Should().BeEquivalentTo(new Entity[] { entityB });
|
||||||
|
}
|
||||||
|
|
||||||
|
[Reads(typeof(MockComponentC))]
|
||||||
|
[WritesPending(typeof(MockComponentB))]
|
||||||
|
[Writes(typeof(MockComponentB), 0)]
|
||||||
|
class ConditionallyAddPendingComponentEngine : Engine
|
||||||
|
{
|
||||||
|
public override void Update(double dt)
|
||||||
|
{
|
||||||
|
foreach (var entity in QueryEntities().With<MockComponentC>())
|
||||||
|
{
|
||||||
|
SetComponent(entity, new MockComponentB());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[ReadsPending(typeof(MockComponentB))]
|
||||||
|
[Reads(typeof(MockComponent))]
|
||||||
|
class EntityQueryWithPendingAndNonPendingComponents : Engine
|
||||||
|
{
|
||||||
|
private List<Entity> entities;
|
||||||
|
|
||||||
|
public EntityQueryWithPendingAndNonPendingComponents(List<Entity> entities)
|
||||||
|
{
|
||||||
|
this.entities = entities;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Update(double dt)
|
||||||
|
{
|
||||||
|
entities.Clear();
|
||||||
|
|
||||||
|
entities.AddRange(QueryEntities().With<MockComponent>().With<MockComponentB>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void EntitiesWithPendingAndNonPendingComponents()
|
||||||
|
{
|
||||||
|
var worldBuilder = new WorldBuilder();
|
||||||
|
|
||||||
|
var entity = worldBuilder.CreateEntity();
|
||||||
|
var entityB = worldBuilder.CreateEntity();
|
||||||
|
var entityC = worldBuilder.CreateEntity();
|
||||||
|
|
||||||
|
worldBuilder.SetComponent(entityB, new MockComponent());
|
||||||
|
worldBuilder.SetComponent(entityB, new MockComponentC());
|
||||||
|
worldBuilder.SetComponent(entityC, new MockComponentD());
|
||||||
|
|
||||||
|
var queriedEntities = new List<Entity>();
|
||||||
|
worldBuilder.AddEngine(new ConditionallyAddPendingComponentEngine());
|
||||||
|
worldBuilder.AddEngine(new EntityQueryWithPendingAndNonPendingComponents(queriedEntities));
|
||||||
|
|
||||||
|
var world = worldBuilder.Build();
|
||||||
|
|
||||||
|
world.Update(0.01);
|
||||||
|
|
||||||
|
queriedEntities.ToArray().Should().BeEquivalentTo(new Entity[] { entityB });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue