/*
   * Test the clone() method
   */
  @Test
  public void testRegularIFNetTransitionClone() throws ParameterException {
    IFNet sNet = IFNetTestUtil.createSimpleIFNet();
    RegularIFNetTransition t = (RegularIFNetTransition) sNet.getTransition("t0");
    t.setSilent(true);
    // Create an instance of TestGuardDataContainer
    TestGuardDataContainer tgdc = new TestGuardDataContainer(sNet.getTokenColors());
    t.setGuardDataContainer(tgdc);

    RegularIFNetTransition tClone = t.clone();
    assertEquals(t, tClone);
    assertNotSame(t, tClone);
    assertTrue(tClone.isSilent());
    assertEquals(t.getName(), tClone.getName());
    assertEquals(t.getLabel(), tClone.getLabel());
    assertEquals(t.isPlace(), tClone.isPlace());
    assertEquals(t.isDrain(), tClone.isDrain());
    assertEquals(t.isSource(), tClone.isSource());
    assertEquals(t.isTransition(), tClone.isTransition());
    assertEquals(t.getGuards().size(), tClone.getGuards().size());
    assertEquals(t.getGuardDataContainer(), tClone.getGuardDataContainer());
    // assertNotSame(t.getGuardDataContainer(), tClone.getGuardDataContainer());

    // Access modes
    for (Entry<String, Set<AccessMode>> color : t.getAccessModes().entrySet()) {
      assertEquals(color.getValue(), tClone.getAccessModes(color.getKey()));
    }
  }
  /*
   * Test method for {@link de.uni.freiburg.iig.telematik.sepia.petrinet.ifnet.RegularIFNetTransition#removeGuard(de.invation.code.toval.constraint.AbstractConstraint)}.
   */
  @Test
  public void testRemoveGuard() throws ParameterException {
    IFNet sNet = IFNetTestUtil.createSimpleIFNet();
    RegularIFNetTransition trans = (RegularIFNetTransition) sNet.getTransition("tIn");

    // Get the gurads and check there are no guards initially
    Set<AbstractConstraint<?>> guards = trans.getGuards();
    assertTrue(guards.isEmpty());

    // add a guard and make sure it is really there
    trans.setGuardDataContainer(new TestGuardDataContainer(sNet.getTokenColors()));
    NumberConstraint nc = new NumberConstraint("green", NumberOperator.LARGER, -3);
    trans.addGuard(nc);
    assertFalse(guards.isEmpty());

    // remove it again
    trans.removeGuard(nc);
    assertTrue(guards.isEmpty());
  }