From ddb2b875df96ac8f03c6e72f81fe0c06ffaec4fb Mon Sep 17 00:00:00 2001 From: Alex Klymenko Date: Wed, 21 Aug 2024 22:47:56 +0200 Subject: [PATCH 1/2] tests: adding tests for LargestRectangle --- .../stacks/LargestRectangleTest.java | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/test/java/com/thealgorithms/stacks/LargestRectangleTest.java diff --git a/src/test/java/com/thealgorithms/stacks/LargestRectangleTest.java b/src/test/java/com/thealgorithms/stacks/LargestRectangleTest.java new file mode 100644 index 000000000000..611a101e3c54 --- /dev/null +++ b/src/test/java/com/thealgorithms/stacks/LargestRectangleTest.java @@ -0,0 +1,77 @@ +package com.thealgorithms.stacks; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +public class LargestRectangleTest { + + @Test + void testLargestRectangleHistogramWithTypicalCases() { + // Typical case with mixed heights + int[] heights = {2, 1, 5, 6, 2, 3}; + String expected = "10"; + String result = LargestRectangle.largestRectanglehistogram(heights); + assertEquals(expected, result); + + // Another typical case with increasing heights + heights = new int[]{2, 4}; + expected = "4"; + result = LargestRectangle.largestRectanglehistogram(heights); + assertEquals(expected, result); + + // Case with multiple bars of the same height + heights = new int[]{4, 4, 4, 4}; + expected = "16"; + result = LargestRectangle.largestRectanglehistogram(heights); + assertEquals(expected, result); + } + + @Test + void testLargestRectangleHistogramWithEdgeCases() { + // Edge case with an empty array + int[] heights = {}; + String expected = "0"; + String result = LargestRectangle.largestRectanglehistogram(heights); + assertEquals(expected, result); + + // Edge case with a single bar + heights = new int[]{5}; + expected = "5"; + result = LargestRectangle.largestRectanglehistogram(heights); + assertEquals(expected, result); + + // Edge case with all bars of height 0 + heights = new int[]{0, 0, 0}; + expected = "0"; + result = LargestRectangle.largestRectanglehistogram(heights); + assertEquals(expected, result); + } + + @Test + void testLargestRectangleHistogramWithLargeInput() { + // Large input case + int[] heights = new int[10000]; + for (int i = 0; i < heights.length; i++) { + heights[i] = 1; + } + String expected = "10000"; + String result = LargestRectangle.largestRectanglehistogram(heights); + assertEquals(expected, result); + } + + @Test + void testLargestRectangleHistogramWithComplexCases() { + // Complex case with a mix of heights + int[] heights = {6, 2, 5, 4, 5, 1, 6}; + String expected = "12"; + String result = LargestRectangle.largestRectanglehistogram(heights); + assertEquals(expected, result); + + // Case with a peak in the middle + heights = new int[]{2, 1, 5, 6, 2, 3, 1}; + expected = "10"; + result = LargestRectangle.largestRectanglehistogram(heights); + assertEquals(expected, result); + } +} From e687af60e498245668a554cee67cba52ed59cb93 Mon Sep 17 00:00:00 2001 From: Alex Klymenko Date: Wed, 21 Aug 2024 22:52:29 +0200 Subject: [PATCH 2/2] tests: fix formatting --- .../com/thealgorithms/stacks/LargestRectangleTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/thealgorithms/stacks/LargestRectangleTest.java b/src/test/java/com/thealgorithms/stacks/LargestRectangleTest.java index 611a101e3c54..023f20a159f1 100644 --- a/src/test/java/com/thealgorithms/stacks/LargestRectangleTest.java +++ b/src/test/java/com/thealgorithms/stacks/LargestRectangleTest.java @@ -15,13 +15,13 @@ void testLargestRectangleHistogramWithTypicalCases() { assertEquals(expected, result); // Another typical case with increasing heights - heights = new int[]{2, 4}; + heights = new int[] {2, 4}; expected = "4"; result = LargestRectangle.largestRectanglehistogram(heights); assertEquals(expected, result); // Case with multiple bars of the same height - heights = new int[]{4, 4, 4, 4}; + heights = new int[] {4, 4, 4, 4}; expected = "16"; result = LargestRectangle.largestRectanglehistogram(heights); assertEquals(expected, result); @@ -36,13 +36,13 @@ void testLargestRectangleHistogramWithEdgeCases() { assertEquals(expected, result); // Edge case with a single bar - heights = new int[]{5}; + heights = new int[] {5}; expected = "5"; result = LargestRectangle.largestRectanglehistogram(heights); assertEquals(expected, result); // Edge case with all bars of height 0 - heights = new int[]{0, 0, 0}; + heights = new int[] {0, 0, 0}; expected = "0"; result = LargestRectangle.largestRectanglehistogram(heights); assertEquals(expected, result); @@ -69,7 +69,7 @@ void testLargestRectangleHistogramWithComplexCases() { assertEquals(expected, result); // Case with a peak in the middle - heights = new int[]{2, 1, 5, 6, 2, 3, 1}; + heights = new int[] {2, 1, 5, 6, 2, 3, 1}; expected = "10"; result = LargestRectangle.largestRectanglehistogram(heights); assertEquals(expected, result);