/** Make sure Invariants are executed! */
  @Test
  public void testInvariants() {
    // state2.equals(state3)
    StateVertex state2 = new StateVertex("state2", "<table><div>state2</div></table>");
    StateVertex state3 = new StateVertex("state3", "<table><div>state2</div></table>");

    hit = false;
    ImmutableList<Invariant> iList =
        ImmutableList.of(
            new Invariant(
                "Test123",
                new Condition() {

                  @Override
                  public NodeList getAffectedNodes() {
                    return null;
                  }

                  @Override
                  public boolean check(EmbeddedBrowser browser) {
                    hit = true;
                    return false;
                  }
                }));
    StateMachine smLocal =
        new StateMachine(new StateFlowGraph(index), index, iList, Plugins.noPlugins());

    Eventable c = new Eventable(new Identification(How.xpath, "/bla"), EventType.click);

    assertTrue(smLocal.updateAndCheckIfClone(c, state2, dummyBrowser, new CrawlSession(dummyPool)));

    // New State so hit must be true;
    assertTrue("Invariants are exeucted", hit);
    hit = false;
    assertFalse("Hit reseted", hit);

    Eventable c2 = new Eventable(new Identification(How.xpath, "/bla"), EventType.click);

    assertFalse(
        smLocal.updateAndCheckIfClone(c2, state3, dummyBrowser, new CrawlSession(dummyPool)));
    // CLONE State so hit must be true;
    assertTrue("Invariants are exeucted", hit);
  }
 /** Run before every test case. */
 @Before
 public void initStateMachine() {
   StateFlowGraph sfg = new StateFlowGraph(index);
   sm = new StateMachine(sfg, index, ImmutableList.<Invariant>of(), Plugins.noPlugins());
 }