public void DisposeOnCompletion_WithStructuralChanges_Disposes()
        {
            m_Manager.CreateEntity(typeof(EcsTestFloatData));
            var c = new SupportsDisposeOnCompletion(Allocator.Temp);

            try
            {
                Assert.DoesNotThrow(() => TestSystem.DisposeOnCompletion_WithStructuralChanges(c));
                Assert.IsTrue(c.HasBeenDisposed(), "Dispose has not been called");
            }
            finally
            {
                c.Release();
            }
        }
        public void DisposeOnCompletion_DisposesAtEnd([Values] ScheduleType scheduleType)
        {
            m_Manager.CreateEntity(typeof(EcsTestFloatData));
            var c = new SupportsDisposeOnCompletion(Allocator.Temp);

            try
            {
                Assert.DoesNotThrow(() => TestSystem.DisposeOnCompletion(c, scheduleType));
                Assert.IsTrue(c.HasBeenDisposed(), "Dispose has not been called");
            }
            finally
            {
                c.Release();
            }
        }
            public void DisposeOnCompletion(SupportsDisposeOnCompletion c, ScheduleType scheduleType)
            {
                switch (scheduleType)
                {
                case ScheduleType.Run:
                    Entities.WithDisposeOnCompletion(c).ForEach((ref EcsTestFloatData _) => { c.CheckCanRead(); }).Run();
                    break;

                case ScheduleType.Schedule:
                    Entities.WithDisposeOnCompletion(c).ForEach((ref EcsTestFloatData _) => { c.CheckCanRead(); }).Schedule(default).Complete();
                    break;

                case ScheduleType.ScheduleParallel:
                    Entities.WithReadOnly(c).WithDisposeOnCompletion(c).ForEach((ref EcsTestFloatData _) => { c.CheckCanRead(); }).ScheduleParallel(default).Complete();
                    break;
                }
            }
 public void DisposeOnCompletion_WithStructuralChanges(SupportsDisposeOnCompletion c)
 {
     Entities.WithStructuralChanges().WithDisposeOnCompletion(c).ForEach((ref EcsTestFloatData _) => { c.CheckCanRead(); }).Run();
 }