< prev index next >

test/jdk/java/util/Map/ToArray.java

Print this page
*** 1,7 ***
  /*
!  * Copyright (c) 2013, 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) 2013, 2024, 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.

*** 21,11 ***
   * questions.
   */
  
  /*
   * @test
!  * @bug 8008785
   * @summary Ensure toArray() implementations return correct results.
   * @author Mike Duigou
   */
  import java.util.*;
  import java.util.concurrent.ConcurrentHashMap;
--- 21,11 ---
   * questions.
   */
  
  /*
   * @test
!  * @bug 8008785 8336669
   * @summary Ensure toArray() implementations return correct results.
   * @author Mike Duigou
   */
  import java.util.*;
  import java.util.concurrent.ConcurrentHashMap;

*** 36,12 ***
      /**
       * Number of elements per map.
       */
      private static final int TEST_SIZE = 5000;
  
      private static void realMain(String[] args) throws Throwable {
!         Map<Integer, Long>[] maps = (Map<Integer, Long>[]) new Map[]{
                      new HashMap<>(),
                      new Hashtable<>(),
                      new IdentityHashMap<>(),
                      new LinkedHashMap<>(),
                      new TreeMap<>(),
--- 36,16 ---
      /**
       * Number of elements per map.
       */
      private static final int TEST_SIZE = 5000;
  
+     static String genString(int i) {
+         return "BASE-" + HexFormat.of().toHexDigits(i);
+     }
+ 
      private static void realMain(String[] args) throws Throwable {
!         Map<String, Long>[] maps = (Map<String, Long>[]) new Map<?,?>[]{
                      new HashMap<>(),
                      new Hashtable<>(),
                      new IdentityHashMap<>(),
                      new LinkedHashMap<>(),
                      new TreeMap<>(),

*** 49,32 ***
                      new ConcurrentHashMap<>(),
                      new ConcurrentSkipListMap<>()
                  };
  
          // for each map type.
!         for (Map<Integer, Long> map : maps) {
               try {
                  testMap(map);
               } catch(Exception all) {
                  unexpected("Failed for " + map.getClass().getName(), all);
               }
          }
      }
  
!     private static final Integer[] KEYS = new Integer[TEST_SIZE];
  
      private static final Long[] VALUES = new Long[TEST_SIZE];
  
      static {
          for (int each = 0; each < TEST_SIZE; each++) {
!             KEYS[each]   = Integer.valueOf(each);
              VALUES[each] = Long.valueOf(each + TEST_SIZE);
          }
      }
  
  
!     private static void testMap(Map<Integer, Long> map) {
          System.out.println("Testing " + map.getClass());
          System.out.flush();
  
          // Fill the map
          for (int each = 0; each < TEST_SIZE; each++) {
--- 53,33 ---
                      new ConcurrentHashMap<>(),
                      new ConcurrentSkipListMap<>()
                  };
  
          // for each map type.
!         for (Map<String, Long> map : maps) {
               try {
                  testMap(map);
               } catch(Exception all) {
                  unexpected("Failed for " + map.getClass().getName(), all);
               }
          }
      }
  
!     private static final String[] KEYS = new String[TEST_SIZE];
  
      private static final Long[] VALUES = new Long[TEST_SIZE];
  
      static {
          for (int each = 0; each < TEST_SIZE; each++) {
!             // BUG: WeakHashMap of value object!
+             KEYS[each]   = genString(each);
              VALUES[each] = Long.valueOf(each + TEST_SIZE);
          }
      }
  
  
!     private static void testMap(Map<String, Long> map) {
          System.out.println("Testing " + map.getClass());
          System.out.flush();
  
          // Fill the map
          for (int each = 0; each < TEST_SIZE; each++) {

*** 96,13 ***
          for(int each = 0; each < TEST_SIZE; each++) {
              check( "unexpected value", values[each] == VALUES[each]);
          }
  
          // check the entries
!         Map.Entry<Integer,Long>[] entries = map.entrySet().toArray(new Map.Entry[TEST_SIZE]);
!         Arrays.sort( entries,new Comparator<Map.Entry<Integer,Long>>() {
!                 public int compare(Map.Entry<Integer,Long> o1, Map.Entry<Integer,Long> o2) {
                          return o1.getKey().compareTo(o2.getKey());
                  }});
  
          for(int each = 0; each < TEST_SIZE; each++) {
              check( "unexpected entry", entries[each].getKey() == KEYS[each] && entries[each].getValue() == VALUES[each]);
--- 101,13 ---
          for(int each = 0; each < TEST_SIZE; each++) {
              check( "unexpected value", values[each] == VALUES[each]);
          }
  
          // check the entries
!         Map.Entry<String,Long>[] entries = map.entrySet().toArray(new Map.Entry[TEST_SIZE]);
!         Arrays.sort( entries,new Comparator<Map.Entry<String,Long>>() {
!                 public int compare(Map.Entry<String,Long> o1, Map.Entry<String,Long> o2) {
                          return o1.getKey().compareTo(o2.getKey());
                  }});
  
          for(int each = 0; each < TEST_SIZE; each++) {
              check( "unexpected entry", entries[each].getKey() == KEYS[each] && entries[each].getValue() == VALUES[each]);
< prev index next >