public void NotEnoughSpaceForPlanetsCausesException(int size, int planets, int minDistance) { var generator = new GalaxyGenerator(); var settings = new GalaxyGeneratorSettings() { GalaxySize = size, PlanetCount = planets, MinimumDistanceBetweenPlanets = minDistance, }; Assert.Throws <OutOfSpaceException>(() => generator.Generate(settings)); }
public void EachPlanetHasADistinctPosition() { var generator = new GalaxyGenerator(); var settings = new GalaxyGeneratorSettings() { GalaxySize = 800, PlanetCount = 100, }; var galaxy = generator.Generate(settings); Assert.Equal(galaxy.Planets.Count, galaxy.Planets.Select(planet => planet.Position).Distinct().Count()); }
public void GalaxyHasCorrectSize(int size) { var generator = new GalaxyGenerator(); var settings = new GalaxyGeneratorSettings() { GalaxySize = size, PlanetCount = 0, }; var galaxy = generator.Generate(settings); Assert.Equal(size, galaxy.Bounds.Size); }
public void GalaxyHasCorrectNumberOfPlanets(int planets) { var generator = new GalaxyGenerator(); var settings = new GalaxyGeneratorSettings() { GalaxySize = 1000, PlanetCount = planets, }; var galaxy = generator.Generate(settings); Assert.Equal(planets, galaxy.Planets.Count); }
public void MinDistanceBetweenPlanetsIsValid(int size, int planets, int minDistance) { var generator = new GalaxyGenerator(); var settings = new GalaxyGeneratorSettings() { GalaxySize = size, PlanetCount = planets, MinimumDistanceBetweenPlanets = minDistance }; var galaxy = generator.Generate(settings); Assert.All(galaxy.Planets, planet => Assert.True(MinDistanceKept(planet))); bool PassesSocialDistancingRule(Planet p1, Planet p2) => p1 != p2?p1.Position.DistanceTo(p2.Position) >= minDistance : true; bool MinDistanceKept(Planet planet) => galaxy.Planets.All(otherPlanet => PassesSocialDistancingRule(planet, otherPlanet)); }
public void PlanetsHaveValidPositions(int size, int planets, int padding) { var generator = new GalaxyGenerator(); var settings = new GalaxyGeneratorSettings() { GalaxySize = size, PlanetCount = planets, Padding = padding, }; var galaxy = generator.Generate(settings); var bounds = new GalaxyBounds(size); var min = bounds.Min + padding; var max = bounds.Max - padding; Assert.All(galaxy.Planets, planet => Assert.True(PointInRange(planet.Position))); bool CoordInRange(int coord) => coord >= min && coord <= max; bool PointInRange(Position position) => CoordInRange(position.X) && CoordInRange(position.Y);; }