1
1
package com .thealgorithms .misc ;
2
2
3
3
import static org .junit .jupiter .api .Assertions .assertEquals ;
4
- import static org .junit .jupiter .api .Assertions .assertFalse ;
5
4
import static org .junit .jupiter .api .Assertions .assertThrows ;
6
5
7
- import org .apache .commons .lang3 .tuple .Pair ;
8
6
import org .junit .jupiter .api .Test ;
9
7
10
8
/**
11
- * Test case for Two sum Problem.
12
- * @author Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi )
9
+ * Test case for Median Of Running Array Problem.
10
+ * @author Ansh Shah (https://github.com/govardhanshah456 )
13
11
*/
14
12
15
13
public class MedianOfRunningArrayTest {
16
14
private static final String EXCEPTION_MESSAGE = "Enter at least 1 element, Median of empty list is not defined!" ;
17
15
18
16
@ Test
19
17
public void testWhenInvalidInoutProvidedShouldThrowException () {
20
- MedianOfRunningArray stream = new MedianOfRunningArray ();
18
+ var stream = new MedianOfRunningArrayInteger ();
21
19
IllegalArgumentException exception = assertThrows (IllegalArgumentException .class , () -> stream .median ());
22
20
assertEquals (exception .getMessage (), EXCEPTION_MESSAGE );
23
21
}
24
22
25
23
@ Test
26
24
public void testWithNegativeValues () {
27
- MedianOfRunningArray stream = new MedianOfRunningArray ();
25
+ var stream = new MedianOfRunningArrayInteger ();
28
26
stream .insert (-1 );
29
27
assertEquals (-1 , stream .median ());
30
28
stream .insert (-2 );
31
- assertEquals (-1.5 , stream .median ());
29
+ assertEquals (-1 , stream .median ());
32
30
stream .insert (-3 );
33
31
assertEquals (-2 , stream .median ());
34
32
}
35
33
36
34
@ Test
37
35
public void testWithSingleValues () {
38
- MedianOfRunningArray stream = new MedianOfRunningArray ();
36
+ var stream = new MedianOfRunningArrayInteger ();
39
37
stream .insert (-1 );
40
38
assertEquals (-1 , stream .median ());
41
39
}
42
40
43
41
@ Test
44
42
public void testWithRandomValues () {
45
- MedianOfRunningArray stream = new MedianOfRunningArray ();
43
+ var stream = new MedianOfRunningArrayInteger ();
46
44
stream .insert (10 );
47
- assertEquals (10.0 , stream .median ());
45
+ assertEquals (10 , stream .median ());
48
46
49
47
stream .insert (5 );
50
- assertEquals (7.5 , stream .median ());
48
+ assertEquals (7 , stream .median ());
51
49
52
50
stream .insert (20 );
53
- assertEquals (10.0 , stream .median ());
51
+ assertEquals (10 , stream .median ());
54
52
55
53
stream .insert (15 );
56
- assertEquals (12.5 , stream .median ());
54
+ assertEquals (12 , stream .median ());
57
55
58
56
stream .insert (25 );
59
- assertEquals (15.0 , stream .median ());
57
+ assertEquals (15 , stream .median ());
60
58
61
59
stream .insert (30 );
62
- assertEquals (17.5 , stream .median ());
60
+ assertEquals (17 , stream .median ());
63
61
64
62
stream .insert (35 );
65
- assertEquals (20.0 , stream .median ());
63
+ assertEquals (20 , stream .median ());
66
64
67
65
stream .insert (1 );
68
- assertEquals (17.5 , stream .median ());
66
+ assertEquals (17 , stream .median ());
69
67
}
70
68
71
69
@ Test
72
70
public void testWithNegativeAndPositiveValues () {
73
- MedianOfRunningArray stream = new MedianOfRunningArray ();
71
+ var stream = new MedianOfRunningArrayInteger ();
74
72
stream .insert (-1 );
75
73
assertEquals (-1 , stream .median ());
76
74
stream .insert (2 );
77
- assertEquals (0.5 , stream .median ());
75
+ assertEquals (0 , stream .median ());
78
76
stream .insert (-3 );
79
77
assertEquals (-1 , stream .median ());
80
78
}
81
79
82
80
@ Test
83
81
public void testWithDuplicateValues () {
84
- MedianOfRunningArray stream = new MedianOfRunningArray ();
82
+ var stream = new MedianOfRunningArrayInteger ();
85
83
stream .insert (-1 );
86
84
assertEquals (-1 , stream .median ());
87
85
stream .insert (-1 );
@@ -92,7 +90,7 @@ public void testWithDuplicateValues() {
92
90
93
91
@ Test
94
92
public void testWithDuplicateValuesB () {
95
- MedianOfRunningArray stream = new MedianOfRunningArray ();
93
+ var stream = new MedianOfRunningArrayInteger ();
96
94
stream .insert (10 );
97
95
stream .insert (20 );
98
96
stream .insert (10 );
@@ -105,57 +103,97 @@ public void testWithDuplicateValuesB() {
105
103
106
104
@ Test
107
105
public void testWithLargeValues () {
108
- MedianOfRunningArray stream = new MedianOfRunningArray ();
106
+ var stream = new MedianOfRunningArrayInteger ();
109
107
stream .insert (1000000 );
110
108
assertEquals (1000000 , stream .median ());
111
109
stream .insert (12000 );
112
110
assertEquals (506000 , stream .median ());
113
111
stream .insert (15000000 );
114
112
assertEquals (1000000 , stream .median ());
115
113
stream .insert (2300000 );
116
- assertEquals (1650000.00 , stream .median ());
114
+ assertEquals (1650000 , stream .median ());
117
115
}
118
116
119
117
@ Test
120
118
public void testWithLargeCountOfValues () {
121
- MedianOfRunningArray stream = new MedianOfRunningArray ();
119
+ var stream = new MedianOfRunningArrayInteger ();
122
120
for (int i = 1 ; i <= 1000 ; i ++) stream .insert (i );
123
- assertEquals (500.5 , stream .median ());
121
+ assertEquals (500 , stream .median ());
124
122
}
125
123
126
124
@ Test
127
125
public void testWithThreeValuesInDescendingOrder () {
128
- MedianOfRunningArray stream = new MedianOfRunningArray ();
126
+ var stream = new MedianOfRunningArrayInteger ();
129
127
stream .insert (30 );
130
128
stream .insert (20 );
131
129
stream .insert (10 );
132
- assertEquals (20.0 , stream .median ());
130
+ assertEquals (20 , stream .median ());
133
131
}
134
132
135
133
@ Test
136
134
public void testWithThreeValuesInOrder () {
137
- MedianOfRunningArray stream = new MedianOfRunningArray ();
135
+ var stream = new MedianOfRunningArrayInteger ();
138
136
stream .insert (10 );
139
137
stream .insert (20 );
140
138
stream .insert (30 );
141
- assertEquals (20.0 , stream .median ());
139
+ assertEquals (20 , stream .median ());
142
140
}
143
141
144
142
@ Test
145
143
public void testWithThreeValuesNotInOrderA () {
146
- MedianOfRunningArray stream = new MedianOfRunningArray ();
144
+ var stream = new MedianOfRunningArrayInteger ();
147
145
stream .insert (30 );
148
146
stream .insert (10 );
149
147
stream .insert (20 );
150
- assertEquals (20.0 , stream .median ());
148
+ assertEquals (20 , stream .median ());
151
149
}
152
150
153
151
@ Test
154
152
public void testWithThreeValuesNotInOrderB () {
155
- MedianOfRunningArray stream = new MedianOfRunningArray ();
153
+ var stream = new MedianOfRunningArrayInteger ();
156
154
stream .insert (20 );
157
155
stream .insert (10 );
158
156
stream .insert (30 );
159
- assertEquals (20.0 , stream .median ());
157
+ assertEquals (20 , stream .median ());
158
+ }
159
+
160
+ @ Test
161
+ public void testWithFloatValues () {
162
+ var stream = new MedianOfRunningArrayFloat ();
163
+ stream .insert (20.0f );
164
+ assertEquals (20.0f , stream .median ());
165
+ stream .insert (10.5f );
166
+ assertEquals (15.25f , stream .median ());
167
+ stream .insert (30.0f );
168
+ assertEquals (20.0f , stream .median ());
169
+ }
170
+
171
+ @ Test
172
+ public void testWithByteValues () {
173
+ var stream = new MedianOfRunningArrayByte ();
174
+ stream .insert ((byte ) 120 );
175
+ assertEquals ((byte ) 120 , stream .median ());
176
+ stream .insert ((byte ) -120 );
177
+ assertEquals ((byte ) 0 , stream .median ());
178
+ stream .insert ((byte ) 127 );
179
+ assertEquals ((byte ) 120 , stream .median ());
180
+ }
181
+
182
+ @ Test
183
+ public void testWithLongValues () {
184
+ var stream = new MedianOfRunningArrayLong ();
185
+ stream .insert (120000000L );
186
+ assertEquals (120000000L , stream .median ());
187
+ stream .insert (92233720368547757L );
188
+ assertEquals (46116860244273878L , stream .median ());
189
+ }
190
+
191
+ @ Test
192
+ public void testWithDoubleValues () {
193
+ var stream = new MedianOfRunningArrayDouble ();
194
+ stream .insert (12345.67891 );
195
+ assertEquals (12345.67891 , stream .median ());
196
+ stream .insert (23456789.98 );
197
+ assertEquals (Double .valueOf (11734567.83 ), stream .median (), .01 );
160
198
}
161
199
}
0 commit comments