예제 #1
0
        private static void Main(string[] args)
        {
            // application setup
            XmlConfigurator.Configure();
            ILog log    = LogManager.GetLogger("app");
            var  config = new Configuration();

            // the magic
            VideoProcessor videoProcessor = new VideoProcessor(log, config);

            TTPointsEngine engine = new TTPointsEngine();

            videoProcessor.BallDetected = (p) =>
            {
                engine.TryCoordinates(p);
            };


            var processingTask = Task.Run(() => { videoProcessor.Process(@"C:\hackathon\input\video4.mov"); });


            Console.ReadKey(true);

            videoProcessor.ShouldStop = true;

            Task.WaitAll(processingTask);
        }
예제 #2
0
        public void DetermineEndOfPlay_WhenBallTravelsAtTheSideOfTheTableForRightPlayer()
        {
            var pointsEngine = new TTPointsEngine();

            Coordinates currentPosition = new Coordinates(350, 300);

            var result = pointsEngine.DetermineEndOfPlay(currentPosition);

            Assert.AreEqual(PlayStatus.SideOfTable, result);
        }
예제 #3
0
        public void DetermineEndOfPlay_WhenBallTravelsUnderTheTableForLeftPlayer()
        {
            var pointsEngine = new TTPointsEngine();

            Coordinates currentPosition = new Coordinates(400, 300);

            var result = pointsEngine.DetermineEndOfPlay(currentPosition);

            Assert.AreEqual(PlayStatus.UnderTable, result);
        }
예제 #4
0
        public BounceDirection.Direction GetDirectionsFromCoordinates(List <Coordinates> coordinates)
        {
            List <Direction> directionsToProcess = new List <Direction>();
            TTPointsEngine   pointsEngine        = new TTPointsEngine();

            for (int i = 0; i < coordinates.Count; i++)
            {
                directionsToProcess.Add(pointsEngine.DetermineDirectionOfBall(coordinates[i], coordinates[i + 1]));
            }
            return(BounceDirection(directionsToProcess));
        }
예제 #5
0
        public void DetermineDirectionOfBall_WhenBallTravelsNorth()
        {
            var pointsEngine = new TTPointsEngine();

            Coordinates previousPosition = new Coordinates(5, 6);
            Coordinates currentPosition  = new Coordinates(5, 3);

            var result = pointsEngine.DetermineDirectionOfBall(previousPosition, currentPosition);

            Assert.AreEqual(Direction.North, result);
        }
예제 #6
0
        public void DetermineDirectionOfBall_WhenBallTravelsSouthWest()
        {
            var pointsEngine = new TTPointsEngine();

            Coordinates previousPosition = new Coordinates(5, 1);
            Coordinates currentPosition  = new Coordinates(3, 5);

            var result = pointsEngine.DetermineDirectionOfBall(previousPosition, currentPosition);

            Assert.AreEqual(Direction.SouthWest, result);
        }
예제 #7
0
        public void DetermineDirectionOfBall_WhenWeGet2Coordinates_GivesADirection()
        {
            var pointsEngine = new TTPointsEngine();

            Coordinates firstPoint  = new Coordinates(3, 1);
            Coordinates secondPoint = new Coordinates(5, 4);

            var result = pointsEngine.DetermineDirectionOfBall(firstPoint, secondPoint);

            Assert.IsTrue(result.GetType() == typeof(Direction));
        }