public void FindTripMinDistanceComplexGraphReturnsOk_Train()
        {
            planner.AddTravelCompany(rotcA);
            ILegDTO legDTO = createdLegs[new Key(rotcAName, A, B)];
            var     trip   = planner.FindTrip(A, B, FindOptions.MinimumDistance, TransportType.Train);

            Assert.AreEqual(legDTO.Cost, trip.TotalCost);
            Assert.AreEqual(legDTO.Distance, trip.TotalDistance);
            Assert.That(trip.Path, Is.EquivalentTo(new[] { legDTO }));
        }
        public void FindTripMinHopSimpleGraphOneHopReturnOk_Plane()
        {
            planner.AddTravelCompany(rotcB);
            var     trip   = planner.FindTrip(A, E, FindOptions.MinimumHops, TransportType.Plane);
            ILegDTO legDTO = createdLegs[new Key(rotcBName, A, E)];

            Assert.AreEqual(legDTO.Cost, trip.TotalCost);
            Assert.AreEqual(legDTO.Distance, trip.TotalDistance);
            Assert.AreEqual(A, trip.From);
            Assert.AreEqual(E, trip.To);
            Assert.That(trip.Path, Is.EquivalentTo(new[] { legDTO }));
        }
        public void FindTripMinHopSimpleGraphTwoHopReturnOk_Train_Plane()
        {
            planner.AddTravelCompany(rotcC);
            var     trip          = planner.FindTrip(B, E, FindOptions.MinimumHops, TransportType.Train | TransportType.Plane);
            ILegDTO legDTOPrimo   = createdLegs[new Key(rotcCName, B, A)];
            ILegDTO legDTOSecondo = createdLegs[new Key(rotcCName, A, E)];

            Assert.AreEqual(legDTOPrimo.Cost + legDTOSecondo.Cost, trip.TotalCost);
            Assert.AreEqual(legDTOPrimo.Distance + legDTOSecondo.Distance, trip.TotalDistance);
            Assert.AreEqual(B, trip.From);
            Assert.AreEqual(E, trip.To);
            Assert.That(trip.Path, Is.EquivalentTo(new[] { legDTOPrimo, legDTOSecondo }));
        }
        public void FindTripMinCostComplexGraphReturnOk_Train_Plane()
        {
            planner.AddTravelCompany(rotcC);
            var     trip          = planner.FindTrip(A, B, FindOptions.MinimumCost, TransportType.Train | TransportType.Plane);
            ILegDTO legDTOPrimo   = createdLegs[new Key(rotcCName, A, C)];
            ILegDTO legDTOSecondo = createdLegs[new Key(rotcCName, C, F)];
            ILegDTO legDTOTerzo   = createdLegs[new Key(rotcCName, F, B)];

            Assert.AreEqual(legDTOPrimo.Cost + legDTOSecondo.Cost + legDTOTerzo.Cost, trip.TotalCost);
            Assert.AreEqual(legDTOPrimo.Distance + legDTOSecondo.Distance + legDTOTerzo.Distance, trip.TotalDistance);
            Assert.AreEqual(A, trip.From);
            Assert.AreEqual(B, trip.To);
            Assert.That(trip.Path, Is.EquivalentTo(new[] { legDTOPrimo, legDTOSecondo, legDTOTerzo }));
        }
        public void FindTripMinCostSimpleGraphMoreHopReturnOk()
        {
            planner.AddTravelCompany(rotcB);

            var     trip    = planner.FindTrip(A, B, FindOptions.MinimumCost, TransportType.Plane);
            ILegDTO legDTO1 = createdLegs[new Key(rotcBName, A, F)];
            ILegDTO legDTO2 = createdLegs[new Key(rotcBName, F, B)];

            Assert.AreEqual(legDTO1.Cost + legDTO2.Cost, trip.TotalCost);
            Assert.AreEqual(legDTO1.Distance + legDTO2.Distance, trip.TotalDistance);
            Assert.AreEqual(A, trip.From);
            Assert.AreEqual(B, trip.To);
            Assert.That(trip.Path, Is.EquivalentTo(new[] { legDTO1, legDTO2 }));
        }
        public void FindTripMinDistanceComplexGraphReturnOk_Train()
        {
            planner.AddTravelCompany(rotcA);
            var     trip          = planner.FindTrip(A, E, FindOptions.MinimumDistance, TransportType.Train);
            ILegDTO legDTOPrimo   = createdLegs[new Key(rotcAName, A, C)];
            ILegDTO legDTOSecondo = createdLegs[new Key(rotcAName, C, F)];
            ILegDTO legDTOTerzo   = createdLegs[new Key(rotcAName, F, D)];
            ILegDTO legDTOQuarto  = createdLegs[new Key(rotcAName, D, E)];

            Assert.AreEqual(legDTOPrimo.Cost + legDTOSecondo.Cost + legDTOTerzo.Cost + legDTOQuarto.Cost, trip.TotalCost);
            Assert.AreEqual(legDTOPrimo.Distance + legDTOSecondo.Distance + legDTOTerzo.Distance + legDTOQuarto.Distance, trip.TotalDistance);
            Assert.AreEqual(A, trip.From);
            Assert.AreEqual(E, trip.To);
            Assert.That(trip.Path, Is.EquivalentTo(new[] { legDTOPrimo, legDTOSecondo, legDTOTerzo, legDTOQuarto }));
        }
 public void InitializePaths()
 {
     A             = "A";
     B             = "B";
     C             = "C";
     D             = "D";
     E             = "E";
     F             = "G";
     unreachable   = "UNREACHABLE";
     travelCompany = travelCompanyFactory.Get(ExampleName);
     aeIndex       = travelCompany.CreateLeg(A, E, 10, 45, TransportType.Train);
     ae            = travelCompany.GetLegDTOFromId(aeIndex);
     abIndex       = travelCompany.CreateLeg(A, B, 2, 4, TransportType.Train);
     ab            = travelCompany.GetLegDTOFromId(abIndex);
     bfIndex       = travelCompany.CreateLeg(B, F, 5, 20, TransportType.Train);
     bf            = travelCompany.GetLegDTOFromId(bfIndex);
     travelCompany.CreateLeg(C, D, 1, 4, TransportType.Train);
     travelCompany.CreateLeg(D, F, 2, 8, TransportType.Train);
 }