Index: src/unittests/ActionSequenceTest.cpp
===================================================================
--- src/unittests/ActionSequenceTest.cpp	(revision 1473396142bb336f3624ec2b15023c20cfe170ea)
+++ src/unittests/ActionSequenceTest.cpp	(revision 0229f957a22cd87075323d1b589049d0957c4480)
@@ -49,15 +49,56 @@
 };
 
-void ActionSequenceTest::setUp(){}
-void ActionSequenceTest::tearDown(){}
+class wasCalledActionStub : public Action
+{
+public:
+  wasCalledActionStub() :
+      called(false)
+  {}
+  virtual ~wasCalledActionStub(){}
+
+  virtual void call(){
+    called = true;
+  }
+  virtual void undo(){
+    called = false;
+  }
+  virtual bool canUndo(){
+    return true;
+  }
+  bool wasCalled(){
+    return called;
+  }
+private:
+  bool called;
+};
+
+void ActionSequenceTest::setUp(){
+  // create some necessary stubs used in this test
+  positive1 = new canUndoActionStub();
+  positive2 = new canUndoActionStub();
+  negative1 = new cannotUndoActionStub();
+  negative2 = new cannotUndoActionStub();
+
+  shouldCall1 = new wasCalledActionStub();
+  shouldCall2 = new wasCalledActionStub();
+  shouldNotCall1 = new wasCalledActionStub();
+  shouldNotCall2 = new wasCalledActionStub();
+
+}
+
+void ActionSequenceTest::tearDown(){
+  delete positive1;
+  delete positive2;
+  delete negative1;
+  delete negative2;
+
+  delete shouldCall1;
+  delete shouldCall2;
+  delete shouldNotCall1;
+  delete shouldNotCall2;
+
+}
 
 void ActionSequenceTest::canUndoTest(){
-
-  // create some necessary stubs used in this test
-  Action *positive1 = new canUndoActionStub();
-  Action *positive2 = new canUndoActionStub();
-  Action *negative1 = new cannotUndoActionStub();
-  Action *negative2 = new cannotUndoActionStub();
-
   // first section:
   {
@@ -109,9 +150,42 @@
     delete sequence;
   }
-
-  delete positive1;
-  delete positive2;
-  delete negative1;
-  delete negative2;
+}
+
+void ActionSequenceTest::doesCallTest(){
+  ActionSequence *sequence = new ActionSequence();
+  sequence->addAction(shouldCall1);
+  sequence->addAction(shouldCall2);
+  sequence->addAction(shouldNotCall1);
+  sequence->addAction(shouldNotCall2);
+  sequence->removeLastAction();
+  sequence->removeLastAction();
+
+  sequence->callAll();
+
+  CPPUNIT_ASSERT_EQUAL(true,shouldCall1->wasCalled());
+  CPPUNIT_ASSERT_EQUAL(true,shouldCall2->wasCalled());
+  CPPUNIT_ASSERT_EQUAL(false,shouldNotCall1->wasCalled());
+  CPPUNIT_ASSERT_EQUAL(false,shouldNotCall2->wasCalled());
+
+}
+
+void ActionSequenceTest::doesUndoTest(){
+  ActionSequence *sequence = new ActionSequence();
+  sequence->addAction(shouldNotCall1);
+  sequence->addAction(shouldNotCall2);
+  sequence->addAction(shouldCall1);
+  sequence->addAction(shouldCall2);
+
+  sequence->callAll();
+
+  sequence->removeLastAction();
+  sequence->removeLastAction();
+
+  sequence->undoAll();
+
+  CPPUNIT_ASSERT_EQUAL(true,shouldCall1->wasCalled());
+  CPPUNIT_ASSERT_EQUAL(true,shouldCall2->wasCalled());
+  CPPUNIT_ASSERT_EQUAL(false,shouldNotCall1->wasCalled());
+  CPPUNIT_ASSERT_EQUAL(false,shouldNotCall2->wasCalled());
 
 }
Index: src/unittests/ActionSequenceTest.hpp
===================================================================
--- src/unittests/ActionSequenceTest.hpp	(revision 1473396142bb336f3624ec2b15023c20cfe170ea)
+++ src/unittests/ActionSequenceTest.hpp	(revision 0229f957a22cd87075323d1b589049d0957c4480)
@@ -11,8 +11,13 @@
 #include <cppunit/extensions/HelperMacros.h>
 
+class Action;
+class wasCalledActionStub;
+
 class ActionSequenceTest :  public CppUnit::TestFixture
 {
   CPPUNIT_TEST_SUITE( ActionSequenceTest) ;
   CPPUNIT_TEST ( canUndoTest );
+  CPPUNIT_TEST ( doesCallTest );
+  CPPUNIT_TEST ( doesUndoTest );
   CPPUNIT_TEST_SUITE_END();
 
@@ -22,4 +27,16 @@
 
   void canUndoTest();
+  void doesCallTest();
+  void doesUndoTest();
+
+private:
+  Action *positive1;
+  Action *positive2;
+  Action *negative1;
+  Action *negative2;
+  wasCalledActionStub* shouldCall1;
+  wasCalledActionStub* shouldCall2;
+  wasCalledActionStub* shouldNotCall1;
+  wasCalledActionStub* shouldNotCall2;
 };
 
