161e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes/* 261e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * Copyright (C) 2012 Google Inc. 361e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * 461e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 561e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * you may not use this file except in compliance with the License. 661e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * You may obtain a copy of the License at 761e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * 861e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 961e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * 1061e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * Unless required by applicable law or agreed to in writing, software 1161e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 1261e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1361e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * See the License for the specific language governing permissions and 1461e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes * limitations under the License. 1561e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes */ 1661e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes 1761e99b166906954cf2686381968a37a3ab32bde7Elliott Hughespackage libcore.java.util; 1861e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes 1961e99b166906954cf2686381968a37a3ab32bde7Elliott Hughesimport java.io.Serializable; 2061e99b166906954cf2686381968a37a3ab32bde7Elliott Hughesimport java.util.AbstractCollection; 2161e99b166906954cf2686381968a37a3ab32bde7Elliott Hughesimport java.util.concurrent.atomic.AtomicBoolean; 2261e99b166906954cf2686381968a37a3ab32bde7Elliott Hughesimport java.util.concurrent.ConcurrentHashMap; 2361e99b166906954cf2686381968a37a3ab32bde7Elliott Hughesimport junit.framework.TestCase; 2461e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes 2561e99b166906954cf2686381968a37a3ab32bde7Elliott Hughespublic final class AbstractCollectionTest extends TestCase { 2661e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes // http://code.google.com/p/android/issues/detail?id=36519 2761e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes public void test_toArray() throws Exception { 2861e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes final ConcurrentHashMap<Integer, Integer> m = new ConcurrentHashMap<Integer, Integer>(); 2961e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes final AtomicBoolean finished = new AtomicBoolean(false); 3061e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes 3161e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes Thread reader = new Thread(new Runnable() { 3261e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes @Override public void run() { 3361e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes while (!finished.get()) { 3461e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes m.values().toArray(); 3561e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes m.values().toArray(new Integer[m.size()]); 3661e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes } 3761e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes } 3861e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes }); 3961e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes 4061e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes Thread mutator = new Thread(new Runnable() { 4161e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes @Override public void run() { 4261e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes for (int i = 0; i < 100; ++i) { 4361e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes m.put(-i, -i); 4461e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes } 4561e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes for (int i = 0; i < 4096; ++i) { 4661e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes m.put(i, i); 4761e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes m.remove(i); 4861e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes } 4961e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes finished.set(true); 5061e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes } 5161e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes }); 5261e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes 5361e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes reader.start(); 5461e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes mutator.start(); 5561e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes reader.join(); 5661e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes mutator.join(); 5761e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes } 5861e99b166906954cf2686381968a37a3ab32bde7Elliott Hughes} 59