Ejemplo n.º 1
0
        public async Task TestFindShortestRouteBetweenAsynch()
        {
            var cities = new Cities();

            cities.ReadCities(CitiesTestFile);

            var routes = new RoutesDijkstra(cities);

            routes.ReadRoutes(LinksTestFile);

            // do synchronous execution
            linksExpected =
                routes.FindShortestRouteBetween("Basel", "Zürich", TransportModes.Rail);

            // do asynchronous execution
            linksActual = await routes.GoFindShortestRouteBetween("Basel", "Zürich", TransportModes.Rail);

            // not test the results
            Assert.IsNotNull(linksActual);
            Assert.AreEqual(linksExpected.Count, linksActual.Count);


            for (int i = 0; i < linksActual.Count; i++)
            {
                Assert.AreEqual(linksExpected[i].FromCity, linksActual[i].FromCity);
                Assert.AreEqual(linksExpected[i].ToCity, linksActual[i].ToCity);
            }
        }
Ejemplo n.º 2
0
        public async Task TestFindShortestRouteBetweenAsyncProgress()
        {
            var cities = new Cities();

            cities.ReadCities(CitiesTestFile);

            var routes = new RoutesDijkstra(cities);

            routes.ReadRoutes(LinksTestFile);


            var progress = new Progress <string>(ProgressReport);

            // do asynchronous execution
            linksActual =
                await routes.FindShortestRouteBetweenAsync("Basel", "Zürich", TransportModes.Rail, progress);

            await Task.Delay(1000);

            // the following assert has to be made after the routine routine returns
            // assert, that in minimum 5 progress calls are made
            Assert.IsTrue(progCount >= 5, "less than 5 progress calls");

            // See comment in ProgressReport method
            Assert.IsFalse(doneMissing, String.Format("the progress message \"{0}\" does not contain \"done\"", failingMessage));
        }
Ejemplo n.º 3
0
        public void TestTask4FindRoutes()
        {
            var cities = new Cities();

            cities.ReadCities(CitiesTestFile);
            var expectedLinks = new List <Link>();

            expectedLinks.Add(new Link(new City("Zürich", "Switzerland", 7000, 1, 2),
                                       new City("Aarau", "Switzerland", 7000, 1, 2), 0));
            expectedLinks.Add(new Link(new City("Aarau", "Switzerland", 7000, 1, 2),
                                       new City("Liestal", "Switzerland", 7000, 1, 2), 0));
            expectedLinks.Add(new Link(new City("Liestal", "Switzerland", 7000, 1, 2),
                                       new City("Basel", "Switzerland", 7000, 1, 2), 0));

            var routes = new RoutesDijkstra(cities);

            routes.ReadRoutes(LinksTestFile);

            Assert.AreEqual(11, cities.Count);

            // test available cities
            var links = routes.FindShortestRouteBetween("Zürich", "Basel", TransportModes.Rail);

            Assert.IsNotNull(links);
            Assert.AreEqual(expectedLinks.Count, links.Count);

            for (var i = 0; i < links.Count; i++)
            {
                Assert.AreEqual(expectedLinks[i].FromCity.Name, links[i].FromCity.Name);
                Assert.AreEqual(expectedLinks[i].ToCity.Name, links[i].ToCity.Name);
            }

            links = routes.FindShortestRouteBetween("doesNotExist", "either", TransportModes.Rail);
            Assert.IsNull(links);
        }
Ejemplo n.º 4
0
        public static void Start()
        {
            Cities cities = new Cities();

            cities.ReadCities("citiesTestDataLab2.txt");

            Routes route = new RoutesDijkstra(cities);

            route.ReadRoutes("linksTestDataLab3.txt");

            /*
             * var actions = new Action[3];
             *
             * for (var i = 0; i < actions.Length; i++)
             * {
             *  actions[i] = () => Console.Write(i);
             * }
             *
             * foreach (var a in actions)
             * {
             *  a();
             * }
             */

            Console.ReadKey();
        }
Ejemplo n.º 5
0
        public void TestTask2EventWithNoObserver()
        {
            var cities = new Cities();

            cities.ReadCities(CitiesTestFile);

            var routes = new RoutesDijkstra(cities);

            // must run without exception
            routes.FindShortestRouteBetween("Bern", "Zürich", TransportModes.Rail);
        }
Ejemplo n.º 6
0
        public void TestRoutesReadLinks()
        {
            var cities = new Cities();

            cities.ReadCities(CitiesTestFile);

            var routes = new RoutesDijkstra(cities);

            var count = routes.ReadRoutes(LinksTestFile);

            Assert.AreEqual(7, count);
        }
