diff --git a/primitiveCollections/src/main/java/org/lucares/collections/IntList.java b/primitiveCollections/src/main/java/org/lucares/collections/IntList.java index bd83560..a843584 100644 --- a/primitiveCollections/src/main/java/org/lucares/collections/IntList.java +++ b/primitiveCollections/src/main/java/org/lucares/collections/IntList.java @@ -645,10 +645,14 @@ public final class IntList implements Serializable, Cloneable { @Override public int hashCode() { + if (size == 0) { return 0; } + /* + * only consider values in the range of 0 to size + */ int result = 1; for (int i = 0; i < size; i++) { result = 31 * result + data[i]; @@ -672,7 +676,13 @@ public final class IntList implements Serializable, Cloneable { if (size != other.size) { return false; } + if (sorted != other.sorted) { + return false; + } + /* + * only consider values in the range of 0 to size + */ for (int i = 0; i < size; i++) { if (data[i] != other.data[i]) { return false; diff --git a/primitiveCollections/src/test/java/org/lucares/collections/IntListTest.java b/primitiveCollections/src/test/java/org/lucares/collections/IntListTest.java index 3dc6ffa..47ec989 100644 --- a/primitiveCollections/src/test/java/org/lucares/collections/IntListTest.java +++ b/primitiveCollections/src/test/java/org/lucares/collections/IntListTest.java @@ -587,7 +587,29 @@ public class IntListTest { Assert.assertNotEquals(list, clone); } - // TODO test clone of empty list + @Test + public void testCloneEmptyList() { + final IntList list = new IntList(); + + final IntList clone = list.clone(); + Assert.assertEquals(list, clone); + } + + @Test + public void testClonePreservesSortedFlagOnUnsortedList() { + final IntList list = IntList.of(3, 2, 1); + + final IntList clone = list.clone(); + Assert.assertEquals(list.isSorted(), clone.isSorted()); + } + + @Test + public void testClonePreservesSortedFlagOnSortedList() { + final IntList list = IntList.of(1, 2, 3); + + final IntList clone = list.clone(); + Assert.assertEquals(list.isSorted(), clone.isSorted()); + } @Test public void testToString() {