public void TestOverallFunctionalityOfCompositeDoorDetectorWithOverlap()
        {
            DetectedDoor door1 = new DetectedDoor(new Rectangle(0, 0, 100, 100), DetectedDoor.DetectionConfidence.LOW, 0, 0);
            DetectedDoor door2 = new DetectedDoor(new Rectangle(10, 10, 80, 80), DetectedDoor.DetectionConfidence.LOW, 0, 0);

            List <DetectedDoor> mock1Doors = new List <DetectedDoor>();

            mock1Doors.Add(door1);

            List <DetectedDoor> mock2Doors = new List <DetectedDoor>();

            mock2Doors.Add(door2);

            MockDoorDetector     mock1     = new MockDoorDetector(mock1Doors);
            MockDoorDetector     mock2     = new MockDoorDetector(mock2Doors);
            List <IDoorDetector> detectors = new List <IDoorDetector>();

            detectors.Add(mock1);
            detectors.Add(mock2);

            DetectedDoor        expectedDoor  = new DetectedDoor(new Rectangle(0, 0, 100, 100), DetectedDoor.DetectionConfidence.HIGH, 0, 0);
            List <DetectedDoor> expectedDoors = new List <DetectedDoor>();

            expectedDoors.Add(expectedDoor);

            CompositeDoorDetector composite   = new CompositeDoorDetector(detectors);
            Image <Bgr, Byte>     image       = new Image <Bgr, byte>(new Size(300, 300));
            List <DetectedDoor>   actualDoors = composite.GetDoors(image);

            CollectionAssert.AreEqual(expectedDoors, actualDoors);
        }
        public void TestCollectDoorsCollectsContainedDoors()
        {
            Point     center    = new Point(50, 50);
            Rectangle outerRect = new Rectangle(center, new Size(30, 30));
            Rectangle innerRect = new Rectangle(center, new Size(10, 10));

            DetectedDoor outerDoor = new DetectedDoor(outerRect, DetectedDoor.DetectionConfidence.LOW, 0, 0);
            DetectedDoor innerDoor = new DetectedDoor(innerRect, DetectedDoor.DetectionConfidence.LOW, 0, 0);

            List <DetectedDoor> inputDoors = new List <DetectedDoor>();

            inputDoors.Add(outerDoor);
            inputDoors.Add(innerDoor);

            DetectedDoor        expectedDoor  = new DetectedDoor(outerRect, DetectedDoor.DetectionConfidence.HIGH, 0, 0);
            List <DetectedDoor> expectedDoors = new List <DetectedDoor>();

            expectedDoors.Add(expectedDoor);

            CompositeDoorDetector doorDetector    = new CompositeDoorDetector(null);
            PrivateObject         privateAccessor = new PrivateObject(doorDetector);

            List <DetectedDoor> collectedDoors = (List <DetectedDoor>)privateAccessor.Invoke("CollectDoors", inputDoors);

            CollectionAssert.AreEqual(collectedDoors, expectedDoors);
        }
        public void TestCollectDoorsDoesntCollectSeparateDoors()
        {
            Rectangle rect1 = new Rectangle(new Point(0, 0), new Size(10, 10));
            Rectangle rect2 = new Rectangle(new Point(100, 100), new Size(10, 10));

            DetectedDoor door1 = new DetectedDoor(rect1, DetectedDoor.DetectionConfidence.LOW, 0, 0);
            DetectedDoor door2 = new DetectedDoor(rect2, DetectedDoor.DetectionConfidence.LOW, 0, 0);

            List <DetectedDoor> inputDoors = new List <DetectedDoor>();

            inputDoors.Add(door1);
            inputDoors.Add(door2);

            CompositeDoorDetector doorDetector    = new CompositeDoorDetector(null);
            PrivateObject         privateAccessor = new PrivateObject(doorDetector);

            List <DetectedDoor> collectedDoors = (List <DetectedDoor>)privateAccessor.Invoke("CollectDoors", inputDoors);

            CollectionAssert.AreEqual(collectedDoors, inputDoors);
        }