public void testUndoDeleteCls() {
    Cls clsA = createCls();
    Cls clsB = createCls();
    Cls clsA1 = createCls(clsA);
    Cls clsB1 = createCls(clsB);
    Cls clsAB2 = createCls(clsA1);
    _frameStore.addDirectSuperclass(clsAB2, clsB1);
    Cls clsAB3 = createCls(clsAB2);
    int count = _frameStore.getFrames().size();
    _frameStore.deleteCls(clsAB3);
    int newCount = _frameStore.getFrames().size();
    assertEquals("first count", count - 1, newCount);
    _frameStore.undo();
    newCount = _frameStore.getFrames().size();
    assertEquals("second count", count, newCount);
    _frameStore.redo();
    newCount = _frameStore.getFrames().size();
    assertEquals("third count", count - 1, newCount);
    _frameStore.undo();
    newCount = _frameStore.getFrames().size();
    assertEquals("forth count", count, newCount);

    String clsAName = _frameStore.getFrameName(clsA);
    _frameStore.deleteCls(clsA1);
    _frameStore.deleteCls(clsA);
    newCount = _frameStore.getFrames().size();
    assertEquals("fifth count", count - 2, newCount);
    _frameStore.undo();
    _frameStore.undo();
    newCount = _frameStore.getFrames().size();
    assertEquals("sixth count", count, newCount);
    Frame frame = _frameStore.getFrame(clsAName);
    assertNotNull("clsA", frame);
  }