early exit it toString was only used if data array was empty

This commit is contained in:
2017-12-16 14:34:36 +01:00
parent 76145b080e
commit f3cbdda121
2 changed files with 23 additions and 4 deletions

View File

@@ -738,9 +738,8 @@ public final class IntList implements Serializable, Cloneable {
@Override
public String toString() {
if (data == null)
return "null";
final int iMax = data.length - 1;
assert data != null : "data cannot be null";
final int iMax = size - 1;
if (iMax == -1)
return "[]";

View File

@@ -521,9 +521,13 @@ public class IntListTest {
final IntList a = new IntList();
final IntList b = new IntList();
// on empty lists
Assert.assertTrue(a.equals(b));
Assert.assertEquals(a.hashCode(), b.hashCode());
// on equal lists
a.addAll(1, 2, 3, 4);
b.addAll(1, 2, 3, 4);
Assert.assertTrue(a.equals(b));
Assert.assertEquals(a.hashCode(), b.hashCode());
@@ -533,11 +537,27 @@ public class IntListTest {
Assert.assertTrue(a.equals(b));
Assert.assertEquals(a.hashCode(), b.hashCode());
// TODO sorted and unsorted lists with same length
// change one value
a.remove(2, 3);
a.insert(2, 99);
Assert.assertFalse(a.equals(b));
Assert.assertNotEquals(a.hashCode(), b.hashCode());
// have different length
a.add(66);
Assert.assertFalse(a.equals(b));
Assert.assertNotEquals(a.hashCode(), b.hashCode());
// same object
Assert.assertTrue(a.equals(a));
// other is null
Assert.assertFalse(a.equals(null));
// equals with a different class
Assert.assertFalse(a.equals("not an IntList"));
}
@Test