New Fixes

- Fixed: ObjectLists Crashed when a null was provided as a Comparator.
(Unless the List was Initialized with the ClassType)
- Fixed: LinkedLists didn't implement add(Object)
- Fixed: Object Collections did have the JavaCollections deprecated as
the Constructor. This should only be deprecated for Primitives
- Added: Tests with 5k Random names for Object sorting.
- Changed: Object Arrays no longer require a Comparable[] it just
assumes now that the elements in the Array are Comparable
This commit is contained in:
2021-09-02 13:38:25 +02:00
parent aa1e7da38c
commit 117d0f36e6
16 changed files with 5204 additions and 57 deletions
@@ -0,0 +1,134 @@
package speiger.src.collections.objects.utils;
import java.io.BufferedReader;
import java.io.File;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import speiger.src.collections.objects.lists.ObjectArrayList;
import speiger.src.collections.objects.lists.ObjectLinkedList;
import speiger.src.collections.objects.lists.ObjectList;
@SuppressWarnings("javadoc")
public class StringSortTest
{
public static final String[] NAMES = loadNames();
private static final String[] loadNames()
{
List<String> list = new ArrayList<>();
try(BufferedReader reader = Files.newBufferedReader(new File("src/test/resources/testAssets/strings/names.txt").toPath()))
{
reader.lines().forEach(list::add);
}
catch(Exception e)
{
e.printStackTrace();
}
list.sort(null);
return list.toArray(new String[list.size()]);
}
@Test
public void testArrayListSort() {
ObjectList<String> list = new ObjectArrayList<>(NAMES.clone());
ObjectLists.shuffle(list);
Assert.assertFalse(Arrays.equals(list.toArray(new String[list.size()]), NAMES));
list.sort(String::compareTo);
Assert.assertTrue(Arrays.equals(list.toArray(new String[list.size()]), NAMES));
ObjectLists.shuffle(list);
Assert.assertFalse(Arrays.equals(list.toArray(new String[list.size()]), NAMES));
list.sort(null);
Assert.assertTrue(Arrays.equals(list.toArray(new String[list.size()]), NAMES));
}
@Test
public void testLinkedListSort() {
ObjectList<String> list = new ObjectLinkedList<>(NAMES.clone());
ObjectLists.shuffle(list);
Assert.assertFalse(Arrays.equals(list.toArray(new String[list.size()]), NAMES));
list.sort(String::compareTo);
Assert.assertTrue(Arrays.equals(list.toArray(new String[list.size()]), NAMES));
ObjectLists.shuffle(list);
Assert.assertFalse(Arrays.equals(list.toArray(new String[list.size()]), NAMES));
list.sort(null);
Assert.assertTrue(Arrays.equals(list.toArray(new String[list.size()]), NAMES));
}
@Test
public void testInsertionSort() {
String[] array = ObjectArrays.shuffle(NAMES.clone());
Assert.assertFalse(Arrays.equals(array, NAMES));
ObjectArrays.insertionSort(array);
Assert.assertArrayEquals(NAMES, array);
ObjectArrays.shuffle(array);
Assert.assertFalse(Arrays.equals(array, NAMES));
ObjectArrays.insertionSort(array, String::compareTo);
Assert.assertArrayEquals(NAMES, array);
}
@Test
public void testMergeSort() {
String[] array = ObjectArrays.shuffle(NAMES.clone());
Assert.assertFalse(Arrays.equals(array, NAMES));
ObjectArrays.mergeSort(array);
Assert.assertArrayEquals(NAMES, array);
ObjectArrays.shuffle(array);
Assert.assertFalse(Arrays.equals(array, NAMES));
ObjectArrays.mergeSort(array, String::compareTo);
Assert.assertArrayEquals(NAMES, array);
}
@Test
public void testSelectionSortSort() {
String[] array = ObjectArrays.shuffle(NAMES.clone());
Assert.assertFalse(Arrays.equals(array, NAMES));
ObjectArrays.selectionSort(array);
Assert.assertArrayEquals(NAMES, array);
ObjectArrays.shuffle(array);
Assert.assertFalse(Arrays.equals(array, NAMES));
ObjectArrays.selectionSort(array, String::compareTo);
Assert.assertArrayEquals(NAMES, array);
}
@Test
public void testQuickSortSort() {
String[] array = ObjectArrays.shuffle(NAMES.clone());
Assert.assertFalse(Arrays.equals(array, NAMES));
ObjectArrays.quickSort(array);
Assert.assertArrayEquals(NAMES, array);
ObjectArrays.shuffle(array);
Assert.assertFalse(Arrays.equals(array, NAMES));
ObjectArrays.quickSort(array, String::compareTo);
Assert.assertArrayEquals(NAMES, array);
}
@Test
public void testParallelMergeSort() {
String[] array = ObjectArrays.shuffle(NAMES.clone());
Assert.assertFalse(Arrays.equals(array, NAMES));
ObjectArrays.parallelMergeSort(array);
Assert.assertArrayEquals(NAMES, array);
ObjectArrays.shuffle(array);
Assert.assertFalse(Arrays.equals(array, NAMES));
ObjectArrays.parallelMergeSort(array, String::compareTo);
Assert.assertArrayEquals(NAMES, array);
}
@Test
public void testParallelQuickSort() {
String[] array = ObjectArrays.shuffle(NAMES.clone());
Assert.assertFalse(Arrays.equals(array, NAMES));
ObjectArrays.parallelQuickSort(array);
Assert.assertArrayEquals(NAMES, array);
ObjectArrays.shuffle(array);
Assert.assertFalse(Arrays.equals(array, NAMES));
ObjectArrays.parallelQuickSort(array, String::compareTo);
Assert.assertArrayEquals(NAMES, array);
}
}
File diff suppressed because it is too large Load Diff