Ejemplo n.º 7
0
        public void TestTask2FiredEvents()
        {
            var cities = new Cities();

            cities.ReadCities(CitiesTestFile);

            var routes = new RoutesDijkstra(cities);

            // test available cities
            routes.RouteRequestEvent += TestForCorrectEventArgsWithFoundCities;
            routes.FindShortestRouteBetween("Bern", "Zürich", TransportModes.Rail);

            // test not existing cities
            routes.RouteRequestEvent -= TestForCorrectEventArgsWithFoundCities;
            routes.RouteRequestEvent += TestForCorrectEventArgsWithNotFoundCities;
            routes.FindShortestRouteBetween("doesNotExist", "either", TransportModes.Rail);
        }
Ejemplo n.º 8
0
        public void TestTask3_CompareAlgorithms()
        {
            Cities cities = new Cities();

            cities.ReadCities(@"citiesTestDataLab11.txt");
            Assert.AreEqual(6372, cities.Count);

            Routes routes       = new RoutesDijkstra(cities);
            long   dijkstraTime = FindRoutes(routes);

            routes = new RoutesFloydWarshall(cities);
            routes.ExecuteParallel = false;
            long floydWarshallTime = FindRoutes(routes);

            // the sequentiel floydWarshal should be slower
            Assert.IsTrue(floydWarshallTime > dijkstraTime, "FloydWarshal should be slower");
        }
Ejemplo n.º 9
0
        public void TestFindCitiesByTransportMode()
        {
            Cities cities = new Cities();

            cities.ReadCities(@"citiesTestDataLab3.txt");
            var routes = new RoutesDijkstra(cities);

            routes.ReadRoutes(@"linksTestDataLab3.txt");

            City[] citiesByMode = routes.FindCities(TransportModes.Rail);

            Assert.AreEqual(11, citiesByMode.Count());

            // there must be no cities
            City[] emptyCitiesByMode = routes.FindCities(TransportModes.Bus);
            Assert.AreEqual(0, emptyCitiesByMode.Count());
        }
Ejemplo n.º 10
0
        public void TestRequestWatcher()
        {
            var reqWatch = new RouteRequestWatcher();

            var cities = new Cities();

            cities.ReadCities(CitiesTestFile);

            var routes = new RoutesDijkstra(cities);

            routes.RouteRequestEvent += reqWatch.LogRouteRequests;

            routes.FindShortestRouteBetween("Bern", "Zürich", TransportModes.Rail);
            routes.FindShortestRouteBetween("Bern", "Zürich", TransportModes.Rail);
            routes.FindShortestRouteBetween("Basel", "Bern", TransportModes.Rail);

            Assert.AreEqual(reqWatch.GetCityRequests("Zürich"), 2);
            Assert.AreEqual(reqWatch.GetCityRequests("Bern"), 1);
            Assert.AreEqual(reqWatch.GetCityRequests("Basel"), 0);
        }
Ejemplo n.º 11
0
        public void TestTaskReadRoutes()
        {
            var cities = new Cities();

            cities.ReadCities(CitiesTestFile);
            var expectedLinks = new List <Link>();

            expectedLinks.Add(new Link(new City("Zürich", "Switzerland", 7000, 1, 2),
                                       new City("Aarau", "Switzerland", 7000, 1, 2), 0));
            expectedLinks.Add(new Link(new City("Aarau", "Switzerland", 7000, 1, 2),
                                       new City("Liestal", "Switzerland", 7000, 1, 2), 0));
            expectedLinks.Add(new Link(new City("Liestal", "Switzerland", 7000, 1, 2),
                                       new City("Basel", "Switzerland", 7000, 1, 2), 0));

            var routes = new RoutesDijkstra(cities);
            var count  = routes.ReadRoutes(LinksTestFile);

            Assert.AreEqual(10, count);
            Assert.AreEqual(10, routes.Count);
        }
