Exemplo n.º 1
0
  @Test
  public void testDismantlingofC2CwithA2C() {
    MetaModel lhsMM = new LHSMM().getMetaModel();
    MetaModel rhsMM = new RHSMM().getMetaModel();

    Element lhsC1 = lhsMM.getClassByName("C1");
    Element rhsC1 = rhsMM.getClassByName("C1");
    C2CBubble c2c = BubbleBuilder.c2c(lhsC1, rhsC1);

    Element lhsA1 = lhsMM.getAttributeByQName("C1.a1");
    Element rhsC2 = rhsMM.getClassByName("C2");
    Element rhsR1 = rhsMM.getReferenceByName("r1");
    Element rhsA3 = rhsMM.getAttributeByQName("C2.a3");
    A2CBubble a2c = BubbleBuilder.a2c(c2c, lhsA1, rhsC2, rhsA3, rhsR1);

    Dismantler dismantler = new Dismantler();
    // convert bubbles to operators
    Set<Operator> ops =
        dismantler.dismantle2(
            Helpers.<Bubble<? extends com.big.tuwien.SmartMatcher.operators.Operator>>asSet(
                c2c, a2c));

    // *************************
    // CHECKS
    // *************************

    assertEquals(1, ops.size());

    Operator opC2C = ops.iterator().next();
    assertEquals(c2c.getOperatorName(), opC2C.getName());

    // check C2C roles
    Set<Element> opRoles = new HashSet<Element>(opC2C.getRoles().values());
    Set<Element> bRoles = new HashSet<Element>(c2c.getConfiguration().getRoles().values());
    assertEquals(bRoles, opRoles);

    // A2C is only child of C2C
    assertEquals(1, opC2C.getChildren().size());

    Operator opA2C = opC2C.getChildren().iterator().next();
    assertEquals(a2c.getOperatorName(), opA2C.getName());

    // check A2C roles
    opRoles = new HashSet<Element>(opA2C.getRoles().values());
    bRoles = new HashSet<Element>(a2c.getConfiguration().getRoles().values());
    assertEquals(bRoles, opRoles);
  }