private static bool Equals(Core.Models.OptimizationInput v1, Core.Models.OptimizationInput v2) { if (v1.Visits.Length != v2.Visits.Length) { return(false); } bool equals = true; for (int i = 0; equals && i < v1.Visits.Length; i++) { equals = true && v1.Visits[i].Id == v2.Visits[i].Id && v1.Visits[i].Duration == v2.Visits[i].Duration && v1.Visits[i].WayCostFromHome == v2.Visits[i].WayCostFromHome && v1.Visits[i].WayCostToHome == v2.Visits[i].WayCostToHome && v1.Visits[i].Desired.SequenceEqual(v2.Visits[i].Desired) && v1.Visits[i].Unavailable.SequenceEqual(v2.Visits[i].Unavailable) && v1.Visits[i].IsBreak.Equals(v2.Visits[i].IsBreak) && v1.Visits[i].SantaId.Equals(v2.Visits[i].SantaId) ; } return(equals && v1.Santas.SequenceEqual(v2.Santas) && v1.Days.SequenceEqual(v2.Days) && v1.RouteCosts.Cast <int>().SequenceEqual(v2.RouteCosts.Cast <int>()) ); }
/// <summary> /// Checks all fields /// </summary> /// <param name="expected"></param> /// <param name="actual"></param> private static void AssertOptimizationInputEqual(Core.Models.OptimizationInput expected, Core.Models.OptimizationInput actual) { Assert.AreEqual(expected.Visits.Length, actual.Visits.Length); for (int i = 0; i < expected.Visits.Length; i++) { Assert.AreEqual(expected.Visits[i].Id, actual.Visits[i].Id); Assert.AreEqual(expected.Visits[i].Duration, actual.Visits[i].Duration); Assert.AreEqual(expected.Visits[i].WayCostFromHome, actual.Visits[i].WayCostFromHome); Assert.AreEqual(expected.Visits[i].WayCostToHome, actual.Visits[i].WayCostToHome); CollectionAssert.AreEqual(expected.Visits[i].Desired, actual.Visits[i].Desired); CollectionAssert.AreEqual(expected.Visits[i].Unavailable, actual.Visits[i].Unavailable); Assert.AreEqual(expected.Visits[i].IsBreak, actual.Visits[i].IsBreak); Assert.AreEqual(expected.Visits[i].SantaId, actual.Visits[i].SantaId); } CollectionAssert.AreEqual(expected.Santas, actual.Santas); CollectionAssert.AreEqual(expected.Days, actual.Days); CollectionAssert.AreEqual(expected.RouteCosts, actual.RouteCosts); }