Package com.opengamma.engine.function.blacklist

Source Code of com.opengamma.engine.function.blacklist.DefaultFunctionBlacklistQueryTest

/**
* 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.assertFalse;
import static org.testng.Assert.assertTrue;

import java.util.Arrays;
import java.util.Collections;
import java.util.Set;

import org.testng.annotations.Test;

import com.opengamma.engine.ComputationTargetSpecification;
import com.opengamma.engine.function.EmptyFunctionParameters;
import com.opengamma.engine.function.ParameterizedFunction;
import com.opengamma.engine.function.SimpleFunctionParameters;
import com.opengamma.engine.test.MockFunction;
import com.opengamma.engine.value.ValueProperties;
import com.opengamma.engine.value.ValuePropertyNames;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.id.UniqueId;
import com.opengamma.util.test.TestGroup;

/**
* Tests the {@link DefaultFunctionBlacklistQuery} class.
*/
@Test(groups = TestGroup.UNIT)
public class DefaultFunctionBlacklistQueryTest {

  private final ParameterizedFunction _function1;
  private final ParameterizedFunction _function2;
  private final ParameterizedFunction _function3;
  private final ParameterizedFunction _function4;
  private final ComputationTargetSpecification _target1;
  private final ComputationTargetSpecification _target2;
  private final Set<ValueSpecification> _inputs1;
  private final Set<ValueSpecification> _inputs2;
  private final Set<ValueSpecification> _outputs1;
  private final Set<ValueSpecification> _outputs2;

  public DefaultFunctionBlacklistQueryTest() {
    _function1 = new ParameterizedFunction(new MockFunction("F1", null), new EmptyFunctionParameters());
    _function2 = new ParameterizedFunction(new MockFunction("F2", null), new EmptyFunctionParameters());
    _function3 = new ParameterizedFunction(new MockFunction("F1", null), new SimpleFunctionParameters());
    _function4 = new ParameterizedFunction(new MockFunction("F2", null), new SimpleFunctionParameters());
    _target1 = ComputationTargetSpecification.of(UniqueId.of("Test", "Foo"));
    _target2 = ComputationTargetSpecification.of(UniqueId.of("Test", "Bar"));
    _inputs1 = Collections.singleton(new ValueSpecification("Foo", _target1, ValueProperties.with(ValuePropertyNames.FUNCTION, "X").get()));
    _inputs2 = Collections.singleton(new ValueSpecification("Bar", _target1, ValueProperties.with(ValuePropertyNames.FUNCTION, "X").get()));
    _outputs1 = Collections.singleton(new ValueSpecification("Foo", _target2, ValueProperties.with(ValuePropertyNames.FUNCTION, "Y").get()));
    _outputs2 = Collections.singleton(new ValueSpecification("Bar", _target2, ValueProperties.with(ValuePropertyNames.FUNCTION, "Y").get()));
  }

