public void IJobEntityBatchWithIndex([Values(1, 4, 17, 100)] int jobsPerChunk)
        {
            var archetype = m_Manager.CreateArchetype(typeof(EcsTestData));
            var query     = m_Manager.CreateEntityQuery(typeof(EcsTestData));

            var entityCount = 100;
            var expectedEntitiesPerBatch = entityCount / jobsPerChunk;

            var entities = m_Manager.CreateEntity(archetype, entityCount, Allocator.Temp);
            var job      = new WriteEntityIndex
            {
                EcsTestTypeHandle = m_Manager.GetComponentTypeHandle <EcsTestData>(false)
            };

            job.ScheduleParallel(query, jobsPerChunk).Complete();

            for (int batchIndex = 0; batchIndex < jobsPerChunk; ++batchIndex)
            {
                ArchetypeChunk.CalculateBatchSizeAndStartIndex(entityCount, jobsPerChunk, batchIndex, out var batchCount, out var startIndex);

                Assert.AreEqual(startIndex, m_Manager.GetComponentData <EcsTestData>(entities[startIndex]).value);
            }

            query.Dispose();
        }
        public void IJobEntityBatchRunWithIndexWithoutDependency_Throws()
        {
            var archetype = m_Manager.CreateArchetype(typeof(EcsTestData));

            using (var query = m_Manager.CreateEntityQuery(typeof(EcsTestData)))
            {
                var entityCount = 100;
                m_Manager.CreateEntity(archetype, entityCount);
                var job = new WriteEntityIndex
                {
                    EcsTestTypeHandle = m_Manager.GetComponentTypeHandle <EcsTestData>(false)
                };
                var handle = job.Schedule(query);
                Assert.Throws <InvalidOperationException>(() => { job.Run(query); });
                handle.Complete();
            }
        }
        public void IJobEntityBatchWithIndex_Run()
        {
            var archetype = m_Manager.CreateArchetype(typeof(EcsTestData));

            using (var query = m_Manager.CreateEntityQuery(typeof(EcsTestData)))
            {
                var entityCount = 100;
                m_Manager.CreateEntity(archetype, entityCount);
                Assert.DoesNotThrow(() =>
                {
                    var job = new WriteEntityIndex
                    {
                        EcsTestTypeHandle = m_Manager.GetComponentTypeHandle <EcsTestData>(false)
                    };
                    job.Run(query);
                });
            }
        }