Package modTransf.rules.core

Source Code of modTransf.rules.core.CoreSelectRuleTest

package modTransf.rules.core;

import junit.framework.TestCase;
import java.io.IOException;

import java.util.Collection;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
import modTransf.engine.RuleContext;
import modTransf.engine.SimpleRuleContext;
import modTransf.engine.Arguments;
import modTransf.engine.TransformationException;
import java.util.Map;
import java.util.HashMap;
import modTransf.model.ModelHelper;
import modTransf.engine.EngineException;
import modTransf.engine.Rule;
import modTransf.engine.ParameterDescriptor;
import modTransf.engine.ArrayArguments;

/**
* Test case for CoreSelectRuleTest.
*/
public class CoreSelectRuleTest extends TransformationTestCase
{
  public CoreSelectRuleTest(String name)
  {
    super(name);
  }

  /**
   * Initialize the context for a new test.
   * This method is called befor each test
   * @throws IOException
   */
  public void setUp()
    throws IOException
  {
    super.setUp();
  }

  /**
   * Tear down the test.
   * This method is called after each test.
   */
  public void tearDown()
  {
    super.tearDown();
  }

  /**
   * Check if the getParameterDescriptors() method return a clone of the first
   * registered rule descriptors.
   */
  public void testGetDescriptors()
    throws TransformationException, EngineException
  {
    String ruleName = "rule1";
    // Create a rule
    CoreSelectRule rule = new CoreSelectRule();
    rule.setRuleName( ruleName );
    Rule registeredRule = createSimpleRule( "r1", "in, out", false);
    rule.addRule( registeredRule );
    rule.addRule( createSimpleRule( "r1", "in, out", false) );

    rule.engineStart( context );

    // execute the rule
    Arguments args = new ArrayArguments();
    rule.execute( args, context );

    // Check the descriptors
    assertEquals("desc size", registeredRule.getParameterDescriptors().size(), rule.getParameterDescriptors().size());
    Iterator iterRegistered = registeredRule.getParameterDescriptors().iterator();
    Iterator iterClone = rule.getParameterDescriptors().iterator();
    int i=0;
    while( iterClone.hasNext() )
    {
      ParameterDescriptor descRegistered = (ParameterDescriptor)iterRegistered.next();
      ParameterDescriptor descClone= (ParameterDescriptor)iterClone.next();
      assertEquals("desc["+i+"].isIn", descRegistered.isIn(context), descClone.isIn(context) );
      assertEquals("desc["+i+"].isOut", descRegistered.isOut(context), descClone.isOut(context) );
      i++;
    }

  }

  /**
   * Check for the first selected. It should be the first rule returning true.
   */
  public void testSelectFirstTrue()
    throws TransformationException, EngineException
  {
    String ruleName = "selectRule";
    // Create a rule
    CoreSelectRule rule = new CoreSelectRule();
    rule.setRuleName( ruleName );
    Rule rule1 = createSimpleRule( "rule1", "in, out", false);
    rule.addRule( rule1 );
    Rule rule2 = createSimpleRule( "rule2", "in, out", true);
    rule.addRule( rule2 );
    rule.addRule( createSimpleRule( "rule3", "in, out", true) );

    rule.engineStart( context );

    // execute the rule
    Arguments args = new ArrayArguments();
    args.add( attr1 );
    args.add( null );
    rule.execute( args, context );

    // Check if the rule is called
    //assertEquals("rule is called", 1, methodCallsTrace.size());
    assertTrue("rule1 is checked", methodCallsTrace.remove("rule1.execute()"));
    assertTrue("rule2 is called", methodCallsTrace.remove("rule2.execute()"));
    assertFalse("rule3 should not be called", methodCallsTrace.contains("rule3.execute()"));
  }

  /**
   * Check for the first selected. It should be the first rule returning true.
   */
  public void testSelectFirstIsALLowedTrue()
    throws TransformationException, EngineException
  {
    String ruleName = "selectRule";
    // Create a rule
    CoreSelectRule rule = new CoreSelectRule();
    rule.setRuleName( ruleName );
    Rule rule1 = createSimpleRule( "rule1", "in, out", false);
    rule.addRule( rule1 );
    Rule rule2 = createSimpleRule( "rule2", "in, out", true);
    rule.addRule( rule2 );
    Rule rule3 = createSimpleRule( "rule3", "in, out", true);
    rule.addRule( rule3);

    rule.engineStart( context );

    // execute the rule
    Arguments args = new ArrayArguments();
    args.add( attr1 );
    args.add( null );
    rule.isAllowed( args, context );

    // Check if the rule is called
    //assertEquals("rule is called", 1, methodCallsTrace.size());
    assertTrue("rule1 is checked", methodCallsTrace.remove("rule1.isAllowed()"));
    assertTrue("rule2 is called", methodCallsTrace.remove("rule2.isAllowed()"));
    assertFalse("rule3 should not be called", methodCallsTrace.contains("rule3.isAllowed()"));
  }


}
TOP

Related Classes of modTransf.rules.core.CoreSelectRuleTest

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.