public void ComputerDriverTopHelper_IsRecalculationOfBestRouteNecessary()
        {
            IList <Point> currentRoute = new List <Point>();
            IList <Point> bestRoute    = new List <Point>();
            bool          result;

            // bestRoute is empty, we need to recalculate -> result = true
            result = ComputerDriverTopHelper.IsRecalculationOfBestRouteNecessary(currentRoute, bestRoute);
            Assert.IsTrue(result);

            // currentRoute is longer than bestRoute -> we need to recalculate
            Point firstPoint = new Point(0, 0);

            currentRoute.Add(firstPoint);
            result = ComputerDriverTopHelper.IsRecalculationOfBestRouteNecessary(currentRoute, bestRoute);
            Assert.IsTrue(result);

            // currentRoute and bestRoute are identical -> we do NOT need to recalculate
            bestRoute.Add(firstPoint);
            result = ComputerDriverTopHelper.IsRecalculationOfBestRouteNecessary(currentRoute, bestRoute);
            Assert.IsFalse(result);

            // currentRoute is included in bestRoute -> we do NOT need to recalculate
            Point secondPoint = new Point(100, 20);

            bestRoute.Add(secondPoint);
            result = ComputerDriverTopHelper.IsRecalculationOfBestRouteNecessary(currentRoute, bestRoute);
            Assert.IsFalse(result);
        }
        public void ComputerDriverTopHelper_IsFirstRouteStartofSecondRoute()
        {
            IList <Point> firstRoute  = new List <Point>();
            IList <Point> secondRoute = new List <Point>();
            bool          result;

            result = ComputerDriverTopHelper.IsFirstRouteStartofSecondRoute(firstRoute, secondRoute);
            Assert.IsTrue(result);

            Point firstPoint = new Point(0, 0);

            firstRoute.Add(firstPoint);
            result = ComputerDriverTopHelper.IsFirstRouteStartofSecondRoute(firstRoute, secondRoute);
            Assert.IsFalse(result);

            secondRoute.Add(firstPoint);
            result = ComputerDriverTopHelper.IsFirstRouteStartofSecondRoute(firstRoute, secondRoute);
            Assert.IsTrue(result);

            Point secondPoint = new Point(100, 20);

            secondRoute.Add(secondPoint);
            result = ComputerDriverTopHelper.IsFirstRouteStartofSecondRoute(firstRoute, secondRoute);
            Assert.IsTrue(result);

            firstRoute.Add(secondPoint);
            result = ComputerDriverTopHelper.IsFirstRouteStartofSecondRoute(firstRoute, secondRoute);
            Assert.IsTrue(result);

            Point thirdPoint = new Point(23, 23);

            secondRoute.Add(thirdPoint);
            secondRoute.Add(new Point(233, 234));

            result = ComputerDriverTopHelper.IsFirstRouteStartofSecondRoute(firstRoute, secondRoute);
            Assert.IsTrue(result);

            firstRoute.Add(new Point(thirdPoint.X + 1, thirdPoint.Y));
            result = ComputerDriverTopHelper.IsFirstRouteStartofSecondRoute(firstRoute, secondRoute);
            Assert.IsFalse(result);
        }