public async Task PropagateTestAsync(string type, int x, int y, int expectedCount) { var propagator = new PropagateManager(PropagateManager.DefaultNeighborsGetter); var drops = new Dictionary <WaterDrop, PointInt> { { new WaterDrop(0.1), new PointInt(x, y) } }; var newDrops = await propagator.PropagateAsync(_maps[type], drops); Assert.Equal(expectedCount, newDrops.Count); }
public void PropagateToPitSpeedTest() { var propagator = new PropagateManager(PropagateManager.DefaultNeighborsGetter); var drops = new Dictionary <WaterDrop, PointInt> { { new WaterDrop(0.1), new PointInt(1, 2) } }; var newDrop = propagator.Propagate(_maps["pit"], drops).Single().Key; Assert.True(newDrop.Speed.Length > 0); Assert.True(Vector.IsCollinear(newDrop.Speed, new Vector(1, 0))); }
public async Task StepAsync() { var propagator = new PropagateManager(PropagateManager.DefaultNeighborsGetter); var merger = new MergeManager(); var absorber = new AbsorptionManager(AbsorptionManager.DefaultAbsorbtion); var context = new WaterContext(Maps["plato"], propagator, merger, absorber); for (var i = 0; i < 10; i++) { await context.StepAsync(); } }
public async Task PropagateAsyncCancelTest() { var propagator = new PropagateManager(PropagateManager.DefaultNeighborsGetter); var drops = new Dictionary <WaterDrop, PointInt> { { new WaterDrop(0.1), new PointInt(2, 2) } }; var cts = new CancellationTokenSource(); cts.Cancel(); await Assert.ThrowsAnyAsync <OperationCanceledException>(() => propagator.PropagateAsync(_maps["plato"], drops, cts.Token)); }