Skip to content

Commit 015252c

Browse files
committed
Fixed Test v2
1 parent 6fea85e commit 015252c

File tree

1 file changed

+30
-20
lines changed

1 file changed

+30
-20
lines changed
Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.thealgorithms.divideandconquer;
22

3-
import static org.junit.jupiter.api.Assertions.*;
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertThrows;
45

56
import org.junit.jupiter.api.Test;
67

@@ -9,41 +10,50 @@ class DeterministicQuickSelectTest {
910
@Test
1011
void testSelectKthSmallestBasic() {
1112
int[] arr = {7, 10, 4, 3, 20, 15};
12-
assertEquals(3, DeterministicQuickSelect.select(arr.clone(), 1)); // smallest
13+
14+
// Test all valid k values
15+
assertEquals(3, DeterministicQuickSelect.select(arr.clone(), 1));
1316
assertEquals(4, DeterministicQuickSelect.select(arr.clone(), 2));
1417
assertEquals(7, DeterministicQuickSelect.select(arr.clone(), 3));
1518
assertEquals(10, DeterministicQuickSelect.select(arr.clone(), 4));
1619
assertEquals(15, DeterministicQuickSelect.select(arr.clone(), 5));
17-
assertEquals(20, DeterministicQuickSelect.select(arr.clone(), 6)); // largest
20+
assertEquals(20, DeterministicQuickSelect.select(arr.clone(), 6));
1821
}
1922

2023
@Test
21-
void testSelectSingleElement() {
24+
void testSingleElement() {
2225
int[] arr = {42};
23-
assertEquals(42, DeterministicQuickSelect.select(arr, 1));
26+
assertEquals(42, DeterministicQuickSelect.select(arr.clone(), 1));
2427
}
2528

2629
@Test
27-
void testSelectWithDuplicates() {
28-
int[] arr = {5, 3, 8, 5, 2, 3};
29-
assertEquals(2, DeterministicQuickSelect.select(arr.clone(), 1));
30-
assertEquals(3, DeterministicQuickSelect.select(arr.clone(), 2));
31-
assertEquals(3, DeterministicQuickSelect.select(arr.clone(), 3));
32-
assertEquals(5, DeterministicQuickSelect.select(arr.clone(), 4));
33-
assertEquals(5, DeterministicQuickSelect.select(arr.clone(), 5));
34-
assertEquals(8, DeterministicQuickSelect.select(arr.clone(), 6));
30+
void testInvalidK() {
31+
int[] arr = {1, 2, 3};
32+
// k = 0 and k > length should throw IllegalArgumentException
33+
assertThrows(IllegalArgumentException.class, () -> DeterministicQuickSelect.select(arr.clone(), 0));
34+
assertThrows(IllegalArgumentException.class, () -> DeterministicQuickSelect.select(arr.clone(), 4));
3535
}
3636

3737
@Test
38-
void testSelectEmptyArray() {
39-
int[] arr = {};
40-
assertThrows(IllegalArgumentException.class, () -> DeterministicQuickSelect.select(arr, 1));
38+
void testUnsortedArray() {
39+
int[] arr = {12, 3, 5, 7, 4, 19, 26};
40+
assertEquals(3, DeterministicQuickSelect.select(arr.clone(), 1));
41+
assertEquals(4, DeterministicQuickSelect.select(arr.clone(), 2));
42+
assertEquals(5, DeterministicQuickSelect.select(arr.clone(), 3));
43+
assertEquals(7, DeterministicQuickSelect.select(arr.clone(), 4));
44+
assertEquals(12, DeterministicQuickSelect.select(arr.clone(), 5));
45+
assertEquals(19, DeterministicQuickSelect.select(arr.clone(), 6));
46+
assertEquals(26, DeterministicQuickSelect.select(arr.clone(), 7));
4147
}
4248

4349
@Test
44-
void testSelectInvalidK() {
45-
int[] arr = {1, 2, 3};
46-
assertThrows(IllegalArgumentException.class, () -> DeterministicQuickSelect.select(arr, 0)); // k < 1
47-
assertThrows(IllegalArgumentException.class, () -> DeterministicQuickSelect.select(arr, 4)); // k > length
50+
void testArrayWithDuplicates() {
51+
int[] arr = {4, 2, 5, 2, 3, 4};
52+
assertEquals(2, DeterministicQuickSelect.select(arr.clone(), 1));
53+
assertEquals(2, DeterministicQuickSelect.select(arr.clone(), 2));
54+
assertEquals(3, DeterministicQuickSelect.select(arr.clone(), 3));
55+
assertEquals(4, DeterministicQuickSelect.select(arr.clone(), 4));
56+
assertEquals(4, DeterministicQuickSelect.select(arr.clone(), 5));
57+
assertEquals(5, DeterministicQuickSelect.select(arr.clone(), 6));
4858
}
4959
}

0 commit comments

Comments
 (0)