00001 00002 #include <cxxtest/TestSuite.h> 00003 00004 #include "../../src/domain/undo/undocontainer.h" 00005 #include "../../src/domain/undo/undoadd.h" 00006 00007 #include <vector> 00008 00009 class UndoContainerTest : public CxxTest::TestSuite 00010 { 00011 private: 00012 std::vector<char*> names; 00013 00014 public: 00015 00016 void test_undo() 00017 { 00018 UndoContainer *undoFac = new UndoContainer(); 00019 00020 00021 Undo *au1 = new UndoAdd(1, names); 00022 Undo *au2 = new UndoAdd(1, names); 00023 Undo *au3 = new UndoAdd(1, names); 00024 00025 undoFac->addUndo(au1); 00026 undoFac->addUndo(au2); 00027 00028 00029 TS_ASSERT_EQUALS( undoFac->getUndo(), au2 ); 00030 TS_ASSERT_EQUALS( undoFac->getUndo(), au1 ); 00031 00032 undoFac->addUndo(au3); 00033 TS_ASSERT_EQUALS( undoFac->getUndo(), au3 ); 00034 00035 delete undoFac; 00036 } 00037 00038 00039 void test_redo() 00040 { 00041 UndoContainer *undoFac = new UndoContainer(); 00042 00043 00044 Undo *au1 = new UndoAdd(1, names); 00045 Undo *au2 = new UndoAdd(1, names); 00046 Undo *au3 = new UndoAdd(1, names); 00047 00048 undoFac->addUndo(au1); 00049 undoFac->addUndo(au2); 00050 00051 undoFac->getUndo(); 00052 00053 TS_ASSERT_EQUALS( undoFac->getRedo(), au2 ); 00054 00055 undoFac->getUndo(); 00056 00057 undoFac->addUndo(au2); 00058 undoFac->addUndo(au3); 00059 00060 undoFac->getUndo(); 00061 undoFac->getUndo(); 00062 00063 TS_ASSERT_EQUALS( undoFac->getRedo(), au2 ); 00064 TS_ASSERT_EQUALS( undoFac->getRedo(), au3 ); 00065 00066 } 00067 };