Ejemplo n.º 12
0
        static void Main(string[] args)
        {
            Version version = Assembly.GetEntryAssembly().GetName().Version;

            Console.WriteLine("Welcome to RoutePlanner ({0})", version);


            WayPoint wayPoint = new WayPoint("Windisch", 47.479319847061966, 8.212966918945312);

            Console.WriteLine(wayPoint.ToString());
            WayPoint wpBern     = new WayPoint("Bern", 46.9472221, 7.451202500000022);
            WayPoint wpTripolis = new WayPoint("Tripolis", 59.86062519999999, 17.650885199999948);

            Console.WriteLine("Distanz Bern-Tripolis: {0}km", wpBern.Distance(wpTripolis));

            City cBern = new City("Bern", "Schweiz", 75000, 47.479319847061966, 8.212966918945312);
            City c0    = new City("Mumbai", "India", 12383146, 18.96, 72.82);

            string serializedCity = string.Empty;

            using (StringWriter outstream = new StringWriter())
            {
                SimpleObjectWriter writer = new SimpleObjectWriter(outstream);
                writer.Next(cBern);
                serializedCity = outstream.ToString();
            }
            Console.WriteLine(serializedCity);

            using (StringReader inStream = new StringReader(serializedCity)) {
                SimpleObjectReader reader = new SimpleObjectReader(inStream);
                object             o      = reader.Next();
            }


            WayPoint wp = c0.Location;
            Cities   c  = new Cities();

            c.ReadCities("citiesTestDataLab2.txt");
            c.FindNeighbours(wp, 2000);
            c.ReadCities("citiesTestDataLab2.txt");

            var routes   = new RoutesDijkstra(c);
            var reqWatch = new RouteRequestWatcher();

            routes.RouteRequestEvent += reqWatch.LogRouteRequests;
            routes.FindShortestRouteBetween("Mumbai", "India", TransportModes.Rail);
            routes.FindShortestRouteBetween("Mumbai", "India", TransportModes.Rail);
            routes.FindShortestRouteBetween("India", "Mumbai", TransportModes.Rail);

            Console.WriteLine("City found: {0}", c.FindCity("Mumbai").Name);

            c.ReadCities("citiesTestDataLab4.txt");
            Routes r = new RoutesDijkstra(c);

            r.RouteRequestEvent += reqWatch.LogRouteRequests;
            r.ReadRoutes("linksTestDataLab4.txt");
            List <Link> l = r.FindShortestRouteBetween("Zürich", "Winterthur", TransportModes.Rail);

            foreach (Link link in l)
            {
                Console.WriteLine("from {0} to {1} in {2}", link.FromCity.Name, link.ToCity.Name, link.Distance);
            }
            Console.ReadKey();

            City          zurich     = c.FindCity("Zürich");
            City          winterthur = c.FindCity("Winterthur");
            ExcelExchange export     = new ExcelExchange();

            export.WriteToFile("Test.xls", zurich, winterthur, l);
        }
