Exemplo n.º 1
0
        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
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        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();
        }
Exemplo n.º 9
0
        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();
        }