refactor: cleanup BeadSort (#5269)

* cleanup: BeadSort and BeadSortTest, adding javadocs

* checkstyle: fix formatting

* checkstyle: fix import order

* cleanup: improving code readability

* cleanup: improving code readability using enum to represent beads

* checkstyle: fix enum formatting

* fix: enum should be compared using ==, according to maven bugs finder plugin

---------

Co-authored-by: Alex Klymenko <alx@alx.com>
Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com>
This commit is contained in:
Alex Klymenko
2024-07-01 23:26:15 +03:00
committed by GitHub
parent 208e1e99f0
commit ac31fba37a
2 changed files with 59 additions and 53 deletions

View File

@ -1,42 +1,29 @@
package com.thealgorithms.sorts;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
public class BeadSortTest {
// BeadSort can't sort negative number, Character, String. It can sort positive number only
private BeadSort beadSort = new BeadSort();
@ParameterizedTest
@MethodSource("provideArraysForBeadSort")
public void testBeadSort(int[] inputArray, int[] expectedArray) {
BeadSort beadSort = new BeadSort();
assertArrayEquals(expectedArray, beadSort.sort(inputArray));
}
@Test
public void beadSortEmptyArray() {
int[] inputArray = {};
int[] outputArray = beadSort.sort(inputArray);
int[] expectedOutput = {};
assertArrayEquals(outputArray, expectedOutput);
private static Stream<Arguments> provideArraysForBeadSort() {
return Stream.of(Arguments.of(new int[] {}, new int[] {}), Arguments.of(new int[] {4}, new int[] {4}), Arguments.of(new int[] {6, 1, 99, 27, 15, 23, 36}, new int[] {1, 6, 15, 23, 27, 36, 99}), Arguments.of(new int[] {6, 1, 27, 15, 23, 27, 36, 23}, new int[] {1, 6, 15, 23, 23, 27, 27, 36}),
Arguments.of(new int[] {5, 5, 5, 5, 5}, new int[] {5, 5, 5, 5, 5}), Arguments.of(new int[] {1, 2, 3, 4, 5}, new int[] {1, 2, 3, 4, 5}), Arguments.of(new int[] {5, 4, 3, 2, 1}, new int[] {1, 2, 3, 4, 5}));
}
@Test
public void beadSortSingleIntegerArray() {
int[] inputArray = {4};
int[] outputArray = beadSort.sort(inputArray);
int[] expectedOutput = {4};
assertArrayEquals(outputArray, expectedOutput);
}
@Test
public void bogoSortNonDuplicateIntegerArray() {
int[] inputArray = {6, 1, 99, 27, 15, 23, 36};
int[] outputArray = beadSort.sort(inputArray);
int[] expectedOutput = {1, 6, 15, 23, 27, 36, 99};
assertArrayEquals(outputArray, expectedOutput);
}
@Test
public void bogoSortDuplicateIntegerArray() {
int[] inputArray = {6, 1, 27, 15, 23, 27, 36, 23};
int[] outputArray = beadSort.sort(inputArray);
int[] expectedOutput = {1, 6, 15, 23, 23, 27, 27, 36};
assertArrayEquals(outputArray, expectedOutput);
public void testWithNegativeNumbers() {
assertThrows(IllegalArgumentException.class, () -> new BeadSort().sort(new int[] {3, 1, 4, 1, 5, -9}));
}
}