public void EntityManagerDestructionDetectsUnregisteredJob() { #if !NET_DOTS #if UNITY_DOTSRUNTIME LogAssert.ExpectReset(); #endif LogAssert.Expect(LogType.Error, new System.Text.RegularExpressions.Regex("job is still running")); #endif /*var entity =*/ m_Manager.CreateEntity(typeof(EcsTestData)); var group = m_Manager.CreateEntityQuery(typeof(EcsTestData)); var job = new TestIncrementJob(); job.entities = group.ToEntityArray(Allocator.TempJob); job.data = m_Manager.GetComponentDataFromEntity <EcsTestData>(); var jobHandle = job.Schedule(); // This should detect the unregistered running job & emit the expected error message CleanupWorld(); // Manually complete the job before cleaning up for real jobHandle.Complete(); CleanupWorld(); job.entities.Dispose(); #if !NET_DOTS LogAssert.NoUnexpectedReceived(); #endif }
public void DestroyEntityCompletesScheduledJobs() { var entity = m_Manager.CreateEntity(typeof(EcsTestData)); /*var entity2 =*/ m_Manager.CreateEntity(typeof(EcsTestData)); var group = m_Manager.CreateEntityQuery(typeof(EcsTestData)); var job = new TestIncrementJob(); job.entities = group.ToEntityArray(Allocator.TempJob); job.data = m_Manager.GetComponentDataFromEntity <EcsTestData>(); group.AddDependency(job.Schedule()); m_Manager.DestroyEntity(entity); var componentData = group.ToComponentDataArray <EcsTestData>(Allocator.TempJob); // @TODO: This is maybe a little bit dodgy way of determining if the job has been completed... // Probably should expose api to inspector job debugger state... Assert.AreEqual(1, componentData.Length); Assert.AreEqual(1, componentData[0].value); job.entities.Dispose(); componentData.Dispose(); }
public void ComponentAccessAfterScheduledJobThrows() { var group = m_Manager.CreateEntityQuery(typeof(EcsTestData)); var entity = m_Manager.CreateEntity(typeof(EcsTestData)); m_Manager.SetComponentData(entity, new EcsTestData(42)); var job = new TestIncrementJob(); job.entities = group.ToEntityArray(Allocator.TempJob); job.data = m_Manager.GetComponentDataFromEntity <EcsTestData>(); Assert.AreEqual(42, job.data[job.entities[0]].value); var fence = job.Schedule(); Assert.Throws <System.InvalidOperationException>(() => { var f = job.data[job.entities[0]].value; // ReSharper disable once ReturnValueOfPureMethodIsNotUsed f.GetHashCode(); }); fence.Complete(); Assert.AreEqual(43, job.data[job.entities[0]].value); job.entities.Dispose(); }
public void GetComponentCompletesJob() { var entity = m_Manager.CreateEntity(typeof(EcsTestData)); var group = m_Manager.CreateComponentGroup(typeof(EcsTestData)); var job = new TestIncrementJob(); job.data = group.GetComponentDataArray <EcsTestData>(); group.AddDependency(job.Schedule()); // Implicit Wait for job, returns value after job has completed. Assert.AreEqual(1, m_Manager.GetComponentData <EcsTestData>(entity).value); }
public void EntityManagerDestructionDetectsUnregisteredJob() { LogAssert.Expect(LogType.Error, new System.Text.RegularExpressions.Regex("job is still running")); /*var entity =*/ m_Manager.CreateEntity(typeof(EcsTestData)); var group = m_Manager.CreateComponentGroup(typeof(EcsTestData)); var job = new TestIncrementJob(); job.data = group.GetComponentDataArray <EcsTestData>(); job.Schedule(); TearDown(); }
public void GetComponentDetectsUnregisteredJob() { var entity = m_Manager.CreateEntity(typeof(EcsTestData)); var group = m_Manager.CreateComponentGroup(typeof(EcsTestData)); var job = new TestIncrementJob(); job.data = group.GetComponentDataArray <EcsTestData>(); var jobHandle = job.Schedule(); Assert.Throws <System.InvalidOperationException>(() => { m_Manager.GetComponentData <EcsTestData>(entity); }); jobHandle.Complete(); }
public void GetComponentCompletesJob() { var entity = m_Manager.CreateEntity(typeof(EcsTestData)); var group = m_Manager.CreateEntityQuery(typeof(EcsTestData)); var job = new TestIncrementJob(); job.entities = group.ToEntityArray(Allocator.TempJob); job.data = m_Manager.GetComponentDataFromEntity <EcsTestData>(); group.AddDependency(job.Schedule()); // Implicit Wait for job, returns value after job has completed. Assert.AreEqual(1, m_Manager.GetComponentData <EcsTestData>(entity).value); job.entities.Dispose(); }
public void DestroyEntityDetectsUnregisteredJob() { var entity = m_Manager.CreateEntity(typeof(EcsTestData)); var group = m_Manager.CreateEntityQuery(typeof(EcsTestData)); var job = new TestIncrementJob(); job.entities = group.ToEntityArray(Allocator.TempJob); job.data = m_Manager.GetComponentDataFromEntity <EcsTestData>(); var fence = job.Schedule(); Assert.Throws <System.InvalidOperationException>(() => { m_Manager.DestroyEntity(entity); }); fence.Complete(); job.entities.Dispose(); }
public void EntityManagerDestructionDetectsUnregisteredJob() { #if !UNITY_DOTSPLAYER LogAssert.Expect(LogType.Error, new System.Text.RegularExpressions.Regex("job is still running")); #endif /*var entity =*/ m_Manager.CreateEntity(typeof(EcsTestData)); var group = m_Manager.CreateEntityQuery(typeof(EcsTestData)); var job = new TestIncrementJob(); job.entities = group.ToEntityArray(Allocator.TempJob); job.data = m_Manager.GetComponentDataFromEntity <EcsTestData>(); job.Schedule(); TearDown(); job.entities.Dispose(); }