@SuppressWarnings({"rawtypes", "unchecked"}) @SPITest public void missingIterableEntriesAreIgnoredByTheStore() throws Exception { final Store<K, V> kvStore = factory.newStore( factory.newConfiguration( factory.getKeyType(), factory.getValueType(), null, null, null)); final K k1 = factory.createKey(1L); final V v1 = factory.createValue(1L); Set<K> set = new HashSet<K>(); set.add(k1); kvStore.put(k1, v1); try { kvStore.bulkComputeIfAbsent( Arrays.asList((K[]) set.toArray()), new Function< Iterable<? extends K>, Iterable<? extends Map.Entry<? extends K, ? extends V>>>() { @Override public Iterable<? extends Map.Entry<? extends K, ? extends V>> apply( Iterable<? extends K> entries) { return new HashMap<K, V>().entrySet(); } }); assertThat(kvStore.get(k1).value(), is(v1)); } catch (CacheAccessException e) { System.err.println("Warning, an exception is thrown due to the SPI test"); e.printStackTrace(); } }
@SuppressWarnings({"rawtypes", "unchecked"}) @SPITest public void testWrongKeyType() throws Exception { final Store<K, V> kvStore = factory.newStore( factory.newConfiguration( factory.getKeyType(), factory.getValueType(), null, null, null)); Set<K> set = new HashSet<K>(); if (factory.getKeyType() == String.class) { set.add((K) new Object()); } else { set.add((K) "WrongKeyType"); } try { kvStore.bulkComputeIfAbsent( Arrays.asList((K[]) set.toArray()), new Function< Iterable<? extends K>, Iterable<? extends Map.Entry<? extends K, ? extends V>>>() { @Override public Iterable<? extends Map.Entry<? extends K, ? extends V>> apply( Iterable<? extends K> entries) { throw new AssertionError( "Expected ClassCastException because the key is of the wrong type"); } }); throw new AssertionError("Expected ClassCastException because the key is of the wrong type"); } catch (ClassCastException e) { // expected } catch (CacheAccessException e) { System.err.println("Warning, an exception is thrown due to the SPI test"); e.printStackTrace(); } }