Esempio n. 1
0
        public void SameStations()
        {
            StationEntity fromStation = MetroWebEntity.Instance.StationList["宜山路", "4号线"];
            StationEntity toStation   = MetroWebEntity.Instance.StationList["宝山路", "3号线"];

            finder = new RouteFinder();
            Tuple <List <StationLineEntity>, TimeSpan> result1 = finder.GetTheNearestRouteBetween(fromStation, toStation);

            Assert.AreEqual(10, result1.Item1.Count);

            Tuple <List <StationLineEntity>, TimeSpan> result2 = finder.GetTheNearestRouteBetween(toStation, fromStation);

            Assert.AreEqual(10, result2.Item1.Count);
        }
Esempio n. 2
0
        public StationInfo[] GetNearestRoute(string fromStationName, int fromLine, string toStationName, int toLine)
        {
            StationEntity fromStationEntity;

            try
            {
                fromStationEntity = MetroWebEntity.Instance.StationList[fromStationName, string.Format("{0}号线", fromLine)];
            }
            catch
            {
                throw new Exception("From Station is invalid!");
            }

            StationEntity toStationEntity;

            try
            {
                toStationEntity = MetroWebEntity.Instance.StationList[toStationName, string.Format("{0}号线", toLine)];
            }
            catch
            {
                throw new Exception("To Station is invalid!");
            }

            RouteFinder        finder          = new RouteFinder();
            var                stationLineList = finder.GetTheNearestRouteBetween(fromStationEntity, toStationEntity).Item1;
            List <StationInfo> stationInfoList = new List <StationInfo>();

            foreach (var stationLine in stationLineList)
            {
                StationInfo stationInfo = new StationInfoAdapter(stationLine.Station).ToObject();
                stationInfoList.Add(stationInfo);
            }
            return(stationInfoList.ToArray());
        }
Esempio n. 3
0
        public void TwoStationNeedTransfer()
        {
            StationEntity fromStation = MetroWebEntity.Instance.StationList["杨高中路", "9号线"];
            StationEntity toStation   = MetroWebEntity.Instance.StationList["东昌路", "2号线"];

            finder = new RouteFinder();
            Tuple <List <StationLineEntity>, TimeSpan> result1 = finder.GetTheNearestRouteBetween(fromStation, toStation);

            Assert.AreEqual(3, result1.Item1.Count);

            finder = new RouteFinder();
            Tuple <List <StationLineEntity>, TimeSpan> result2 = finder.GetTheNearestRouteBetween(toStation, fromStation);

            Assert.AreEqual(3, result2.Item1.Count);
        }
Esempio n. 4
0
        public void GetTwoStationsALittleFar()
        {
            StationEntity fromStation = MetroWebEntity.Instance.StationList["临港大道", "16号线"];
            StationEntity toStation   = MetroWebEntity.Instance.StationList["惠南东", "16号线"];

            finder = new RouteFinder();
            Tuple <List <StationLineEntity>, TimeSpan> result1 = finder.GetTheNearestRouteBetween(fromStation, toStation);

            Assert.AreEqual(3, result1.Item1.Count);

            finder = new RouteFinder();
            Tuple <List <StationLineEntity>, TimeSpan> result2 = finder.GetTheNearestRouteBetween(toStation, fromStation);

            Assert.AreEqual(3, result2.Item1.Count);
        }
Esempio n. 5
0
        public void ComplexTransfer()
        {
            StationEntity fromStation = MetroWebEntity.Instance.StationList["东川路", "5号线"];
            StationEntity toStation   = MetroWebEntity.Instance.StationList["北洋泾路", "6号线"];

            finder = new RouteFinder();
            Tuple <List <StationLineEntity>, TimeSpan> result1 = finder.GetTheNearestRouteBetween(fromStation, toStation);

            Assert.AreEqual(26, result1.Item1.Count);

            finder = new RouteFinder();
            Tuple <List <StationLineEntity>, TimeSpan> result2 = finder.GetTheNearestRouteBetween(toStation, fromStation);

            Assert.AreEqual(25, result2.Item1.Count);
        }