Skip to content

Commit bed6b83

Browse files
authored
Create StalinSortTest.java
1 parent 924b5de commit bed6b83

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package com.thealgorithms.sorts;
2+
3+
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
4+
import static org.junit.jupiter.api.Assertions.assertThrows;
5+
6+
import java.util.stream.Stream;
7+
import org.junit.jupiter.api.Test;
8+
import org.junit.jupiter.params.ParameterizedTest;
9+
import org.junit.jupiter.params.provider.Arguments;
10+
import org.junit.jupiter.params.provider.MethodSource;
11+
12+
public class StalinSortTest {
13+
14+
@ParameterizedTest
15+
@MethodSource("provideArraysForStalinSort")
16+
public void testStalinSort(Comparable[] inputArray, Comparable[] expectedArray) {
17+
StalinSort stalinSort = new StalinSort();
18+
assertArrayEquals(expectedArray, stalinSort.sort(inputArray));
19+
}
20+
21+
private static Stream<Arguments> provideArraysForStalinSort() {
22+
return Stream.of(
23+
// Test empty array
24+
Arguments.of(new Integer[] {}, new Integer[] {}),
25+
26+
// Test single element array
27+
Arguments.of(new Integer[] {4}, new Integer[] {4}),
28+
29+
// Test array with multiple elements
30+
Arguments.of(new Integer[] {4, 23, 6, 78, 1, 54, 231, 9, 12}, new Integer[] {4, 23, 78, 231}),
31+
Arguments.of(new Integer[] {5, 5, 5, 5, 5}, new Integer[] {5, 5, 5, 5, 5}),
32+
Arguments.of(new Integer[] {1, 2, 3, 4, 5}, new Integer[] {1, 2, 3, 4, 5}),
33+
Arguments.of(new Integer[] {5, 4, 3, 2, 1}, new Integer[] {5}),
34+
Arguments.of(new String[] {"c", "a", "e", "b", "d"}, new String[] {"c", "e"}),
35+
36+
// Test with negative numbers
37+
Arguments.of(new Integer[] {-1, -2, -3, 4, 5}, new Integer[] {-1, 4, 5}),
38+
Arguments.of(new Integer[] {0, -1, -2, 1, 2}, new Integer[] {0, 1, 2}),
39+
40+
// Test mixed values (positive, negative, zero)
41+
Arguments.of(new Integer[] {3, -1, 0, -5, 2}, new Integer[] {3}),
42+
43+
// Test with duplicate values
44+
Arguments.of(new Integer[] {10, 10, 10, 10}, new Integer[] {10, 10, 10, 10}),
45+
Arguments.of(new Integer[] {1, 2, 2, 3, 3, 3, 4}, new Integer[] {1, 2, 2, 3, 3, 3, 4}),
46+
47+
// Test large numbers
48+
Arguments.of(new Integer[] {Integer.MAX_VALUE, Integer.MIN_VALUE, 0}, new Integer[] {Integer.MAX_VALUE}),
49+
50+
// Test with characters
51+
Arguments.of(new Character[] {'d', 'a', 'c', 'b'}, new Character[] {'d'}),
52+
53+
// Test with a large dataset
54+
Arguments.of(new Integer[] {100, 200, 150, 300, 250, 400, 350, 450, 500}, new Integer[] {100, 200, 300, 400, 500})
55+
);
56+
}
57+
58+
@Test
59+
public void testWithEmptyArray() {
60+
StalinSort stalinSort = new StalinSort();
61+
Integer[] inputArray = {};
62+
Integer[] expectedArray = {};
63+
assertArrayEquals(expectedArray, stalinSort.sort(inputArray));
64+
}
65+
66+
@Test
67+
public void testWithNullValues() {
68+
assertThrows(NullPointerException.class, () -> {
69+
StalinSort stalinSort = new StalinSort();
70+
stalinSort.sort(null);
71+
});
72+
}
73+
74+
@Test
75+
public void testWithMixedDataTypes() {
76+
// This test checks the algorithm's capability with mixed types, if applicable.
77+
// Note: Ensure that your algorithm is capable of handling mixed types; if not, this test will fail.
78+
assertThrows(ClassCastException.class, () -> {
79+
StalinSort stalinSort = new StalinSort();
80+
stalinSort.sort(new Comparable[] {"a", 1});
81+
});
82+
}
83+
}

0 commit comments

Comments
 (0)