public async Task OneCloserOther() { /* * |<------15------>| |<---10--->| |<---10--->| * o-----(----)-----o * */ // taken 2 closed cells with 0 speed. var universe = new Universe(); var cell = new Cell(universe); var one = new CellPart(universe, cell) { X = 500, Y = 100, _Mass = MassFromRadius(10) }; var other = new CellPart(universe, cell) { X = 515, Y = 100, _Mass = MassFromRadius(10) }; var initialXdistance = Math.Abs(one.X - other.X); cell.Add(one); cell.Add(other); // After Tic await one.Tic(0); var finalXdistance1 = Math.Abs(one.X - other.X); await other.Tic(0); var finalXdistance2 = Math.Abs(one.X - other.X); // Distance should increase Assert.True(ElementsHelper.Collides(one, other)); Assert.True(finalXdistance1 > initialXdistance); Assert.True(finalXdistance2 > finalXdistance1); }
public async Task CheckSplit() { /* * |<-----1000mass->| * o----------------) * */ // taken 2 closed cells with 0 speed. var universe = new Universe(); var cell = new Cell(universe); var one = new CellPart(universe, cell) { X = 500, Y = 100, _Mass = 1000, }; cell.PointTo(0, 0); cell.Add(one); // After Split for 4 times cell.Split(); await Task.WhenAll(cell.Select(c => c.Tic(0))); cell.Split(); await Task.WhenAll(cell.Select(c => c.Tic(0))); cell.Split(); await Task.WhenAll(cell.Select(c => c.Tic(0))); // Distance should increase Assert.Equal(8, cell.Count); Assert.All <CellPart>(cell, c => Assert.True(c.X > 300 && c.X < 505)); }