Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 27 additions & 1 deletion src/main/java/com/thealgorithms/maths/Area.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public static double surfaceAreaSphere(final double radius) {
*/
public static double surfaceAreaPyramid(final double sideLength, final double slantHeight) {
if (sideLength <= 0) {
throw new IllegalArgumentException("");
throw new IllegalArgumentException("Side length must be greater than 0");
}
if (slantHeight <= 0) {
throw new IllegalArgumentException("slant height must be greater than 0");
Expand Down Expand Up @@ -232,4 +232,30 @@ public static double surfaceAreaCone(final double radius, final double height) {
}
return Math.PI * radius * (radius + Math.pow(height * height + radius * radius, 0.5));
}

/**
* Calculate the surface area of a triangular prism with a right-triangle base.
*
* @param sideA first perpendicular side of the triangular base
* @param sideB second perpendicular side of the triangular base
* @param prismLength length of the prism
* @return surface area of the given triangular prism
*/
public static double surfaceAreaTriangularPrism(final double sideA, final double sideB, final double prismLength) {
if (sideA <= 0) {
throw new IllegalArgumentException("Side A must be greater than 0");
}
if (sideB <= 0) {
throw new IllegalArgumentException("Side B must be greater than 0");
}
if (prismLength <= 0) {
throw new IllegalArgumentException("Prism length must be greater than 0");
}

double hypotenuse = Math.sqrt(sideA * sideA + sideB * sideB);
double totalTriangleArea = sideA * sideB;
double lateralSurfaceArea = prismLength * (sideA + sideB + hypotenuse);

return totalTriangleArea + lateralSurfaceArea;
}
}
79 changes: 41 additions & 38 deletions src/test/java/com/thealgorithms/maths/AreaTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,44 +71,47 @@ void surfaceAreaCone() {
assertEquals(301.59289474462014, Area.surfaceAreaCone(6, 8));
}

@Test
void testSurfaceAreaTriangularPrism() {
assertEquals(132.0, Area.surfaceAreaTriangularPrism(3, 4, 10), 1e-9);
}

@Test
void testAllIllegalInput() {
assertAll(()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCube(0)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCuboid(0, 1, 2)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCuboid(1, 0, 2)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCuboid(1, 2, 0)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaSphere(0)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaRectangle(0, 10)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaRectangle(10, 0)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCylinder(0, 1)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCylinder(1, 0)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaSquare(0)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTriangle(0, 1)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTriangle(1, 0)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaParallelogram(0, 1)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaParallelogram(1, 0)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTrapezium(0, 1, 1)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTrapezium(1, 0, 1)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTrapezium(1, 1, 0)),
()
-> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCircle(0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaHemisphere(0)), () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCone(1, 0)), () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCone(0, 1)));
assertAll(
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCube(0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCuboid(0, 1, 2)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCuboid(1, 0, 2)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCuboid(1, 2, 0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaSphere(0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaRectangle(0, 10)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaRectangle(10, 0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCylinder(0, 1)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCylinder(1, 0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaSquare(0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTriangle(0, 1)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTriangle(1, 0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaParallelogram(0, 1)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaParallelogram(1, 0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTrapezium(0, 1, 1)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTrapezium(1, 0, 1)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTrapezium(1, 1, 0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCircle(0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaHemisphere(0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCone(1, 0)),
() -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCone(0, 1)),
() -> assertThrows(IllegalArgumentException.class,
() -> Area.surfaceAreaTriangularPrism(0, 4, 10)),
() -> assertThrows(IllegalArgumentException.class,
() -> Area.surfaceAreaTriangularPrism(3, 0, 10)),
() -> assertThrows(IllegalArgumentException.class,
() -> Area.surfaceAreaTriangularPrism(3, 4, 0)),
() -> assertThrows(IllegalArgumentException.class,
() -> Area.surfaceAreaTriangularPrism(-3, 4, 10)),
() -> assertThrows(IllegalArgumentException.class,
() -> Area.surfaceAreaTriangularPrism(3, -4, 10)),
() -> assertThrows(IllegalArgumentException.class,
() -> Area.surfaceAreaTriangularPrism(3, 4, -10))
);
}
}
}
Loading