/
shvidkuli
/
kkrjava
Обзор
Документация
Войти
/
shvidkuli
/
kkrjava
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/test/java/com/montecarlo/tests/TriangleTest.java
147 строк
4 KB
kroc400
first_commit
30 апр 2026, 22:44
30 апр 2026, 22:44
2347fdb
Код
Авторство
О чём код?
package com.montecarlo.tests; import com.montecarlo.geometry.BoundingBox; import com.montecarlo.geometry.Point; import com.montecarlo.geometry.Triangle; import org.junit.Test; import static org.junit.Assert.*; /** * Unit tests for {@link Triangle}. * * <p>Uses the default triangle BEF from the figure "debf": * <pre> * B = (4, 0) E = (4, 2) F = (2, 0) * Area = 2 * </pre> * </p> */ public class TriangleTest { // Triangle BEF: b=(4,0), e=(4,2), f=(2,0) private static final Triangle BEF = new Triangle( new Point(4, 0), new Point(4, 2), new Point(2, 0) ); // ----------------------------------------------------------------------- // Area // ----------------------------------------------------------------------- @Test public void testAreaDefault() { assertEquals("Area of BEF must be 2.0", 2.0, BEF.analyticalArea(), 1e-12); } @Test public void testAreaUnitRightTriangle() { Triangle t = new Triangle(new Point(0, 0), new Point(1, 0), new Point(0, 1)); assertEquals(0.5, t.analyticalArea(), 1e-12); } @Test public void testAreaEquilateral() { // Equilateral triangle with side 2: area = √3 Triangle t = new Triangle( new Point(0, 0), new Point(2, 0), new Point(1, Math.sqrt(3)) ); assertEquals(Math.sqrt(3), t.analyticalArea(), 1e-10); } // ----------------------------------------------------------------------- // contains — vertices (on boundary → must return true) // ----------------------------------------------------------------------- @Test public void testContainsVertexB() { assertTrue(BEF.contains(new Point(4, 0))); } @Test public void testContainsVertexE() { assertTrue(BEF.contains(new Point(4, 2))); } @Test public void testContainsVertexF() { assertTrue(BEF.contains(new Point(2, 0))); } // ----------------------------------------------------------------------- // contains — edge midpoints (boundary) // ----------------------------------------------------------------------- @Test public void testContainsMidpointBE() { // Midpoint of BE: (4, 1) assertTrue(BEF.contains(new Point(4, 1))); } @Test public void testContainsMidpointEF() { // Midpoint of EF: (3, 1) — lies on the hypotenuse assertTrue(BEF.contains(new Point(3, 1))); } @Test public void testContainsMidpointBF() { // Midpoint of BF: (3, 0) assertTrue(BEF.contains(new Point(3, 0))); } // ----------------------------------------------------------------------- // contains — centroid (strictly inside) // ----------------------------------------------------------------------- @Test public void testContainsCentroid() { // Centroid = ((4+4+2)/3, (0+2+0)/3) = (10/3, 2/3) assertTrue(BEF.contains(new Point(10.0 / 3, 2.0 / 3))); } // ----------------------------------------------------------------------- // contains — points strictly outside // ----------------------------------------------------------------------- @Test public void testNotContainsOrigin() { assertFalse(BEF.contains(new Point(0, 0))); } @Test public void testNotContainsAboveHypotenuse() { // (2, 2): above the hypotenuse line y = x − 2 assertFalse(BEF.contains(new Point(2, 2))); } @Test public void testNotContainsLeftOfFigure() { assertFalse(BEF.contains(new Point(1, 1))); } @Test public void testNotContainsAboveTriangle() { assertFalse(BEF.contains(new Point(3, 2))); } // ----------------------------------------------------------------------- // Bounding box // ----------------------------------------------------------------------- @Test public void testBoundingBox() { BoundingBox bb = BEF.getBoundingBox(); assertEquals(2.0, bb.getMinX(), 1e-12); assertEquals(0.0, bb.getMinY(), 1e-12); assertEquals(4.0, bb.getMaxX(), 1e-12); assertEquals(2.0, bb.getMaxY(), 1e-12); } @Test public void testBoundingBoxArea() { // bounding box of BEF = [2,4]×[0,2] → area = 4 assertEquals(4.0, BEF.getBoundingBox().area(), 1e-12); } }