package org.infinispan.api.flags; import java.util.EnumSet; import org.infinispan.AdvancedCache; import org.infinispan.cache.impl.CacheImpl; import org.infinispan.cache.impl.DecoratedCache; import org.infinispan.commons.util.EnumUtil; import org.infinispan.context.Flag; import org.testng.annotations.Test; /** * @author Sanne Grinovero <sanne@infinispan.org> (C) 2011 Red Hat Inc. */ @Test(groups = "functional", testName = "api.flags.DecoratedCacheTest") public class DecoratedCacheTest { public void testDecoratedCacheFlagsSet() { CacheImpl impl = new CacheImpl("baseCache"); DecoratedCache decoratedCache = new DecoratedCache(impl); DecoratedCache nofailCache = (DecoratedCache) decoratedCache.withFlags(Flag.FAIL_SILENTLY); EnumSet<Flag> nofailCacheFlags = EnumUtil.enumSetOf(nofailCache.getFlagsBitSet(), Flag.class); assert nofailCacheFlags.contains(Flag.FAIL_SILENTLY); assert nofailCacheFlags.size() == 1; DecoratedCache asyncNoFailCache = (DecoratedCache) nofailCache.withFlags(Flag.FORCE_ASYNCHRONOUS); EnumSet<Flag> asyncNofailCacheFlags = EnumUtil.enumSetOf(asyncNoFailCache.getFlagsBitSet(), Flag.class); assert asyncNofailCacheFlags.size() == 2; assert asyncNofailCacheFlags.contains(Flag.FAIL_SILENTLY); assert asyncNofailCacheFlags.contains(Flag.FORCE_ASYNCHRONOUS); AdvancedCache again = asyncNoFailCache.withFlags(Flag.FAIL_SILENTLY); assert again == asyncNoFailCache; // as FAIL_SILENTLY was already specified } }