  public void testEmpty() {
    final DefaultFunctionBlacklistQuery bl = new DefaultFunctionBlacklistQuery(new EmptyFunctionBlacklist());
    assertTrue(bl.isEmpty());
    assertFalse(bl.isBlacklisted(_function1));
    assertFalse(bl.isBlacklisted(_target1));
    assertFalse(bl.isBlacklisted(_function1, _target1));
    assertFalse(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
  }

  public void testSingleEntry_wildcard() {
    final DefaultFunctionBlacklistQuery bl = new DefaultFunctionBlacklistQuery(new EmptyFunctionBlacklist());
    bl.addRule(new FunctionBlacklistRule());
    assertFalse(bl.isEmpty());
    assertTrue(bl.isBlacklisted(_function1));
    assertTrue(bl.isBlacklisted(_target1));
    assertTrue(bl.isBlacklisted(_function1, _target1));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
  }

  public void testSingleEntry_function() {
    final DefaultFunctionBlacklistQuery bl = new DefaultFunctionBlacklistQuery(new EmptyFunctionBlacklist());
    bl.addRule(new FunctionBlacklistRule(_function1));
    assertFalse(bl.isEmpty());
    assertTrue(bl.isBlacklisted(_function1));
    assertFalse(bl.isBlacklisted(_function2));
    assertFalse(bl.isBlacklisted(_function3));
    assertFalse(bl.isBlacklisted(_function4));
    assertFalse(bl.isBlacklisted(_target1));
    assertTrue(bl.isBlacklisted(_function1, _target1));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function2, _target1));
    assertFalse(bl.isBlacklisted(_function2, _target1, _inputs1, _outputs1));
  }

  public void testSingleEntry_functionIdentifier() {
    final DefaultFunctionBlacklistQuery bl = new DefaultFunctionBlacklistQuery(new EmptyFunctionBlacklist());
    final FunctionBlacklistRule rule = new FunctionBlacklistRule();
    rule.setFunctionIdentifier("F1");
    bl.addRule(rule);
    assertFalse(bl.isEmpty());
    assertTrue(bl.isBlacklisted(_function1));
    assertFalse(bl.isBlacklisted(_function2));
    assertTrue(bl.isBlacklisted(_function3));
    assertFalse(bl.isBlacklisted(_function4));
    assertFalse(bl.isBlacklisted(_target1));
    assertTrue(bl.isBlacklisted(_function1, _target1));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function2, _target1));
    assertFalse(bl.isBlacklisted(_function2, _target1, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function3, _target1));
    assertTrue(bl.isBlacklisted(_function3, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function4, _target1));
    assertFalse(bl.isBlacklisted(_function4, _target1, _inputs1, _outputs1));
  }

  public void testSingleEntry_functionParameters() {
    final DefaultFunctionBlacklistQuery bl = new DefaultFunctionBlacklistQuery(new EmptyFunctionBlacklist());
    final FunctionBlacklistRule rule = new FunctionBlacklistRule();
    rule.setFunctionParameters(new EmptyFunctionParameters());
    bl.addRule(rule);
    assertFalse(bl.isEmpty());
    assertTrue(bl.isBlacklisted(_function1));
    assertTrue(bl.isBlacklisted(_function2));
    assertFalse(bl.isBlacklisted(_function3));
    assertFalse(bl.isBlacklisted(_function4));
    assertFalse(bl.isBlacklisted(_target1));
    assertTrue(bl.isBlacklisted(_function1, _target1));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function2, _target1));
    assertTrue(bl.isBlacklisted(_function2, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function3, _target1));
    assertFalse(bl.isBlacklisted(_function3, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function4, _target1));
    assertFalse(bl.isBlacklisted(_function4, _target1, _inputs1, _outputs1));
  }

  public void testSingleEntry_target() {
    final DefaultFunctionBlacklistQuery bl = new DefaultFunctionBlacklistQuery(new EmptyFunctionBlacklist());
    bl.addRule(new FunctionBlacklistRule(_target1));
    assertFalse(bl.isEmpty());
    assertFalse(bl.isBlacklisted(_function1));
    assertTrue(bl.isBlacklisted(_target1));
    assertFalse(bl.isBlacklisted(_target2));
    assertTrue(bl.isBlacklisted(_function1, _target1));
    assertFalse(bl.isBlacklisted(_function1, _target2));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function1, _target2, _inputs1, _outputs1));
  }

  public void testSingleEntry_functionTarget() {
    final DefaultFunctionBlacklistQuery bl = new DefaultFunctionBlacklistQuery(new EmptyFunctionBlacklist());
    bl.addRule(new FunctionBlacklistRule(_function1, _target1));
    assertFalse(bl.isEmpty());
    assertFalse(bl.isBlacklisted(_function1));
    assertFalse(bl.isBlacklisted(_function2));
    assertFalse(bl.isBlacklisted(_target1));
    assertFalse(bl.isBlacklisted(_target2));
    assertTrue(bl.isBlacklisted(_function1, _target1));
    assertFalse(bl.isBlacklisted(_function1, _target2));
    assertFalse(bl.isBlacklisted(_function2, _target1));
    assertFalse(bl.isBlacklisted(_function2, _target2));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function2, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function1, _target2, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function2, _target2, _inputs1, _outputs1));
  }

  public void testSingleEntry_inputs() {
    final DefaultFunctionBlacklistQuery bl = new DefaultFunctionBlacklistQuery(new EmptyFunctionBlacklist());
    final FunctionBlacklistRule rule = new FunctionBlacklistRule();
    rule.setInputs(_inputs1);
    bl.addRule(rule);
    assertFalse(bl.isEmpty());
    assertFalse(bl.isBlacklisted(_function1));
    assertFalse(bl.isBlacklisted(_target1));
    assertFalse(bl.isBlacklisted(_function1, _target1));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function1, _target1, _inputs2, _outputs1));
  }

  public void testSingleEntry_outputs() {
    final DefaultFunctionBlacklistQuery bl = new DefaultFunctionBlacklistQuery(new EmptyFunctionBlacklist());
    final FunctionBlacklistRule rule = new FunctionBlacklistRule();
    rule.setOutputs(_outputs1);
    bl.addRule(rule);
    assertFalse(bl.isEmpty());
    assertFalse(bl.isBlacklisted(_function1));
    assertFalse(bl.isBlacklisted(_target1));
    assertFalse(bl.isBlacklisted(_function1, _target1));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs2));
  }

  public void testSingleEntry_full() {
    final DefaultFunctionBlacklistQuery bl = new DefaultFunctionBlacklistQuery(new EmptyFunctionBlacklist());
    bl.addRule(new FunctionBlacklistRule(_function1, _target1, _inputs1, _outputs1));
    assertFalse(bl.isEmpty());
    assertFalse(bl.isBlacklisted(_function1));
    assertFalse(bl.isBlacklisted(_target1));
    assertFalse(bl.isBlacklisted(_function1, _target1));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function2, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function1, _target2, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function1, _target1, _inputs2, _outputs1));
    assertFalse(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs2));
  }

  public void testMultipleEntries() {
    final DefaultFunctionBlacklistQuery bl = new DefaultFunctionBlacklistQuery(new EmptyFunctionBlacklist());
    bl.addRules(Arrays.asList(
        new FunctionBlacklistRule(_function1), new FunctionBlacklistRule(_target1),
        new FunctionBlacklistRule(_function2, _target2), new FunctionBlacklistRule(_function3, _target2, _inputs1, _outputs1)));
    assertFalse(bl.isEmpty());
    assertTrue(bl.isBlacklisted(_function1));
    assertFalse(bl.isBlacklisted(_function2));
    assertTrue(bl.isBlacklisted(_target1));
    assertFalse(bl.isBlacklisted(_target2));
    assertTrue(bl.isBlacklisted(_function1, _target1));
    assertTrue(bl.isBlacklisted(_function1, _target2));
    assertTrue(bl.isBlacklisted(_function2, _target1));
    assertTrue(bl.isBlacklisted(_function2, _target2));
    assertFalse(bl.isBlacklisted(_function3, _target2));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs2, _outputs2));
    assertTrue(bl.isBlacklisted(_function1, _target2, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function1, _target2, _inputs2, _outputs2));
    assertTrue(bl.isBlacklisted(_function2, _target1, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function2, _target1, _inputs2, _outputs2));
    assertTrue(bl.isBlacklisted(_function2, _target2, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function2, _target2, _inputs2, _outputs2));
    assertTrue(bl.isBlacklisted(_function3, _target1, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function3, _target1, _inputs2, _outputs2));
    assertTrue(bl.isBlacklisted(_function3, _target2, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function3, _target2, _inputs2, _outputs2));
  }

  public void testRemoveRule() {
    final DefaultFunctionBlacklistQuery bl = new DefaultFunctionBlacklistQuery(new EmptyFunctionBlacklist());
    bl.addRule(new FunctionBlacklistRule(_function1));
    bl.addRule(new FunctionBlacklistRule(_target1));
    bl.addRule(new FunctionBlacklistRule(_function2, _target2));
    bl.addRule(new FunctionBlacklistRule(_function3, _target2, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function1));
    assertFalse(bl.isBlacklisted(_function2));
    assertTrue(bl.isBlacklisted(_target1));
    assertFalse(bl.isBlacklisted(_target2));
    assertTrue(bl.isBlacklisted(_function1, _target1));
    assertTrue(bl.isBlacklisted(_function1, _target2));
    assertTrue(bl.isBlacklisted(_function2, _target1));
    assertTrue(bl.isBlacklisted(_function2, _target2));
    assertFalse(bl.isBlacklisted(_function3, _target2));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs2, _outputs2));
    assertTrue(bl.isBlacklisted(_function1, _target2, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function1, _target2, _inputs2, _outputs2));
    assertTrue(bl.isBlacklisted(_function2, _target1, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function2, _target1, _inputs2, _outputs2));
    assertTrue(bl.isBlacklisted(_function2, _target2, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function2, _target2, _inputs2, _outputs2));
    assertTrue(bl.isBlacklisted(_function3, _target1, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function3, _target1, _inputs2, _outputs2));
    assertTrue(bl.isBlacklisted(_function3, _target2, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function3, _target2, _inputs2, _outputs2));
    bl.removeRule(new FunctionBlacklistRule(_target1));
    bl.removeRule(new FunctionBlacklistRule(_function3, _target2, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function1));
    assertFalse(bl.isBlacklisted(_function2));
    assertFalse(bl.isBlacklisted(_target1)); // changed
    assertFalse(bl.isBlacklisted(_target2));
    assertTrue(bl.isBlacklisted(_function1, _target1));
    assertTrue(bl.isBlacklisted(_function1, _target2));
    assertFalse(bl.isBlacklisted(_function2, _target1)); // changed
    assertTrue(bl.isBlacklisted(_function2, _target2));
    assertFalse(bl.isBlacklisted(_function3, _target2));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function1, _target1, _inputs2, _outputs2));
    assertTrue(bl.isBlacklisted(_function1, _target2, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function1, _target2, _inputs2, _outputs2));
    assertFalse(bl.isBlacklisted(_function2, _target1, _inputs1, _outputs1)); // changed
    assertFalse(bl.isBlacklisted(_function2, _target1, _inputs2, _outputs2)); // changed
    assertTrue(bl.isBlacklisted(_function2, _target2, _inputs1, _outputs1));
    assertTrue(bl.isBlacklisted(_function2, _target2, _inputs2, _outputs2));
    assertFalse(bl.isBlacklisted(_function3, _target1, _inputs1, _outputs1)); // changed
    assertFalse(bl.isBlacklisted(_function3, _target1, _inputs2, _outputs2)); // changed
    assertFalse(bl.isBlacklisted(_function3, _target2, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function3, _target2, _inputs2, _outputs2));
    bl.removeRules(Arrays.asList(new FunctionBlacklistRule(_function1), new FunctionBlacklistRule(_function2, _target2)));
    // No rules left
    assertFalse(bl.isBlacklisted(_function1));
    assertFalse(bl.isBlacklisted(_function2));
    assertFalse(bl.isBlacklisted(_target1));
    assertFalse(bl.isBlacklisted(_target2));
    assertFalse(bl.isBlacklisted(_function1, _target1));
    assertFalse(bl.isBlacklisted(_function1, _target2));
    assertFalse(bl.isBlacklisted(_function2, _target1));
    assertFalse(bl.isBlacklisted(_function2, _target2));
    assertFalse(bl.isBlacklisted(_function3, _target2));
    assertFalse(bl.isBlacklisted(_function1, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function1, _target1, _inputs2, _outputs2));
    assertFalse(bl.isBlacklisted(_function1, _target2, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function1, _target2, _inputs2, _outputs2));
    assertFalse(bl.isBlacklisted(_function2, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function2, _target1, _inputs2, _outputs2));
    assertFalse(bl.isBlacklisted(_function2, _target2, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function2, _target2, _inputs2, _outputs2));
    assertFalse(bl.isBlacklisted(_function3, _target1, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function3, _target1, _inputs2, _outputs2));
    assertFalse(bl.isBlacklisted(_function3, _target2, _inputs1, _outputs1));
    assertFalse(bl.isBlacklisted(_function3, _target2, _inputs2, _outputs2));
    assertTrue(bl.isEmpty());
  }

}
TOP

Related Classes of com.opengamma.engine.function.blacklist.DefaultFunctionBlacklistQueryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.