using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnitTestSharp; namespace Foundations.UnitTests { public class CooperativeThreadedLoopManagerTests : TestFixture { public void DoesNotRunSimulationBeforeIterate() { bool ran = false; var manager = new CooperativeThreadedLoopManager(); manager.StartSimulation(() => { ran = true; return true; }); CheckFalse(ran); } public void RunsSimulationDuringIterate() { bool ran = false; var manager = new CooperativeThreadedLoopManager(); manager.StartSimulation(() => { ran = true; return true; }); manager.IterateSimulation(); Check(ran); } public void DoesNotRunRenderBeforeIterate() { bool ran = false; var manager = new CooperativeThreadedLoopManager(); manager.StartRender(() => { ran = true; return true; }); CheckFalse(ran); } public void RunsRenderDuringIterate() { bool ran = false; var manager = new CooperativeThreadedLoopManager(); manager.StartRender(() => { ran = true; return true; }); manager.IterateRender(); Check(ran); } public void DoesNotRunDrawBeforeIterate() { bool ran = false; var manager = new CooperativeThreadedLoopManager(); manager.StartDraw(() => { ran = true; return true; }); CheckFalse(ran); } public void RunsDrawDuringIterate() { bool ran = false; var manager = new CooperativeThreadedLoopManager(); manager.StartDraw(() => { ran = true; return true; }); manager.IterateDraw(); Check(ran); } public void CannotCallStartSimulationMultipleTimes() { var manager = new CooperativeThreadedLoopManager(); manager.StartSimulation(() => true); CheckThrow(typeof(InvalidOperationException)); manager.StartSimulation(() => true); } public void CannotCallStartRenderMultipleTimes() { var manager = new CooperativeThreadedLoopManager(); manager.StartRender(() => true); CheckThrow(typeof(InvalidOperationException)); manager.StartRender(() => true); } public void CannotCallStartDrawMultipleTimes() { var manager = new CooperativeThreadedLoopManager(); manager.StartDraw(() => true); CheckThrow(typeof(InvalidOperationException)); manager.StartDraw(() => true); } public void CannotIterateSimulationAfterDispose() { var manager = new CooperativeThreadedLoopManager(); manager.StartSimulation(() => true); manager.Dispose(); CheckThrow(typeof(InvalidOperationException)); manager.IterateSimulation(); } public void CannotIterateRenderAfterDispose() { var manager = new CooperativeThreadedLoopManager(); manager.StartRender(() => true); manager.Dispose(); CheckThrow(typeof(InvalidOperationException)); manager.IterateRender(); } public void CannotIterateDrawAfterDispose() { var manager = new CooperativeThreadedLoopManager(); manager.StartDraw(() => true); manager.Dispose(); CheckThrow(typeof(InvalidOperationException)); manager.IterateDraw(); } public void CannotIterateSimulationBeforeStarting() { var manager = new CooperativeThreadedLoopManager(); CheckThrow(typeof(InvalidOperationException)); manager.IterateSimulation(); } public void CannotIterateRenderBeforeStarting() { var manager = new CooperativeThreadedLoopManager(); CheckThrow(typeof(InvalidOperationException)); manager.IterateRender(); } public void CannotIterateDrawBeforeStarting() { var manager = new CooperativeThreadedLoopManager(); CheckThrow(typeof(InvalidOperationException)); manager.IterateDraw(); } } }