public void GenerateSites_With100x75Map200Points_SitesKeepDistance() { var generator = new EvenlySpreadSiteGenerator(); var result = generator.GenerateSites(100, 75, 200); foreach (var site in result) { foreach (var other in result.Where(s => s != site)) { var distance = site.Point.CalculateDistance(other.Point); Assert.LessOrEqual(2, distance, $"Distance of {site} and {other} is too close"); } } }
public void TestGenerateSites_10_6_9() { const int quantity = 9; var siteGenerator = new EvenlySpreadSiteGenerator(); var result = siteGenerator.GenerateSites(36, 27, quantity).ToList(); Assert.AreEqual(quantity, result.Count); Assert.IsTrue(result[0].Point.X >= 0 && result[0].Point.X <= 12, result[0].Point.X.ToString(CultureInfo.InvariantCulture)); Assert.IsTrue(result[0].Point.Y >= 0 && result[0].Point.Y <= 9, result[0].Point.Y.ToString(CultureInfo.InvariantCulture)); Assert.IsTrue(result[1].Point.X >= 0 && result[1].Point.X <= 12, result[1].Point.X.ToString(CultureInfo.InvariantCulture)); Assert.IsTrue(result[1].Point.Y >= 9 && result[1].Point.Y <= 18, result[1].Point.Y.ToString(CultureInfo.InvariantCulture)); Assert.IsTrue(result[2].Point.X >= 0 && result[2].Point.X <= 12); Assert.IsTrue(result[2].Point.Y >= 18 && result[2].Point.Y <= 27); Assert.IsTrue(result[3].Point.X >= 12 && result[3].Point.X <= 24); Assert.IsTrue(result[3].Point.Y >= 0 && result[0].Point.Y <= 9, result[0].Point.Y.ToString(CultureInfo.InvariantCulture)); Assert.IsTrue(result[4].Point.X >= 12 && result[4].Point.X <= 24); Assert.IsTrue(result[4].Point.Y >= 9 && result[4].Point.Y <= 18); Assert.IsTrue(result[5].Point.X >= 12 && result[5].Point.X <= 24); Assert.IsTrue(result[5].Point.Y >= 18 && result[5].Point.Y <= 27); Assert.IsTrue(result[6].Point.X >= 24 && result[6].Point.X <= 36); Assert.IsTrue(result[6].Point.Y >= 0 && result[6].Point.Y <= 9, result[0].Point.Y.ToString(CultureInfo.InvariantCulture)); Assert.IsTrue(result[7].Point.X >= 24 && result[7].Point.X <= 36); Assert.IsTrue(result[7].Point.Y >= 9 && result[7].Point.Y <= 18); Assert.IsTrue(result[8].Point.X >= 24 && result[8].Point.X <= 36); Assert.IsTrue(result[8].Point.Y >= 18 && result[8].Point.Y <= 27); }
public void GenerateSites_With100x75Map250Points_SitesKeepDistance() { var generator = new EvenlySpreadSiteGenerator(); Assert.Throws <InvalidOperationException>(() => generator.GenerateSites(100, 75, 250)); }