Package org.openiaml.model.tests.inference.model0_4_2

Source Code of org.openiaml.model.tests.inference.model0_4_2.GateRequiredPage

/**
*
*/
package org.openiaml.model.tests.inference.model0_4_2;

import org.openiaml.model.model.ECARule;
import org.openiaml.model.model.Event;
import org.openiaml.model.model.SimpleCondition;
import org.openiaml.model.model.Value;
import org.openiaml.model.model.components.Gate;
import org.openiaml.model.model.operations.ActivityOperation;
import org.openiaml.model.model.operations.ActivityPredicate;
import org.openiaml.model.model.operations.CancelNode;
import org.openiaml.model.model.operations.DecisionNode;
import org.openiaml.model.model.operations.ExternalValue;
import org.openiaml.model.model.operations.FinishNode;
import org.openiaml.model.model.operations.SetNode;
import org.openiaml.model.model.operations.StartNode;
import org.openiaml.model.model.scopes.Session;
import org.openiaml.model.model.visual.Button;
import org.openiaml.model.model.visual.Frame;
import org.openiaml.model.tests.inference.ValidInferenceTestCase;

/**
* Inference of the EntryGate model completion rules.
*
* @author jmwright
*
*/
public class GateRequiredPage extends ValidInferenceTestCase {

  @Override
  public Class<? extends ValidInferenceTestCase> getInferenceClass() {
    return GateRequiredPage.class;
  }

  /**
   * Test the initial model.
   *
   * @throws Exception
   */
  public void testInitial() throws Exception {
    root = loadDirectly(GateRequiredPage.class);

    Frame page = assertHasFrame(root, "Home");
    assertNotGenerated(page);

    Session session = assertHasSession(root, "Session");
    assertNotGenerated(session);

    Frame required = assertHasFrame(root, "Required Page");
    assertNotGenerated(required);

    Gate gate = session.getEntryGate();
    assertEquals("requires a page is viewed first", gate.getName());
    assertNotGenerated(gate);

    ECARule nav = assertHasNavigateAction(session, gate, required, "first");
    assertNotGenerated(nav);

  }

  /**
   * A button "Continue" will be created in the Required Page.
   * This will navigate back to the Gate.
   *
   * @throws Exception
   */
  public void testRequiredPageHasContinueButton() throws Exception {
    root = loadAndInfer(GateRequiredPage.class);

    Frame required = assertHasFrame(root, "Required Page");

    Button button = assertHasButton(required, "Continue");
    assertGenerated(button);

    Session session = assertHasSession(root, "Session");
    Gate gate = session.getEntryGate();
    assertEquals("requires a page is viewed first", gate.getName());

    Event event = button.getOnClick();
    assertGenerated(event);

    ECARule nav = assertHasNavigateAction(root, event, gate, "resume");
    assertGenerated(nav);

  }

  /**
   * A Value is generated which will store the
   * value of the visited.
   *
   * @throws Exception
   */
  public void testRequiredPageSetsProperty() throws Exception {
    root = loadAndInfer(GateRequiredPage.class);

    Session session = assertHasSession(root, "Session");

    // generated property
    Value property = assertHasValue(session, "requires a page is viewed first flag");
    assertGenerated(property);
    assertEquals(property.getDefaultValue(), "false");

    // required page
    Frame required = assertHasFrame(root, "Required Page");
    Event access = required.getOnAccess();
    assertGenerated(access);

    // set operation
    ActivityOperation set = assertHasActivityOperation(required, "Set gate flag");
    assertGenerated(set);

    // run wire
    ECARule run = assertHasRunAction(required, access, set);
    assertGenerated(run);

  }

  /**
   * Check the contents of the generated 'Set gate flag' operation.
   */
  public void testSetOperationContents() throws Exception {
    root = loadAndInfer(GateRequiredPage.class);

    Session session = assertHasSession(root, "Session");

    // generated property
    Value property = assertHasValue(session, "requires a page is viewed first flag");

    // required page
    Frame required = assertHasFrame(root, "Required Page");

    // set operation
    ActivityOperation set = assertHasActivityOperation(required, "Set gate flag");

    // start node
    StartNode start = assertHasStartNode(set);
    assertGenerated(start);
    FinishNode finish = assertHasFinishNode(set);
    assertGenerated(finish);
    SetNode s = assertHasSetNode(set);
    assertGenerated(s);
    Value value = assertHasValue(set, "true");
    assertTrue(value.isReadOnly());
    assertGenerated(value);
    assertEquals("true", value.getDefaultValue());

    // flow
    assertGenerated(assertHasExecutionEdge(set, start, s));
    assertGenerated(assertHasExecutionEdge(set, s, finish));
   
    // set <- externalValue <- value
    {
      assertEquals(1, s.getInFlows().size());
      ExternalValue ev = (ExternalValue) s.getInFlows().get(0).getFrom();
      assertEquals(value, ev.getValue());
    }
   
    // setnode -> externalValue -> property
    {
      assertEquals(1, s.getOutFlows().size());
      ExternalValue ev = (ExternalValue) s.getOutFlows().get(0).getTo();
      assertEquals(property, ev.getValue());
    }
   
  }

  /**
   * A Function will be created in the Session to check the
   * given property.
   */
  public void testConditionWire() throws Exception {
    root = loadAndInfer(GateRequiredPage.class);

    Session session = assertHasSession(root, "Session");
    Gate gate = session.getEntryGate();
    assertEquals("requires a page is viewed first", gate.getName());

    // generated condition
    ActivityPredicate condition = assertHasActivityPredicate(session, "check requires a page is viewed first");
    assertGenerated(condition);

    SimpleCondition wire = assertHasSimpleCondition(session, condition, gate, "condition");
    assertGenerated(wire);

  }

  /**
   * Check the contents of the generated condition.
   */
  public void testConditionContents() throws Exception {
    root = loadAndInfer(GateRequiredPage.class);

    Session session = assertHasSession(root, "Session");

    // generated property
    Value property = assertHasValue(session, "requires a page is viewed first flag");

    // generated condition
    ActivityPredicate condition = assertHasActivityPredicate(session, "check requires a page is viewed first");

    // start node
    StartNode start = assertHasStartNode(condition);
    assertGenerated(start);
    FinishNode finish = assertHasFinishNode(condition);
    assertGenerated(finish);
    CancelNode cancel = assertHasCancelNode(condition);
    assertGenerated(cancel);
    DecisionNode check = assertHasDecisionNode(condition, "true?");
    assertGenerated(check);

    // flow
    assertGenerated(assertHasExecutionEdge(condition, start, check));
    assertGenerated(assertHasExecutionEdge(condition, check, finish, "y"));
    assertGenerated(assertHasExecutionEdge(condition, check, cancel, "n"));

    // property -> ExternalValue -> check
    {
      assertEquals(1, check.getInFlows().size());
      ExternalValue ev = (ExternalValue) check.getInFlows().get(0).getFrom();
      assertEquals(property, ev.getValue());
    }
   
  }

}
TOP

Related Classes of org.openiaml.model.tests.inference.model0_4_2.GateRequiredPage

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.