Skip to content

Commit 5c1cdfc

Browse files
committed
Add tests and comment
1 parent 4ce70ae commit 5c1cdfc

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

user/super/com/google/gwt/emul/java/util/Objects.java

+1
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ public static int checkFromToIndex(int fromIndex, int toIndex, int length) {
153153
}
154154

155155
public static int checkFromIndexSize(int fromIndex, int size, int length) {
156+
// in JS fromIndex + size cannot overflow because int is not limited to 32 bits
156157
if (fromIndex < 0 || size < 0 || fromIndex + size > length) {
157158
throw new IndexOutOfBoundsException("Range [" + fromIndex + ", " + (fromIndex + size)
158159
+ ") out of bounds for length " + length);

user/test/com/google/gwt/emultest/java/util/ObjectsTest.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,16 @@ public void testRequireNonNull() {
111111

112112
public void testRequireNonNullElse() {
113113
assertEquals("foo", Objects.requireNonNullElse(hideFromCompiler("foo"), "bar"));
114+
assertEquals("bar", Objects.requireNonNullElse(hideFromCompiler(null), "bar"));
114115
assertThrows(NullPointerException.class,
115116
() -> Objects.requireNonNullElse(hideFromCompiler(null), null));
116117
}
117118

118119
public void testRequireNonNullElseGet() {
119120
assertEquals("foo",
120121
Objects.requireNonNullElseGet(hideFromCompiler("foo"), () -> "bar"));
122+
assertEquals("bar",
123+
Objects.requireNonNullElseGet(hideFromCompiler(null), () -> "bar"));
121124
assertThrows(NullPointerException.class,
122125
() -> Objects.requireNonNullElseGet(hideFromCompiler(null), null));
123126
assertThrows(NullPointerException.class,
@@ -137,10 +140,13 @@ public void testCheckIndex() {
137140
() -> Objects.checkIndex(-5, 5));
138141
assertThrows(IndexOutOfBoundsException.class,
139142
() -> Objects.checkIndex(10, 5));
143+
assertThrows(IndexOutOfBoundsException.class,
144+
() -> Objects.checkIndex(5, 5));
140145
}
141146

142147
public void testCheckFromToIndex() {
143148
assertEquals(5, Objects.checkFromToIndex(5, 7, 10));
149+
assertEquals(0, Objects.checkFromToIndex(0, 10, 10));
144150
assertThrows(IndexOutOfBoundsException.class,
145151
() -> Objects.checkFromToIndex(-5, 1, 5));
146152
assertThrows(IndexOutOfBoundsException.class,
@@ -151,12 +157,15 @@ public void testCheckFromToIndex() {
151157

152158
public void testCheckFromIndexSize() {
153159
assertEquals(5, Objects.checkFromIndexSize(5, 2, 10));
160+
assertEquals(0, Objects.checkFromIndexSize(0, 10, 10));
154161
assertThrows(IndexOutOfBoundsException.class,
155162
() -> Objects.checkFromIndexSize(-5, 1, 5));
156163
assertThrows(IndexOutOfBoundsException.class,
157164
() -> Objects.checkFromIndexSize(10, 1, 5));
158165
assertThrows(IndexOutOfBoundsException.class,
159166
() -> Objects.checkFromIndexSize(1, 10, 5));
167+
assertThrows(IndexOutOfBoundsException.class,
168+
() -> Objects.checkFromIndexSize(1, -5, 5));
160169
}
161170

162171
private void assertThrows(Class<? extends Exception> thrownCheck, Runnable toTest) {
@@ -166,6 +175,5 @@ private void assertThrows(Class<? extends Exception> thrownCheck, Runnable toTes
166175
} catch (Exception ex) {
167176
assertEquals(ex.getClass(), thrownCheck);
168177
}
169-
170178
}
171179
}

0 commit comments

Comments
 (0)