public void TestDoorDetectorIsSavedInProperty()
        {
            MockDoorDetector doorDetector = new MockDoorDetector(null);
            DoorOrientationNavigationStrategy doorOrientor = new DoorOrientationNavigationStrategy(doorDetector);

            Assert.ReferenceEquals(doorDetector, doorOrientor.DoorDetector);
        }
        public void TestNearestTargetDoorIsSelected()
        {
            DetectedDoor        door1 = new DetectedDoor(new System.Drawing.Rectangle(), DetectedDoor.DetectionConfidence.HIGH, 0, 50);
            DetectedDoor        door2 = new DetectedDoor(new System.Drawing.Rectangle(), DetectedDoor.DetectionConfidence.HIGH, 0, 25);
            List <DetectedDoor> doors = new List <DetectedDoor>();

            doors.Add(door1);
            doors.Add(door2);

            DoorOrientationNavigationStrategy strategy = new DoorOrientationNavigationStrategy(new MockDoorDetector(null));
            PrivateObject privateAccessor = new PrivateObject(strategy);

            DetectedDoor targetDoor = (DetectedDoor)privateAccessor.Invoke("GetTargetDoor", doors);

            // door2 has the smallest estimated distance therefore it should be selected as the target door
            Assert.AreEqual <DetectedDoor>(door2, targetDoor);
        }
        public void TestDoorNavigatorNavigatesTowardsDoor()
        {
            Bitmap          image  = new Bitmap("ObjectDetection\\Images\\door3.JPG");
            MockFrame       frame  = new MockFrame(image);
            MockImageStream stream = new MockImageStream(frame);

            ColorBasedDoorDetector            doorDetector = new ColorBasedDoorDetector();
            DoorOrientationNavigationStrategy navigator    = new DoorOrientationNavigationStrategy(doorDetector);

            doorDetector.RunAsync(stream);

            // Sleep for 1 second to ensure that the door detector has time to recognize the door
            Thread.Sleep(1000);

            Vector navigatorDirection = navigator.GetDirection();
            Vector expectedDirection  = new Vector(0.23776, 0.7623);

            Assert.AreEqual <Vector>(expectedDirection, navigatorDirection);

            doorDetector.CancelAsync();
        }