ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/CopyOnWriteArrayListTest.java
(Generate patch)

Comparing jsr166/src/test/tck/CopyOnWriteArrayListTest.java (file contents):
Revision 1.46 by jsr166, Sun Jan 7 07:07:20 2018 UTC vs.
Revision 1.47 by jsr166, Mon Mar 26 21:28:22 2018 UTC

# Line 234 | Line 234 | public class CopyOnWriteArrayListTest ex
234      }
235  
236      /**
237 <     * indexOf gives the index for the given object
237 >     * indexOf(Object) returns the index of the first occurrence of the
238 >     * specified element in this list, or -1 if this list does not
239 >     * contain the element
240       */
241      public void testIndexOf() {
242 <        CopyOnWriteArrayList full = populatedArray(3);
243 <        assertEquals(1, full.indexOf(one));
244 <        assertEquals(-1, full.indexOf("puppies"));
242 >        CopyOnWriteArrayList list = populatedArray(3);
243 >        assertEquals(-1, list.indexOf(-42));
244 >        int size = list.size();
245 >        for (int i = 0; i < size; i++) {
246 >            assertEquals(i, list.indexOf(i));
247 >            assertEquals(i, list.subList(0, size).indexOf(i));
248 >            assertEquals(i, list.subList(0, i + 1).indexOf(i));
249 >            assertEquals(-1, list.subList(0, i).indexOf(i));
250 >            assertEquals(0, list.subList(i, size).indexOf(i));
251 >            assertEquals(-1, list.subList(i + 1, size).indexOf(i));
252 >        }
253 >
254 >        list.add(1);
255 >        assertEquals(1, list.indexOf(1));
256 >        assertEquals(1, list.subList(0, size + 1).indexOf(1));
257 >        assertEquals(0, list.subList(1, size + 1).indexOf(1));
258 >        assertEquals(size - 2, list.subList(2, size + 1).indexOf(1));
259 >        assertEquals(0, list.subList(size, size + 1).indexOf(1));
260 >        assertEquals(-1, list.subList(size + 1, size + 1).indexOf(1));
261      }
262  
263      /**
264 <     * indexOf gives the index based on the given index
265 <     * at which to start searching
264 >     * indexOf(E, int) returns the index of the first occurrence of the
265 >     * specified element in this list, searching forwards from index,
266 >     * or returns -1 if the element is not found
267       */
268      public void testIndexOf2() {
269 <        CopyOnWriteArrayList full = populatedArray(3);
270 <        assertEquals(1, full.indexOf(one, 0));
271 <        assertEquals(-1, full.indexOf(one, 2));
269 >        CopyOnWriteArrayList list = populatedArray(3);
270 >        int size = list.size();
271 >        assertEquals(-1, list.indexOf(-42, 0));
272 >
273 >        // we might expect IOOBE, but spec says otherwise
274 >        assertEquals(-1, list.indexOf(0, size));
275 >        assertEquals(-1, list.indexOf(0, Integer.MAX_VALUE));
276 >
277 >        assertThrows(
278 >            IndexOutOfBoundsException.class,
279 >            () -> list.indexOf(0, -1),
280 >            () -> list.indexOf(0, Integer.MIN_VALUE));
281 >
282 >        for (int i = 0; i < size; i++) {
283 >            assertEquals(i, list.indexOf(i, 0));
284 >            assertEquals(i, list.indexOf(i, i));
285 >            assertEquals(-1, list.indexOf(i, i + 1));
286 >        }
287 >
288 >        list.add(1);
289 >        assertEquals(1, list.indexOf(1, 0));
290 >        assertEquals(1, list.indexOf(1, 1));
291 >        assertEquals(size, list.indexOf(1, 2));
292 >        assertEquals(size, list.indexOf(1, size));
293      }
294  
295      /**
# Line 323 | Line 363 | public class CopyOnWriteArrayListTest ex
363      }
364  
365      /**
366 <     * lastIndexOf returns the index for the given object
366 >     * lastIndexOf(Object) returns the index of the last occurrence of
367 >     * the specified element in this list, or -1 if this list does not
368 >     * contain the element
369       */
370      public void testLastIndexOf1() {
371 <        CopyOnWriteArrayList full = populatedArray(3);
372 <        full.add(one);
373 <        full.add(three);
374 <        assertEquals(3, full.lastIndexOf(one));
375 <        assertEquals(-1, full.lastIndexOf(six));
371 >        CopyOnWriteArrayList list = populatedArray(3);
372 >        assertEquals(-1, list.lastIndexOf(-42));
373 >        int size = list.size();
374 >        for (int i = 0; i < size; i++) {
375 >            assertEquals(i, list.lastIndexOf(i));
376 >            assertEquals(i, list.subList(0, size).lastIndexOf(i));
377 >            assertEquals(i, list.subList(0, i + 1).lastIndexOf(i));
378 >            assertEquals(-1, list.subList(0, i).lastIndexOf(i));
379 >            assertEquals(0, list.subList(i, size).lastIndexOf(i));
380 >            assertEquals(-1, list.subList(i + 1, size).lastIndexOf(i));
381 >        }
382 >
383 >        list.add(1);
384 >        assertEquals(size, list.lastIndexOf(1));
385 >        assertEquals(size, list.subList(0, size + 1).lastIndexOf(1));
386 >        assertEquals(1, list.subList(0, size).lastIndexOf(1));
387 >        assertEquals(0, list.subList(1, 2).lastIndexOf(1));
388 >        assertEquals(-1, list.subList(0, 1).indexOf(1));
389      }
390  
391      /**
392 <     * lastIndexOf returns the index from the given starting point
392 >     * lastIndexOf(E, int) returns the index of the last occurrence of the
393 >     * specified element in this list, searching backwards from index, or
394 >     * returns -1 if the element is not found
395       */
396      public void testLastIndexOf2() {
397 <        CopyOnWriteArrayList full = populatedArray(3);
398 <        full.add(one);
399 <        full.add(three);
400 <        assertEquals(3, full.lastIndexOf(one, 4));
401 <        assertEquals(-1, full.lastIndexOf(three, 3));
397 >        CopyOnWriteArrayList list = populatedArray(3);
398 >
399 >        // we might expect IOOBE, but spec says otherwise
400 >        assertEquals(-1, list.lastIndexOf(0, -1));
401 >
402 >        int size = list.size();
403 >        assertThrows(
404 >            IndexOutOfBoundsException.class,
405 >            () -> list.lastIndexOf(0, size),
406 >            () -> list.lastIndexOf(0, Integer.MAX_VALUE));
407 >
408 >        for (int i = 0; i < size; i++) {
409 >            assertEquals(i, list.lastIndexOf(i, i));
410 >            assertEquals(list.indexOf(i), list.lastIndexOf(i, i));
411 >            if (i > 0)
412 >                assertEquals(-1, list.lastIndexOf(i, i - 1));
413 >        }
414 >        list.add(one);
415 >        list.add(three);
416 >        assertEquals(1, list.lastIndexOf(one, 1));
417 >        assertEquals(1, list.lastIndexOf(one, 2));
418 >        assertEquals(3, list.lastIndexOf(one, 3));
419 >        assertEquals(3, list.lastIndexOf(one, 4));
420 >        assertEquals(-1, list.lastIndexOf(three, 3));
421      }
422  
423      /**
# Line 517 | Line 593 | public class CopyOnWriteArrayListTest ex
593          assertEquals(a.get(4), m1);
594          s.clear();
595          assertEquals(7, a.size());
596 +
597 +        assertThrows(
598 +            IndexOutOfBoundsException.class,
599 +            () -> s.get(0),
600 +            () -> s.set(0, 42));
601      }
602  
603      // Exception tests

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines