|
5 | 5 |
|
6 | 6 | import org.junit.jupiter.api.Test; |
7 | 7 |
|
8 | | -public class MedianTest { |
| 8 | +/** |
| 9 | + * Test class for {@link Median}. |
| 10 | + * Tests various scenarios including edge cases, odd/even length arrays, |
| 11 | + * negative values, and unsorted inputs. |
| 12 | + */ |
| 13 | +class MedianTest { |
| 14 | + |
9 | 15 | @Test |
10 | | - void medianSingleValue() { |
| 16 | + void testMedianSingleValue() { |
11 | 17 | int[] arr = {0}; |
12 | 18 | assertEquals(0, Median.median(arr)); |
13 | 19 | } |
14 | 20 |
|
15 | 21 | @Test |
16 | | - void medianTwoValues() { |
| 22 | + void testMedianSinglePositiveValue() { |
| 23 | + int[] arr = {42}; |
| 24 | + assertEquals(42, Median.median(arr)); |
| 25 | + } |
| 26 | + |
| 27 | + @Test |
| 28 | + void testMedianSingleNegativeValue() { |
| 29 | + int[] arr = {-15}; |
| 30 | + assertEquals(-15, Median.median(arr)); |
| 31 | + } |
| 32 | + |
| 33 | + @Test |
| 34 | + void testMedianTwoValues() { |
17 | 35 | int[] arr = {1, 2}; |
18 | 36 | assertEquals(1.5, Median.median(arr)); |
19 | 37 | } |
20 | 38 |
|
21 | 39 | @Test |
22 | | - void medianThreeValues() { |
| 40 | + void testMedianTwoIdenticalValues() { |
| 41 | + int[] arr = {5, 5}; |
| 42 | + assertEquals(5.0, Median.median(arr)); |
| 43 | + } |
| 44 | + |
| 45 | + @Test |
| 46 | + void testMedianThreeValues() { |
23 | 47 | int[] arr = {1, 2, 3}; |
24 | 48 | assertEquals(2, Median.median(arr)); |
25 | 49 | } |
26 | 50 |
|
27 | 51 | @Test |
28 | | - void medianDecimalValueReturn() { |
| 52 | + void testMedianThreeUnsortedValues() { |
| 53 | + int[] arr = {3, 1, 2}; |
| 54 | + assertEquals(2, Median.median(arr)); |
| 55 | + } |
| 56 | + |
| 57 | + @Test |
| 58 | + void testMedianDecimalValueReturn() { |
29 | 59 | int[] arr = {1, 2, 3, 4, 5, 6, 8, 9}; |
30 | 60 | assertEquals(4.5, Median.median(arr)); |
31 | 61 | } |
32 | 62 |
|
33 | 63 | @Test |
34 | | - void medianNegativeValues() { |
| 64 | + void testMedianNegativeValues() { |
35 | 65 | int[] arr = {-27, -16, -7, -4, -2, -1}; |
36 | 66 | assertEquals(-5.5, Median.median(arr)); |
37 | 67 | } |
38 | 68 |
|
39 | 69 | @Test |
40 | | - void medianEmptyArrayThrows() { |
| 70 | + void testMedianMixedPositiveAndNegativeValues() { |
| 71 | + int[] arr = {-10, -5, 0, 5, 10}; |
| 72 | + assertEquals(0, Median.median(arr)); |
| 73 | + } |
| 74 | + |
| 75 | + @Test |
| 76 | + void testMedianMixedUnsortedValues() { |
| 77 | + int[] arr = {10, -5, 0, 5, -10}; |
| 78 | + assertEquals(0, Median.median(arr)); |
| 79 | + } |
| 80 | + |
| 81 | + @Test |
| 82 | + void testMedianLargeOddArray() { |
| 83 | + int[] arr = {9, 7, 5, 3, 1, 2, 4, 6, 8}; |
| 84 | + assertEquals(5, Median.median(arr)); |
| 85 | + } |
| 86 | + |
| 87 | + @Test |
| 88 | + void testMedianLargeEvenArray() { |
| 89 | + int[] arr = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; |
| 90 | + assertEquals(55.0, Median.median(arr)); |
| 91 | + } |
| 92 | + |
| 93 | + @Test |
| 94 | + void testMedianAllSameValues() { |
| 95 | + int[] arr = {7, 7, 7, 7, 7}; |
| 96 | + assertEquals(7.0, Median.median(arr)); |
| 97 | + } |
| 98 | + |
| 99 | + @Test |
| 100 | + void testMedianWithZeros() { |
| 101 | + int[] arr = {0, 0, 0, 0, 0}; |
| 102 | + assertEquals(0.0, Median.median(arr)); |
| 103 | + } |
| 104 | + |
| 105 | + @Test |
| 106 | + void testMedianAlreadySorted() { |
| 107 | + int[] arr = {1, 2, 3, 4, 5}; |
| 108 | + assertEquals(3, Median.median(arr)); |
| 109 | + } |
| 110 | + |
| 111 | + @Test |
| 112 | + void testMedianReverseSorted() { |
| 113 | + int[] arr = {5, 4, 3, 2, 1}; |
| 114 | + assertEquals(3, Median.median(arr)); |
| 115 | + } |
| 116 | + |
| 117 | + @Test |
| 118 | + void testMedianWithDuplicates() { |
| 119 | + int[] arr = {1, 2, 2, 3, 3, 3, 4}; |
| 120 | + assertEquals(3, Median.median(arr)); |
| 121 | + } |
| 122 | + |
| 123 | + @Test |
| 124 | + void testMedianEmptyArrayThrows() { |
41 | 125 | int[] arr = {}; |
42 | 126 | assertThrows(IllegalArgumentException.class, () -> Median.median(arr)); |
43 | 127 | } |
| 128 | + |
| 129 | + @Test |
| 130 | + void testMedianNullArrayThrows() { |
| 131 | + assertThrows(IllegalArgumentException.class, () -> Median.median(null)); |
| 132 | + } |
| 133 | + |
| 134 | + @Test |
| 135 | + void testMedianExtremeValues() { |
| 136 | + int[] arr = {Integer.MAX_VALUE, Integer.MIN_VALUE}; |
| 137 | + assertEquals(-0.5, Median.median(arr)); |
| 138 | + } |
| 139 | + |
| 140 | + @Test |
| 141 | + void testMedianTwoNegativeValues() { |
| 142 | + int[] arr = {-10, -20}; |
| 143 | + assertEquals(-15.0, Median.median(arr)); |
| 144 | + } |
| 145 | + |
| 146 | + @Test |
| 147 | + void testMedianFourValuesEven() { |
| 148 | + int[] arr = {1, 2, 3, 4}; |
| 149 | + assertEquals(2.5, Median.median(arr)); |
| 150 | + } |
| 151 | + |
| 152 | + @Test |
| 153 | + void testMedianFiveValuesOdd() { |
| 154 | + int[] arr = {10, 20, 30, 40, 50}; |
| 155 | + assertEquals(30.0, Median.median(arr)); |
| 156 | + } |
44 | 157 | } |
0 commit comments