package org.ff4j.cache;
import org.ff4j.core.Feature;
import org.ff4j.property.PropertyString;
/*
* #%L
* ff4j-store-ehcache
* %%
* Copyright (C) 2013 - 2015 Ff4J
* %%
* 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.
* #L%
*/
import org.ff4j.test.cache.AbstractCacheManagerJUnitTest;
import org.jsr107.ri.spi.RICachingProvider;
import org.junit.Assert;
import org.junit.Test;
/**
* Test cache manager.
*
* @author <a href="mailto:cedrick.lunven@gmail.com">Cedrick LUNVEN</a>
*/
public class FeatureCacheProviderJCacheRITest extends AbstractCacheManagerJUnitTest {
/** {@inheritDoc} */
protected FF4JCacheManager getCacheManager() {
return new FF4jJCacheManager(RICachingProvider.class.getName());
}
@Test
public void readCacheProvider() {
FF4jJCacheProvider fcp = new FF4jJCacheProvider(RICachingProvider.class.getName());
Assert.assertNotNull(fcp.getCachingProvider());
}
@Test
public void testCacheManagerProperties() {
// Given
FF4jJCacheManager fcm= new FF4jJCacheManager(RICachingProvider.class.getName());
Assert.assertNotNull(fcm.getCacheProviderName());
Assert.assertNotNull(fcm.getNativeCache());
Assert.assertNotNull(fcm.getPropertyNativeCache());
// When
fcm.putProperty(new PropertyString("p1", "v1"));
// Then
Assert.assertNotNull(fcm.getProperty("p1"));
Assert.assertTrue(fcm.listCachedPropertyNames().contains("p1"));
// When
fcm.evictProperty("p1");
fcm.evictProperty("p2");
// Then
Assert.assertNull(fcm.getProperty("p1"));
}
@Test
public void testCacheManagerFeatures() {
// Given
FF4jJCacheManager fcm= new FF4jJCacheManager(RICachingProvider.class.getName());
Assert.assertNotNull(fcm.getFeatureNativeCache());
// When
fcm.putFeature(new Feature("f1", true));
// Then
Assert.assertNotNull(fcm.getFeature("f1"));
Assert.assertTrue(fcm.listCachedFeatureNames().contains("f1"));
// When
fcm.evictFeature("f1");
// Then
Assert.assertNull(fcm.getFeature("p1"));
// When
fcm.setFeaturesCache(fcm.getFeaturesCache());
}
@Test(expected = IllegalArgumentException.class)
public void testCacheManagerNotInitialized() {
FF4jJCacheManager fcm= new FF4jJCacheManager();
fcm.createCacheForFeatures();
}
@Test(expected = IllegalArgumentException.class)
public void testCacheManagerNotInitializedBis() {
FF4jJCacheManager fcm= new FF4jJCacheManager();
fcm.createCacheForProperties();
}
@Test(expected = IllegalArgumentException.class)
public void testCacheManagerNotInitializedNative() {
FF4jJCacheManager fcm = new FF4jJCacheManager();
fcm.getNativeCache();
}
}