public void TestClone() { var routeEnumerable = new int[] { 0, 1, 3, 2, 4 }; var route = new Optimization.Tours.Tour(routeEnumerable, 0); var cloned = route.Clone() as Optimization.Tours.Tour; Assert.AreEqual(route.First, cloned.First); Assert.AreEqual(route.Last, cloned.Last); Assert.AreEqual(route.Count, cloned.Count); ExtraAssert.ItemsAreEqual(route, cloned); routeEnumerable = new int[] { 0, 1, 3, 2, 4 }; route = new Optimization.Tours.Tour(routeEnumerable, 4); cloned = route.Clone() as Optimization.Tours.Tour; Assert.AreEqual(route.First, cloned.First); Assert.AreEqual(route.Last, cloned.Last); Assert.AreEqual(route.Count, cloned.Count); ExtraAssert.ItemsAreEqual(route, cloned); routeEnumerable = new int[] { 0, 1, 3, 2, 4 }; route = new Optimization.Tours.Tour(routeEnumerable, null); cloned = route.Clone() as Optimization.Tours.Tour; Assert.AreEqual(route.First, cloned.First); Assert.AreEqual(route.Last, cloned.Last); Assert.AreEqual(route.Count, cloned.Count); ExtraAssert.ItemsAreEqual(route, cloned); }
public void TestShiftOpen() { RandomGeneratorExtensions.GetGetNewRandom = () => new RandomGenerator(116542346); // create a new empty route. var testCount = 10; var customers = new List <int>(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }); var route = new Optimization.Tours.Tour(customers, null); // remove customers. int testIdx = 0; while (testIdx < testCount) { var customerIdx = RandomGeneratorExtensions.GetRandom().Generate( customers.Count); var insertIdx = RandomGeneratorExtensions.GetRandom().Generate( customers.Count - 2); if (customerIdx <= insertIdx) { insertIdx = insertIdx + 1; } var customer = customers[customerIdx]; var insert = customers[insertIdx]; if (customer != route.First && customer != route.Last) { if (customerIdx < insertIdx) { customers.Insert(insertIdx + 1, customer); customers.RemoveAt(customerIdx); } else { customers.RemoveAt(customerIdx); customers.Insert(insertIdx + 1, customer); } route.ShiftAfter(customer, insert); Assert.AreEqual(customers.Count, route.Count); Assert.AreEqual(0, route.First); Assert.AreEqual(null, route.Last); ExtraAssert.ItemsAreEqual(customers, route); testIdx++; } } }
public void TestReplaceClosed() { var customers = new List <int>(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }); var route = new Optimization.Tours.Tour(customers, 0); route.Replace(0, 10); ExtraAssert.ItemsAreEqual(new int[] { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, route); route.Replace(5, 15); ExtraAssert.ItemsAreEqual(new int[] { 10, 1, 2, 3, 4, 15, 6, 7, 8, 9 }, route); route.Replace(9, 19); ExtraAssert.ItemsAreEqual(new int[] { 10, 1, 2, 3, 4, 15, 6, 7, 8, 19 }, route); }