diff options
Diffstat (limited to 'android/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java')
-rw-r--r-- | android/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java | 502 |
1 files changed, 0 insertions, 502 deletions
diff --git a/android/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java b/android/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java deleted file mode 100644 index 2ae81443b..000000000 --- a/android/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java +++ /dev/null @@ -1,502 +0,0 @@ -/* - * Copyright (C) 2012 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.cache; - -import com.google.common.annotations.GwtCompatible; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.testing.FakeTicker; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.Callable; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import junit.framework.TestCase; - -/** - * Test suite for {@link CacheBuilder}. TODO(cpovirk): merge into CacheBuilderTest? - * - * @author Jon Donovan - */ -@GwtCompatible -public class CacheBuilderGwtTest extends TestCase { - - private FakeTicker fakeTicker; - - @Override - protected void setUp() throws Exception { - super.setUp(); - - fakeTicker = new FakeTicker(); - } - - public void testLoader() throws ExecutionException { - - final Cache<Integer, Integer> cache = CacheBuilder.newBuilder().build(); - - Callable<Integer> loader = - new Callable<Integer>() { - private int i = 0; - - @Override - public Integer call() throws Exception { - return ++i; - } - }; - - cache.put(0, 10); - - assertEquals(Integer.valueOf(10), cache.get(0, loader)); - assertEquals(Integer.valueOf(1), cache.get(20, loader)); - assertEquals(Integer.valueOf(2), cache.get(34, loader)); - - cache.invalidate(0); - assertEquals(Integer.valueOf(3), cache.get(0, loader)); - - cache.put(0, 10); - cache.invalidateAll(); - assertEquals(Integer.valueOf(4), cache.get(0, loader)); - } - - public void testSizeConstraint() { - final Cache<Integer, Integer> cache = CacheBuilder.newBuilder().maximumSize(4).build(); - - cache.put(1, 10); - cache.put(2, 20); - cache.put(3, 30); - cache.put(4, 40); - cache.put(5, 50); - - assertEquals(null, cache.getIfPresent(10)); - // Order required to remove dependence on access order / write order constraint. - assertEquals(Integer.valueOf(20), cache.getIfPresent(2)); - assertEquals(Integer.valueOf(30), cache.getIfPresent(3)); - assertEquals(Integer.valueOf(40), cache.getIfPresent(4)); - assertEquals(Integer.valueOf(50), cache.getIfPresent(5)); - - cache.put(1, 10); - assertEquals(Integer.valueOf(10), cache.getIfPresent(1)); - assertEquals(Integer.valueOf(30), cache.getIfPresent(3)); - assertEquals(Integer.valueOf(40), cache.getIfPresent(4)); - assertEquals(Integer.valueOf(50), cache.getIfPresent(5)); - assertEquals(null, cache.getIfPresent(2)); - } - - public void testLoadingCache() throws ExecutionException { - CacheLoader<Integer, Integer> loader = - new CacheLoader<Integer, Integer>() { - int i = 0; - - @Override - public Integer load(Integer key) throws Exception { - return i++; - } - }; - - LoadingCache<Integer, Integer> cache = CacheBuilder.newBuilder().build(loader); - - cache.put(10, 20); - - Map<Integer, Integer> map = cache.getAll(ImmutableList.of(10, 20, 30, 54, 443, 1)); - - assertEquals(Integer.valueOf(20), map.get(10)); - assertEquals(Integer.valueOf(0), map.get(20)); - assertEquals(Integer.valueOf(1), map.get(30)); - assertEquals(Integer.valueOf(2), map.get(54)); - assertEquals(Integer.valueOf(3), map.get(443)); - assertEquals(Integer.valueOf(4), map.get(1)); - assertEquals(Integer.valueOf(5), cache.get(6)); - assertEquals(Integer.valueOf(6), cache.apply(7)); - } - - public void testExpireAfterAccess() { - final Cache<Integer, Integer> cache = - CacheBuilder.newBuilder() - .expireAfterAccess(1000, TimeUnit.MILLISECONDS) - .ticker(fakeTicker) - .build(); - - cache.put(0, 10); - cache.put(2, 30); - - fakeTicker.advance(999, TimeUnit.MILLISECONDS); - assertEquals(Integer.valueOf(30), cache.getIfPresent(2)); - fakeTicker.advance(1, TimeUnit.MILLISECONDS); - assertEquals(Integer.valueOf(30), cache.getIfPresent(2)); - fakeTicker.advance(1000, TimeUnit.MILLISECONDS); - assertEquals(null, cache.getIfPresent(0)); - } - - public void testExpireAfterWrite() { - final Cache<Integer, Integer> cache = - CacheBuilder.newBuilder() - .expireAfterWrite(1000, TimeUnit.MILLISECONDS) - .ticker(fakeTicker) - .build(); - - cache.put(10, 100); - cache.put(20, 200); - cache.put(4, 2); - - fakeTicker.advance(999, TimeUnit.MILLISECONDS); - assertEquals(Integer.valueOf(100), cache.getIfPresent(10)); - assertEquals(Integer.valueOf(200), cache.getIfPresent(20)); - assertEquals(Integer.valueOf(2), cache.getIfPresent(4)); - - fakeTicker.advance(2, TimeUnit.MILLISECONDS); - assertEquals(null, cache.getIfPresent(10)); - assertEquals(null, cache.getIfPresent(20)); - assertEquals(null, cache.getIfPresent(4)); - - cache.put(10, 20); - assertEquals(Integer.valueOf(20), cache.getIfPresent(10)); - - fakeTicker.advance(1000, TimeUnit.MILLISECONDS); - assertEquals(null, cache.getIfPresent(10)); - } - - public void testExpireAfterWriteAndAccess() { - final Cache<Integer, Integer> cache = - CacheBuilder.newBuilder() - .expireAfterWrite(1000, TimeUnit.MILLISECONDS) - .expireAfterAccess(500, TimeUnit.MILLISECONDS) - .ticker(fakeTicker) - .build(); - - cache.put(10, 100); - cache.put(20, 200); - cache.put(4, 2); - - fakeTicker.advance(499, TimeUnit.MILLISECONDS); - assertEquals(Integer.valueOf(100), cache.getIfPresent(10)); - assertEquals(Integer.valueOf(200), cache.getIfPresent(20)); - - fakeTicker.advance(2, TimeUnit.MILLISECONDS); - assertEquals(Integer.valueOf(100), cache.getIfPresent(10)); - assertEquals(Integer.valueOf(200), cache.getIfPresent(20)); - assertEquals(null, cache.getIfPresent(4)); - - fakeTicker.advance(499, TimeUnit.MILLISECONDS); - assertEquals(null, cache.getIfPresent(10)); - assertEquals(null, cache.getIfPresent(20)); - - cache.put(10, 20); - assertEquals(Integer.valueOf(20), cache.getIfPresent(10)); - - fakeTicker.advance(500, TimeUnit.MILLISECONDS); - assertEquals(null, cache.getIfPresent(10)); - } - - public void testMapMethods() { - Cache<Integer, Integer> cache = CacheBuilder.newBuilder().build(); - - ConcurrentMap<Integer, Integer> asMap = cache.asMap(); - - cache.put(10, 100); - cache.put(2, 52); - - asMap.replace(2, 79); - asMap.replace(3, 60); - - assertEquals(null, cache.getIfPresent(3)); - assertEquals(null, asMap.get(3)); - - assertEquals(Integer.valueOf(79), cache.getIfPresent(2)); - assertEquals(Integer.valueOf(79), asMap.get(2)); - - asMap.replace(10, 100, 50); - asMap.replace(2, 52, 99); - - assertEquals(Integer.valueOf(50), cache.getIfPresent(10)); - assertEquals(Integer.valueOf(50), asMap.get(10)); - assertEquals(Integer.valueOf(79), cache.getIfPresent(2)); - assertEquals(Integer.valueOf(79), asMap.get(2)); - - asMap.remove(10, 100); - asMap.remove(2, 79); - - assertEquals(Integer.valueOf(50), cache.getIfPresent(10)); - assertEquals(Integer.valueOf(50), asMap.get(10)); - assertEquals(null, cache.getIfPresent(2)); - assertEquals(null, asMap.get(2)); - - asMap.putIfAbsent(2, 20); - asMap.putIfAbsent(10, 20); - - assertEquals(Integer.valueOf(20), cache.getIfPresent(2)); - assertEquals(Integer.valueOf(20), asMap.get(2)); - assertEquals(Integer.valueOf(50), cache.getIfPresent(10)); - assertEquals(Integer.valueOf(50), asMap.get(10)); - } - - public void testRemovalListener() { - final int[] stats = new int[4]; - - RemovalListener<Integer, Integer> countingListener = - new RemovalListener<Integer, Integer>() { - @Override - public void onRemoval(RemovalNotification<Integer, Integer> notification) { - switch (notification.getCause()) { - case EXPIRED: - stats[0]++; - break; - case EXPLICIT: - stats[1]++; - break; - case REPLACED: - stats[2]++; - break; - case SIZE: - stats[3]++; - break; - default: - throw new IllegalStateException("No collected exceptions in GWT CacheBuilder."); - } - } - }; - - Cache<Integer, Integer> cache = - CacheBuilder.newBuilder() - .expireAfterWrite(1000, TimeUnit.MILLISECONDS) - .removalListener(countingListener) - .ticker(fakeTicker) - .maximumSize(2) - .build(); - - // Add more than two elements to increment size removals. - cache.put(3, 20); - cache.put(6, 2); - cache.put(98, 45); - cache.put(56, 76); - cache.put(23, 84); - - // Replace the two present elements. - cache.put(23, 20); - cache.put(56, 49); - cache.put(23, 2); - cache.put(56, 4); - - // Expire the two present elements. - fakeTicker.advance(1001, TimeUnit.MILLISECONDS); - - cache.getIfPresent(23); - cache.getIfPresent(56); - - // Add two elements and invalidate them. - cache.put(1, 4); - cache.put(2, 8); - - cache.invalidateAll(); - - assertEquals(2, stats[0]); - assertEquals(2, stats[1]); - assertEquals(4, stats[2]); - assertEquals(3, stats[3]); - } - - public void testPutAll() { - Cache<Integer, Integer> cache = CacheBuilder.newBuilder().build(); - - cache.putAll(ImmutableMap.of(10, 20, 30, 50, 60, 90)); - - assertEquals(Integer.valueOf(20), cache.getIfPresent(10)); - assertEquals(Integer.valueOf(50), cache.getIfPresent(30)); - assertEquals(Integer.valueOf(90), cache.getIfPresent(60)); - - cache.asMap().putAll(ImmutableMap.of(10, 50, 30, 20, 60, 70, 5, 5)); - - assertEquals(Integer.valueOf(50), cache.getIfPresent(10)); - assertEquals(Integer.valueOf(20), cache.getIfPresent(30)); - assertEquals(Integer.valueOf(70), cache.getIfPresent(60)); - assertEquals(Integer.valueOf(5), cache.getIfPresent(5)); - } - - public void testInvalidate() { - Cache<Integer, Integer> cache = CacheBuilder.newBuilder().build(); - - cache.put(654, 2675); - cache.put(2456, 56); - cache.put(2, 15); - - cache.invalidate(654); - - assertFalse(cache.asMap().containsKey(654)); - assertTrue(cache.asMap().containsKey(2456)); - assertTrue(cache.asMap().containsKey(2)); - } - - public void testInvalidateAll() { - Cache<Integer, Integer> cache = CacheBuilder.newBuilder().build(); - - cache.put(654, 2675); - cache.put(2456, 56); - cache.put(2, 15); - - cache.invalidateAll(); - assertFalse(cache.asMap().containsKey(654)); - assertFalse(cache.asMap().containsKey(2456)); - assertFalse(cache.asMap().containsKey(2)); - - cache.put(654, 2675); - cache.put(2456, 56); - cache.put(2, 15); - cache.put(1, 3); - - cache.invalidateAll(ImmutableSet.of(1, 2)); - - assertFalse(cache.asMap().containsKey(1)); - assertFalse(cache.asMap().containsKey(2)); - assertTrue(cache.asMap().containsKey(654)); - assertTrue(cache.asMap().containsKey(2456)); - } - - public void testAsMap_containsValue() { - Cache<Integer, Integer> cache = - CacheBuilder.newBuilder() - .expireAfterWrite(20000, TimeUnit.MILLISECONDS) - .ticker(fakeTicker) - .build(); - - cache.put(654, 2675); - fakeTicker.advance(10000, TimeUnit.MILLISECONDS); - cache.put(2456, 56); - cache.put(2, 15); - - fakeTicker.advance(10001, TimeUnit.MILLISECONDS); - - assertTrue(cache.asMap().containsValue(15)); - assertTrue(cache.asMap().containsValue(56)); - assertFalse(cache.asMap().containsValue(2675)); - } - - public void testAsMap_containsKey() { - Cache<Integer, Integer> cache = - CacheBuilder.newBuilder() - .expireAfterWrite(20000, TimeUnit.MILLISECONDS) - .ticker(fakeTicker) - .build(); - - cache.put(654, 2675); - fakeTicker.advance(10000, TimeUnit.MILLISECONDS); - cache.put(2456, 56); - cache.put(2, 15); - - fakeTicker.advance(10001, TimeUnit.MILLISECONDS); - - assertTrue(cache.asMap().containsKey(2)); - assertTrue(cache.asMap().containsKey(2456)); - assertFalse(cache.asMap().containsKey(654)); - } - - public void testAsMapValues_contains() { - Cache<Integer, Integer> cache = - CacheBuilder.newBuilder() - .expireAfterWrite(1000, TimeUnit.MILLISECONDS) - .ticker(fakeTicker) - .build(); - - cache.put(10, 20); - fakeTicker.advance(500, TimeUnit.MILLISECONDS); - cache.put(20, 22); - cache.put(5, 10); - - fakeTicker.advance(501, TimeUnit.MILLISECONDS); - - assertTrue(cache.asMap().values().contains(22)); - assertTrue(cache.asMap().values().contains(10)); - assertFalse(cache.asMap().values().contains(20)); - } - - public void testAsMapKeySet() { - Cache<Integer, Integer> cache = - CacheBuilder.newBuilder() - .expireAfterWrite(1000, TimeUnit.MILLISECONDS) - .ticker(fakeTicker) - .build(); - - cache.put(10, 20); - fakeTicker.advance(500, TimeUnit.MILLISECONDS); - cache.put(20, 22); - cache.put(5, 10); - - fakeTicker.advance(501, TimeUnit.MILLISECONDS); - - Set<Integer> foundKeys = new HashSet<>(cache.asMap().keySet()); - - assertEquals(ImmutableSet.of(20, 5), foundKeys); - } - - public void testAsMapKeySet_contains() { - Cache<Integer, Integer> cache = - CacheBuilder.newBuilder() - .expireAfterWrite(1000, TimeUnit.MILLISECONDS) - .ticker(fakeTicker) - .build(); - - cache.put(10, 20); - fakeTicker.advance(500, TimeUnit.MILLISECONDS); - cache.put(20, 22); - cache.put(5, 10); - - fakeTicker.advance(501, TimeUnit.MILLISECONDS); - - assertTrue(cache.asMap().keySet().contains(20)); - assertTrue(cache.asMap().keySet().contains(5)); - assertFalse(cache.asMap().keySet().contains(10)); - } - - public void testAsMapEntrySet() { - Cache<Integer, Integer> cache = - CacheBuilder.newBuilder() - .expireAfterWrite(1000, TimeUnit.MILLISECONDS) - .ticker(fakeTicker) - .build(); - - cache.put(10, 20); - fakeTicker.advance(500, TimeUnit.MILLISECONDS); - cache.put(20, 22); - cache.put(5, 10); - - fakeTicker.advance(501, TimeUnit.MILLISECONDS); - - int sum = 0; - for (Entry<Integer, Integer> current : cache.asMap().entrySet()) { - sum += current.getKey() + current.getValue(); - } - assertEquals(57, sum); - } - - public void testAsMapValues_iteratorRemove() { - Cache<Integer, Integer> cache = - CacheBuilder.newBuilder() - .expireAfterWrite(1000, TimeUnit.MILLISECONDS) - .ticker(fakeTicker) - .build(); - - cache.put(10, 20); - Iterator<Integer> iterator = cache.asMap().values().iterator(); - iterator.next(); - iterator.remove(); - - assertEquals(0, cache.size()); - } -} |