public void IJobEntityBatch_WithNoBatching_HasCorrectIndices(
            [Values(ScheduleMode.Parallel, ScheduleMode.Single, ScheduleMode.Run, ScheduleMode.RunWithoutJobs)] ScheduleMode scheduleMode)
        {
            var archetypeA = m_Manager.CreateArchetype(typeof(EcsTestData), typeof(EcsTestSharedComp));

            using (var query = m_Manager.CreateEntityQuery(typeof(EcsTestData), typeof(EcsTestSharedComp)))
                using (var entities = m_Manager.CreateEntity(archetypeA, 100, Allocator.TempJob))
                {
                    var val = 0;
                    foreach (var entity in entities)
                    {
                        m_Manager.SetComponentData(entity, new EcsTestData()
                        {
                            value = val
                        });
                        m_Manager.SetSharedComponentData(entity, new EcsTestSharedComp()
                        {
                            value = val
                        });
                        val++;
                    }

                    var job = new CheckBatchIndices {
                        EcsTestDataTypeHandle = EmptySystem.GetComponentTypeHandle <EcsTestData>()
                    };
                    var jobWithIndex = new CheckBatchAndFirstEntityIndices {
                        EcsTestDataTypeHandle = EmptySystem.GetComponentTypeHandle <EcsTestData>()
                    };

                    switch (scheduleMode)
                    {
                    case ScheduleMode.Parallel:
                        job.ScheduleParallel(query).Complete();
                        jobWithIndex.ScheduleParallel(query).Complete();
                        break;

                    case ScheduleMode.Single:
                        job.Schedule(query).Complete();
                        jobWithIndex.Schedule(query).Complete();
                        break;

                    case ScheduleMode.Run:
                        job.Run(query);
                        jobWithIndex.Run(query);
                        break;

                    case ScheduleMode.RunWithoutJobs:
                        JobEntityBatchExtensions.RunWithoutJobs(ref job, query);
                        JobEntityBatchIndexExtensions.RunWithoutJobs(ref jobWithIndex, query);
                        break;
                    }
                }
        }