< prev index next >

test/jdk/java/util/Collections/AddAll.java

Print this page
*** 1,7 ***
  /*
!  * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License version 2 only, as
   * published by the Free Software Foundation.
--- 1,7 ---
  /*
!  * Copyright (c) 2003, 2026, Oracle and/or its affiliates. All rights reserved.
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License version 2 only, as
   * published by the Free Software Foundation.

*** 25,12 ***
--- 25,15 ---
   * @test
   * @bug     4822887
   * @summary Basic test for Collections.addAll
   * @author  Josh Bloch
   * @key randomness
+  * @library /test/lib
   */
  
+ import jdk.test.lib.valueclass.VClass;
+ import java.io.IOException;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.Collection;
  import java.util.Collections;
  import java.util.HashSet;

*** 44,20 ***
      public static void main(String[] args) {
          test(new ArrayList<Integer>());
          test(new LinkedList<Integer>());
          test(new HashSet<Integer>());
          test(new LinkedHashSet<Integer>());
      }
  
      private static Random rnd = new Random();
  
      static void test(Collection<Integer> c) {
          int x = 0;
          for (int i = 0; i < N; i++) {
              int rangeLen = rnd.nextInt(10);
              if (Collections.addAll(c, range(x, x + rangeLen)) !=
!                 (rangeLen != 0))
                  throw new RuntimeException("" + rangeLen);
              x += rangeLen;
          }
          if (c instanceof List) {
              if (!c.equals(Arrays.asList(range(0, x))))
--- 47,25 ---
      public static void main(String[] args) {
          test(new ArrayList<Integer>());
          test(new LinkedList<Integer>());
          test(new HashSet<Integer>());
          test(new LinkedHashSet<Integer>());
+ 
+         testTuple(new ArrayList<VClass>());
+         testTuple(new LinkedList<VClass>());
+         testTuple(new HashSet<VClass>());
+         testTuple(new LinkedHashSet<VClass>());
      }
  
      private static Random rnd = new Random();
  
      static void test(Collection<Integer> c) {
          int x = 0;
          for (int i = 0; i < N; i++) {
              int rangeLen = rnd.nextInt(10);
              if (Collections.addAll(c, range(x, x + rangeLen)) !=
!                     (rangeLen != 0))
                  throw new RuntimeException("" + rangeLen);
              x += rangeLen;
          }
          if (c instanceof List) {
              if (!c.equals(Arrays.asList(range(0, x))))

*** 72,6 ***
--- 80,31 ---
          Integer[] result = new Integer[to - from];
          for (int i = from, j=0; i < to; i++, j++)
              result[j] = new Integer(i);
          return result;
      }
+ 
+     static void testTuple(Collection<VClass> c) {
+         int x = 0;
+         for (int i = 0; i < N; i++) {
+             int rangeLen = rnd.nextInt(10);
+             if (Collections.addAll(c, rangeTuple(x, x + rangeLen)) !=
+                     (rangeLen != 0))
+                 throw new RuntimeException("" + rangeLen);
+             x += rangeLen;
+         }
+         if (c instanceof List) {
+             if (!c.equals(Arrays.asList(rangeTuple(0, x))))
+                 throw new RuntimeException(x + ": " + c);
+         } else {
+             if (!c.equals(new HashSet<VClass>(Arrays.asList(rangeTuple(0, x)))))
+                 throw new RuntimeException(x + ": " + c);
+         }
+     }
+ 
+     private static VClass[] rangeTuple(int from, int to) {
+         VClass[] result = new VClass[to - from];
+         for (int i = from, j = 0; i < to; i++, j++)
+             result[j] = new VClass(i, new int[] { i });
+         return result;
+     }
  }
< prev index next >