|
3 | 3 | import org.junit.jupiter.api.Assertions; |
4 | 4 | import org.junit.jupiter.api.Test; |
5 | 5 |
|
6 | | -public class HeronsFormulaTest { |
| 6 | +/** |
| 7 | + * Test cases for {@link HeronsFormula}. |
| 8 | + */ |
| 9 | +class HeronsFormulaTest { |
| 10 | + |
| 11 | + private static final double EPSILON = 1e-10; |
| 12 | + |
| 13 | + @Test |
| 14 | + void testRightTriangleThreeFourFive() { |
| 15 | + Assertions.assertEquals(6.0, HeronsFormula.herons(3, 4, 5), EPSILON); |
| 16 | + } |
| 17 | + |
| 18 | + @Test |
| 19 | + void testTriangleTwentyFourThirtyEighteen() { |
| 20 | + Assertions.assertEquals(216.0, HeronsFormula.herons(24, 30, 18), EPSILON); |
| 21 | + } |
| 22 | + |
| 23 | + @Test |
| 24 | + void testEquilateralTriangle() { |
| 25 | + Assertions.assertEquals(0.4330127018922193, HeronsFormula.herons(1, 1, 1), EPSILON); |
| 26 | + } |
| 27 | + |
| 28 | + @Test |
| 29 | + void testScaleneTriangleFourFiveEight() { |
| 30 | + Assertions.assertEquals(8.181534085976786, HeronsFormula.herons(4, 5, 8), EPSILON); |
| 31 | + } |
| 32 | + |
| 33 | + @Test |
| 34 | + void testEquilateralTriangleLargeSides() { |
| 35 | + final double side = 10.0; |
| 36 | + final double expectedArea = Math.sqrt(3) / 4 * side * side; |
| 37 | + Assertions.assertEquals(expectedArea, HeronsFormula.herons(side, side, side), EPSILON); |
| 38 | + } |
7 | 39 |
|
8 | 40 | @Test |
9 | | - void test1() { |
10 | | - Assertions.assertEquals(HeronsFormula.herons(3, 4, 5), 6.0); |
| 41 | + void testIsoscelesTriangle() { |
| 42 | + Assertions.assertEquals(12.0, HeronsFormula.herons(5, 5, 6), EPSILON); |
11 | 43 | } |
12 | 44 |
|
13 | 45 | @Test |
14 | | - void test2() { |
15 | | - Assertions.assertEquals(HeronsFormula.herons(24, 30, 18), 216.0); |
| 46 | + void testSmallTriangle() { |
| 47 | + Assertions.assertEquals(0.4330127018922193, HeronsFormula.herons(1.0, 1.0, 1.0), EPSILON); |
16 | 48 | } |
17 | 49 |
|
18 | 50 | @Test |
19 | | - void test3() { |
20 | | - Assertions.assertEquals(HeronsFormula.herons(1, 1, 1), 0.4330127018922193); |
| 51 | + void testLargeTriangle() { |
| 52 | + Assertions.assertEquals(600.0, HeronsFormula.herons(30, 40, 50), EPSILON); |
21 | 53 | } |
22 | 54 |
|
23 | 55 | @Test |
24 | | - void test4() { |
25 | | - Assertions.assertEquals(HeronsFormula.herons(4, 5, 8), 8.181534085976786); |
| 56 | + void testDecimalSides() { |
| 57 | + final double area = HeronsFormula.herons(2.5, 3.5, 4.0); |
| 58 | + Assertions.assertTrue(area > 0); |
| 59 | + Assertions.assertEquals(4.330127018922194, area, EPSILON); |
26 | 60 | } |
27 | 61 |
|
28 | 62 | @Test |
29 | | - public void testCalculateAreaWithInvalidInput() { |
| 63 | + void testDegenerateTriangleEqualToSumOfOtherTwo() { |
30 | 64 | Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(1, 2, 3); }); |
| 65 | + } |
| 66 | + |
| 67 | + @Test |
| 68 | + void testDegenerateTriangleVariant2() { |
31 | 69 | Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(2, 1, 3); }); |
| 70 | + } |
| 71 | + |
| 72 | + @Test |
| 73 | + void testDegenerateTriangleVariant3() { |
32 | 74 | Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(3, 2, 1); }); |
| 75 | + } |
| 76 | + |
| 77 | + @Test |
| 78 | + void testDegenerateTriangleVariant4() { |
33 | 79 | Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(1, 3, 2); }); |
| 80 | + } |
34 | 81 |
|
35 | | - Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(1, 1, 0); }); |
36 | | - Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(1, 0, 1); }); |
| 82 | + @Test |
| 83 | + void testInvalidTriangleSideGreaterThanSum() { |
| 84 | + Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(1, 1, 5); }); |
| 85 | + } |
| 86 | + |
| 87 | + @Test |
| 88 | + void testZeroFirstSide() { |
37 | 89 | Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(0, 1, 1); }); |
38 | 90 | } |
| 91 | + |
| 92 | + @Test |
| 93 | + void testZeroSecondSide() { |
| 94 | + Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(1, 0, 1); }); |
| 95 | + } |
| 96 | + |
| 97 | + @Test |
| 98 | + void testZeroThirdSide() { |
| 99 | + Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(1, 1, 0); }); |
| 100 | + } |
| 101 | + |
| 102 | + @Test |
| 103 | + void testNegativeFirstSide() { |
| 104 | + Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(-1, 2, 2); }); |
| 105 | + } |
| 106 | + |
| 107 | + @Test |
| 108 | + void testNegativeSecondSide() { |
| 109 | + Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(2, -1, 2); }); |
| 110 | + } |
| 111 | + |
| 112 | + @Test |
| 113 | + void testNegativeThirdSide() { |
| 114 | + Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(2, 2, -1); }); |
| 115 | + } |
| 116 | + |
| 117 | + @Test |
| 118 | + void testAllNegativeSides() { |
| 119 | + Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(-1, -2, -3); }); |
| 120 | + } |
| 121 | + |
| 122 | + @Test |
| 123 | + void testAllZeroSides() { |
| 124 | + Assertions.assertThrows(IllegalArgumentException.class, () -> { HeronsFormula.herons(0, 0, 0); }); |
| 125 | + } |
| 126 | + |
| 127 | + @Test |
| 128 | + void testVerySmallTriangle() { |
| 129 | + final double result = HeronsFormula.herons(0.001, 0.001, 0.001); |
| 130 | + Assertions.assertTrue(result > 0); |
| 131 | + Assertions.assertTrue(result < 0.001); |
| 132 | + } |
| 133 | + |
| 134 | + @Test |
| 135 | + void testRightTriangleFiveTwelveThirteen() { |
| 136 | + Assertions.assertEquals(30.0, HeronsFormula.herons(5, 12, 13), EPSILON); |
| 137 | + } |
| 138 | + |
| 139 | + @Test |
| 140 | + void testRightTriangleEightFifteenSeventeen() { |
| 141 | + Assertions.assertEquals(60.0, HeronsFormula.herons(8, 15, 17), EPSILON); |
| 142 | + } |
39 | 143 | } |
0 commit comments