### Question:
LRUMap implements Map<K, V> { @Override public void putAll(Map<? extends K, ? extends V> m) { for (Map.Entry<? extends K, ? extends V> mapEntry : m.entrySet()) { put(mapEntry.getKey(), mapEntry.getValue()); } } LRUMap(int cacheSize); @Override int size(); @Override boolean isEmpty(); @Override boolean containsKey(Object key); @Override boolean containsValue(Object value); @Override V get(Object key); @Override V put(K key, V value); @Override V remove(Object key); @Override void putAll(Map<? extends K, ? extends V> m); @Override void clear(); @Override Set<K> keySet(); @Override Collection<V> values(); @Override Set<Map.Entry<K, V>> entrySet(); @Override String toString();  }### Answer:
@Test public void testPutAll() { LRUMap<String, String> map2 = new LRUMap<String, String>(CACHE_SIZE); map2.putAll(map); assertTrue(map.containsKey("key1")); assertTrue(map.containsKey("key2")); assertTrue(map.containsKey("key3")); }