Ejemplo n.º 13
0
        static void Main(string[] args)
        {
            Console.WriteLine("Welcome to RoutePlanner (" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + ")");
            Console.WriteLine();

            var wayPoint = new WayPoint("Windisch", 47.479319847061966, 8.212966918945312);

            var wpBern     = new WayPoint("Bern", 46.9479222, 7.4446085);
            var wpTripolis = new WayPoint("Tripolis", 32.8084124, 13.1509672);

            Console.WriteLine(wayPoint.ToString());

            Console.WriteLine(wpBern.ToString());
            Console.WriteLine(wpTripolis.ToString());

            Console.WriteLine("Distance: {0}", wpBern.Distance(wpTripolis));

            var citiesLab2 = new Cities();

            citiesLab2.ReadCities("data\\citiesTestDataLab2.txt");

            var    bern     = new WayPoint("Bern", 46.95, 7.44);
            var    tripolis = new WayPoint("Tripolis", 32.876174, 13.187507);
            double actual   = bern.Distance(tripolis);

            Console.WriteLine();
            var findCity = citiesLab2.FindCity("Bern");

            if (findCity != null)
            {
                Console.WriteLine("City {0} was found.", findCity.Name);
            }
            else
            {
                Console.WriteLine("City not found.");
            }

            findCity = citiesLab2.FindCity("Dilli");

            if (findCity != null)
            {
                Console.WriteLine("City {0} was found.", findCity.Name);
            }
            else
            {
                Console.WriteLine("City not found.");
            }

            Console.WriteLine();
            Console.WriteLine("Test Routes");
            var citiesLab3 = new Cities();

            citiesLab3.ReadCities("data\\citiesTestDataLab3.txt");
            var reqWatcher = new RouteRequestWatcher();

            var routes = new RoutesDijkstra(citiesLab3);

            routes.RouteRequestEvent += reqWatcher.LogRouteRequests;
            routes.FindShortestRouteBetween("Bern", "Zürich", TransportModes.Bus);
            routes.FindShortestRouteBetween("Bern", "Zürich", TransportModes.Bus);

            routes.ReadRoutes("data\\linksTestDataLab3.txt");

            Console.WriteLine();
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            //Lab1 Aufgabe 1
            Console.WriteLine("Welcome to RoutePlanner (Version " + Assembly.GetExecutingAssembly().GetName().Version + ")");

            //Lab1 Aufgabe 2d
            var wayPoint = new WayPoint("Windisch", 47.479319847061966, 8.212966918945312);

            Console.WriteLine("{0}: {1}/{2}", wayPoint.Name, wayPoint.Latitude, wayPoint.Longitude);

            //Lab2 Aufgabe 1a
            Console.WriteLine(wayPoint);
            var wayPoint1 = new WayPoint("", 47.479319847061966, 8.212966918945312);
            var wayPoint2 = new WayPoint(null, 47.479319847061966, 8.212966918945312);

            Console.WriteLine(wayPoint1);
            Console.WriteLine(wayPoint2);

            //Lab2 Aufgabe 1b
            var bern     = new WayPoint("Bern", 46.948342, 7.442935);
            var tripolis = new WayPoint("Tripolis", 32.808858, 13.098922);

            Console.WriteLine(bern.Distance(tripolis));
            Console.WriteLine(tripolis.Distance(bern));

            //Lab2 Aufgabe 2a
            new City("Bern", "Schweiz", 75000, 47.479319847061966, 8.212966918945312);

            //Lab2 Aufgabe 2b
            Cities cities = new Cities();

            Console.WriteLine("New cities: " + cities.ReadCities("citiesTestDataLab2.txt"));

            //Lab2 Aufgabe 2c

            /*
             * for (int i = 0; i < cities.Count;i++ )
             * {
             *  Console.WriteLine(cities[i].Name + ", " + cities[i].Country
             + ", " + cities[i].Population
             + ", " + cities[i].Location.Latitude
             + ", " + cities[i].Location.Longitude
             +      );
             + }
             */

            //Lab2 Aufgabe 2d
            List <City> neighbours = cities.FindNeighbours(cities[1].Location, (double)17000.0);

            for (int i = 0; i < neighbours.Count; i++)
            {
                Console.WriteLine(neighbours[i].Name + ", " + neighbours[i].Country
                                  + ", " + neighbours[i].Population
                                  + ", " + neighbours[i].Location.Latitude
                                  + ", " + neighbours[i].Location.Longitude
                                  );
            }

            //Lab3 Aufgabe 1
            City city = cities.FindCity("shanghai");

            Console.WriteLine("Name: " + city.Name + ", " + city.Country
                              + ", " + city.Population
                              + ", " + city.Location.Latitude
                              + ", " + city.Location.Longitude
                              );


            //Lab3 Aufgabe 2c
            var reqWatch = new RouteRequestWatcher();

            var routeCities = new Cities();

            cities.ReadCities("citiesTestDataLab2.txt");

            var routes = new RoutesDijkstra(routeCities);

            routes.RouteRequestEvent += reqWatch.LogRouteRequests;

            routes.FindShortestRouteBetween("Bern", "Zürich", TransportModes.Rail);
            routes.FindShortestRouteBetween("Bern", "Zürich", TransportModes.Rail);
            routes.FindShortestRouteBetween("Basel", "Bern", TransportModes.Rail);


            const string cityString1   = "Instance of Fhnw.Ecnf.RoutePlanner.RoutePlannerLib.City\r\nName=\"Aarau\"\r\nCountry=\"Switzerland\"\r\nPopulation=10\r\nLocation is a nested object...\r\nInstance of Fhnw.Ecnf.RoutePlanner.RoutePlannerLib.WayPoint\r\nName=\"Aarau\"\r\nLongitude=2.2\r\nLatitude=1.1\r\nEnd of instance\r\nEnd of instance\r\n";
            const string cityString2   = "Instance of Fhnw.Ecnf.RoutePlanner.RoutePlannerLib.City\r\nName=\"Bern\"\r\nCountry=\"Switzerland\"\r\nPopulation=10\r\nLocation is a nested object...\r\nInstance of Fhnw.Ecnf.RoutePlanner.RoutePlannerLib.WayPoint\r\nName=\"Bern\"\r\nLongitude=2.2\r\nLatitude=1.1\r\nEnd of instance\r\nEnd of instance\r\n";
            const string cityString    = cityString1 + cityString2;
            var          expectedCity1 = new City("Aarau", "Switzerland", 10, 1.1, 2.2);
            var          expectedCity2 = new City("Bern", "Switzerland", 10, 1.1, 2.2);
            var          stream        = new StringReader(cityString);
            var          reader        = new SimpleObjectReader(stream);
            var          city1         = reader.Next() as City;

            var city2 = reader.Next() as City;

            routes.ReadRoutes("linksTestDataLab3.txt");
            routes.ReadRoutes("linksTestDa.txt");

            Console.ReadLine();
        }