mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-12-19 07:00:35 +08:00
158 lines
3.7 KiB
Java
158 lines
3.7 KiB
Java
package com.thealgorithms.maths;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
/**
|
|
* Test class for {@link Median}.
|
|
* Tests various scenarios including edge cases, odd/even length arrays,
|
|
* negative values, and unsorted inputs.
|
|
*/
|
|
class MedianTest {
|
|
|
|
@Test
|
|
void testMedianSingleValue() {
|
|
int[] arr = {0};
|
|
assertEquals(0, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianSinglePositiveValue() {
|
|
int[] arr = {42};
|
|
assertEquals(42, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianSingleNegativeValue() {
|
|
int[] arr = {-15};
|
|
assertEquals(-15, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianTwoValues() {
|
|
int[] arr = {1, 2};
|
|
assertEquals(1.5, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianTwoIdenticalValues() {
|
|
int[] arr = {5, 5};
|
|
assertEquals(5.0, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianThreeValues() {
|
|
int[] arr = {1, 2, 3};
|
|
assertEquals(2, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianThreeUnsortedValues() {
|
|
int[] arr = {3, 1, 2};
|
|
assertEquals(2, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianDecimalValueReturn() {
|
|
int[] arr = {1, 2, 3, 4, 5, 6, 8, 9};
|
|
assertEquals(4.5, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianNegativeValues() {
|
|
int[] arr = {-27, -16, -7, -4, -2, -1};
|
|
assertEquals(-5.5, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianMixedPositiveAndNegativeValues() {
|
|
int[] arr = {-10, -5, 0, 5, 10};
|
|
assertEquals(0, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianMixedUnsortedValues() {
|
|
int[] arr = {10, -5, 0, 5, -10};
|
|
assertEquals(0, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianLargeOddArray() {
|
|
int[] arr = {9, 7, 5, 3, 1, 2, 4, 6, 8};
|
|
assertEquals(5, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianLargeEvenArray() {
|
|
int[] arr = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
|
|
assertEquals(55.0, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianAllSameValues() {
|
|
int[] arr = {7, 7, 7, 7, 7};
|
|
assertEquals(7.0, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianWithZeros() {
|
|
int[] arr = {0, 0, 0, 0, 0};
|
|
assertEquals(0.0, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianAlreadySorted() {
|
|
int[] arr = {1, 2, 3, 4, 5};
|
|
assertEquals(3, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianReverseSorted() {
|
|
int[] arr = {5, 4, 3, 2, 1};
|
|
assertEquals(3, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianWithDuplicates() {
|
|
int[] arr = {1, 2, 2, 3, 3, 3, 4};
|
|
assertEquals(3, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianEmptyArrayThrows() {
|
|
int[] arr = {};
|
|
assertThrows(IllegalArgumentException.class, () -> Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianNullArrayThrows() {
|
|
assertThrows(IllegalArgumentException.class, () -> Median.median(null));
|
|
}
|
|
|
|
@Test
|
|
void testMedianExtremeValues() {
|
|
int[] arr = {Integer.MAX_VALUE, Integer.MIN_VALUE};
|
|
assertEquals(-0.5, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianTwoNegativeValues() {
|
|
int[] arr = {-10, -20};
|
|
assertEquals(-15.0, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianFourValuesEven() {
|
|
int[] arr = {1, 2, 3, 4};
|
|
assertEquals(2.5, Median.median(arr));
|
|
}
|
|
|
|
@Test
|
|
void testMedianFiveValuesOdd() {
|
|
int[] arr = {10, 20, 30, 40, 50};
|
|
assertEquals(30.0, Median.median(arr));
|
|
}
|
|
}
|