Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
BoundingBoxTests.java 2.80 KiB
package object_detection;

import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import object_detection.types.*;

class BoundingBoxTests {

    @Test
    void testPointOnEachEdge() {
        Point2D tr = new Point2D(10, 10, 1);
        Point2D tl = new Point2D(0, 10, 1);
        Point2D br = new Point2D(10, 0, 1);
        Point2D bl = new Point2D(0, 0, 1);
        BoundingBox box = new BoundingBox(tr, tl, br, bl, 1, "vehicle");

        // Assume points on the boundary should be considered outside
        assertFalse(box.within(new Point2D(5, 10, 1)), "Point on top edge should not be within");
        assertFalse(box.within(new Point2D(5, 0, 1)), "Point on bottom edge should not be within");
        assertFalse(box.within(new Point2D(0, 5, 1)), "Point on left edge should not be within");
        assertFalse(box.within(new Point2D(10, 5, 1)), "Point on right edge should not be within");
    }

    @Test
    void testPointsJustOutsideEachEdge() {
        Point2D tr = new Point2D(10, 10, 2);
        Point2D tl = new Point2D(0, 10, 2);
        Point2D br = new Point2D(10, 0, 2);
        Point2D bl = new Point2D(0, 0, 2);
        BoundingBox box = new BoundingBox(tr, tl, br, bl, 2, "animal");

        // Test points just outside the bounding box
        assertFalse(box.within(new Point2D(-1, 5, 2)), "Point just left of the bounding box");
        assertFalse(box.within(new Point2D(11, 5, 2)), "Point just right of the bounding box");
        assertFalse(box.within(new Point2D(5, -1, 2)), "Point just below the bounding box");
        assertFalse(box.within(new Point2D(5, 11, 2)), "Point just above the bounding box");
    }

    @Test
    void testZeroWidthHeightBoundingBox() {
        Point2D tr = new Point2D(5, 5, 3);
        Point2D tl = new Point2D(5, 5, 3);
        Point2D br = new Point2D(5, 5, 3);
        Point2D bl = new Point2D(5, 5, 3);
        BoundingBox box = new BoundingBox(tr, tl, br, bl, 3, "object");

        // Test that only the exact point is within
        //assertTrue(box.within(new Point2D(5, 5, 3)), "Exact point should be within");
        assertFalse(box.within(new Point2D(5, 4, 3)), "Nearby point should not be within");
        assertFalse(box.within(new Point2D(6, 5, 3)), "Nearby point should not be within");
    }

    @Test
    void testLargeCoordinates() {
        Point2D br = new Point2D(10000, 10000, 4);
        Point2D bl = new Point2D(0, 10000, 4);
        Point2D tr = new Point2D(10000, 0, 4);
        Point2D tl = new Point2D(0, 0, 4);
        BoundingBox box = new BoundingBox(tr, tl, br, bl, 4, "space");

        // Large coordinates inside the box
        assertTrue(box.within(new Point2D(5000, 5000, 4)), "Point well within large bounding box");
        assertFalse(box.within(new Point2D(10001, 5000, 4)), "Point just outside large bounding box");
    }
}