/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.function.blacklist; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import org.testng.annotations.Test; import com.opengamma.util.test.TestGroup; /** * Tests the {@link FunctionBlacklistRuleSet} class. */ @Test(groups = TestGroup.UNIT) public class FunctionBlacklistRuleSetTest { public void testEmpty() throws Exception { final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); try { final FunctionBlacklistRuleSet bl = new FunctionBlacklistRuleSet(executor); assertTrue(bl.isEmpty()); assertEquals(bl.size(), 0); assertFalse(bl.contains(new FunctionBlacklistRule())); assertFalse(bl.iterator().hasNext()); assertEquals(bl.toArray().length, 0); assertEquals(bl.toArray(new FunctionBlacklistRule[0]).length, 0); assertFalse(bl.remove(new FunctionBlacklistRule())); assertTrue(bl.containsAll(Collections.emptyList())); assertFalse(bl.containsAll(Collections.singleton(new FunctionBlacklistRule()))); assertFalse(bl.retainAll(Collections.emptyList())); assertFalse(bl.removeAll(Collections.emptyList())); } finally { executor.shutdown(); } } public void testOneEntry() { final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); try { final FunctionBlacklistRuleSet bl = new FunctionBlacklistRuleSet(executor); bl.add(new FunctionBlacklistRule()); assertFalse(bl.isEmpty()); assertEquals(bl.size(), 1); assertTrue(bl.contains(new FunctionBlacklistRule())); assertTrue(bl.iterator().hasNext()); assertEquals(bl.toArray().length, 1); assertEquals(bl.toArray(new FunctionBlacklistRule[0]).length, 1); assertTrue(bl.remove(new FunctionBlacklistRule())); assertEquals(bl.size(), 0); bl.add(new FunctionBlacklistRule()); assertTrue(bl.containsAll(Collections.emptyList())); assertTrue(bl.containsAll(Collections.singleton(new FunctionBlacklistRule()))); assertTrue(bl.retainAll(Collections.emptyList())); assertEquals(bl.size(), 0); bl.add(new FunctionBlacklistRule()); assertFalse(bl.removeAll(Collections.emptyList())); assertEquals(bl.size(), 1); assertTrue(bl.removeAll(Collections.singleton(new FunctionBlacklistRule()))); assertEquals(bl.size(), 0); } finally { executor.shutdown(); } } public void testMultipleEntries() { final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); try { final FunctionBlacklistRuleSet bl = new FunctionBlacklistRuleSet(executor); bl.add(new FunctionBlacklistRule()); final List<FunctionBlacklistRule> rules = new ArrayList<FunctionBlacklistRule>(10); for (int i = 0; i < 10; i++) { final FunctionBlacklistRule rule = new FunctionBlacklistRule(); rule.setFunctionIdentifier("F" + i); rules.add(rule); } bl.addAll(rules); assertFalse(bl.isEmpty()); assertEquals(bl.size(), 11); assertTrue(bl.contains(new FunctionBlacklistRule())); assertTrue(bl.iterator().hasNext()); assertEquals(bl.toArray().length, 11); assertEquals(bl.toArray(new FunctionBlacklistRule[0]).length, 11); assertTrue(bl.remove(new FunctionBlacklistRule())); assertEquals(bl.size(), 10); bl.add(new FunctionBlacklistRule()); assertTrue(bl.containsAll(Collections.emptyList())); assertTrue(bl.containsAll(Collections.singleton(new FunctionBlacklistRule()))); assertTrue(bl.retainAll(Collections.singleton(new FunctionBlacklistRule()))); assertEquals(bl.size(), 1); bl.addAll(rules); assertFalse(bl.removeAll(Collections.emptyList())); assertEquals(bl.size(), 11); assertTrue(bl.removeAll(Collections.singleton(new FunctionBlacklistRule()))); assertEquals(bl.size(), 10); } finally { executor.shutdown(); } } }