Index: src/unittests/BoxUnitTest.cpp
===================================================================
--- src/unittests/BoxUnitTest.cpp	(revision d7853188762dba95151f1e69c42148748e218394)
+++ src/unittests/BoxUnitTest.cpp	(revision 99f4ee808622819ff9de4956da3988021e56d66a)
@@ -28,4 +28,6 @@
 
 #include "BoxUnitTest.hpp"
+
+#include "stubs/ObserverStub.hpp"
 
 #ifdef HAVE_TESTRUNNER
@@ -1617,2 +1619,42 @@
 
 }
+
+/** Unit test on whether observer is working.
+ *
+ */
+void BoxUnittest::ObserverTest()
+{
+  // create some observers
+  UpdateCountObserver *observer_general = new UpdateCountObserver();
+  NotificationObserver *observer_matrix = new NotificationObserver(
+      unitBox->getChannel(Box::MatrixChanged));
+  NotificationObserver *observer_bc = new NotificationObserver(
+      unitBox->getChannel(Box::BoundaryConditionsChanged));
+  CPPUNIT_ASSERT_EQUAL((int)0, observer_general->updates);
+  CPPUNIT_ASSERT_EQUAL(false, observer_matrix->wasNotified);
+  CPPUNIT_ASSERT_EQUAL(false, observer_bc->wasNotified);
+  unitBox->signOn(observer_general);
+  unitBox->signOn(observer_matrix, Box::MatrixChanged);
+  unitBox->signOn(observer_bc, Box::BoundaryConditionsChanged);
+
+  // create update MatrixChanged
+  unitBox->setM(*unit);
+  CPPUNIT_ASSERT_EQUAL((int)1, observer_general->updates);
+  CPPUNIT_ASSERT_EQUAL(true, observer_matrix->wasNotified);
+  CPPUNIT_ASSERT_EQUAL(false, observer_bc->wasNotified);
+  observer_matrix->wasNotified = false;
+
+  // create update BoundaryConditionsChanged
+  unitBox->setCondition(0, Box::Wrap);
+  CPPUNIT_ASSERT_EQUAL((int)2, observer_general->updates);
+  CPPUNIT_ASSERT_EQUAL(false, observer_matrix->wasNotified);
+  CPPUNIT_ASSERT_EQUAL(true, observer_bc->wasNotified);
+
+  // remove observers again
+  unitBox->signOff(observer_general);
+  unitBox->signOff(observer_matrix, Box::MatrixChanged);
+  unitBox->signOff(observer_bc, Box::BoundaryConditionsChanged);
+  delete observer_general;
+  delete observer_matrix;
+  delete observer_bc;
+}
Index: src/unittests/BoxUnitTest.hpp
===================================================================
--- src/unittests/BoxUnitTest.hpp	(revision d7853188762dba95151f1e69c42148748e218394)
+++ src/unittests/BoxUnitTest.hpp	(revision 99f4ee808622819ff9de4956da3988021e56d66a)
@@ -30,4 +30,5 @@
   CPPUNIT_TEST ( BoundaryIgnoreTest );
   CPPUNIT_TEST ( BoundaryMixedTest );
+  CPPUNIT_TEST ( ObserverTest );
   CPPUNIT_TEST_SUITE_END();
 
@@ -43,4 +44,5 @@
   void BoundaryIgnoreTest();
   void BoundaryMixedTest();
+  void ObserverTest();
 
   RealSpaceMatrix *unit;
Index: src/unittests/Makefile.am
===================================================================
--- src/unittests/Makefile.am	(revision d7853188762dba95151f1e69c42148748e218394)
+++ src/unittests/Makefile.am	(revision 99f4ee808622819ff9de4956da3988021e56d66a)
@@ -73,4 +73,5 @@
 	$(UIELEMENTSCOMMANDLINEPARSERTESTSSOURCES) \
 	${UIELEMENTSMENUTESTSSOURCES} \
+	stubs/ObserverStub.cpp \
   BoxUnitTest.cpp \
   FormulaUnitTest.cpp \
@@ -93,4 +94,5 @@
 	$(UIELEMENTSCOMMANDLINEPARSERTESTSHEADERS) \
 	${UIELEMENTSMENUTESTSHEADERS} \
+	stubs/ObserverStub.hpp \
   BoxUnitTest.hpp \
   FormulaUnitTest.hpp \
@@ -101,5 +103,7 @@
 BoxUnitTest_SOURCES = $(top_srcdir)/src/unittests/UnitTestMain.cpp \
 	BoxUnitTest.cpp \
-	BoxUnitTest.hpp
+	BoxUnitTest.hpp \
+	stubs/ObserverStub.cpp \
+	stubs/ObserverStub.hpp	
 BoxUnitTest_LDADD = \
 	../libMolecuilder.la \
Index: src/unittests/stubs/ObserverStub.cpp
===================================================================
--- src/unittests/stubs/ObserverStub.cpp	(revision 99f4ee808622819ff9de4956da3988021e56d66a)
+++ src/unittests/stubs/ObserverStub.cpp	(revision 99f4ee808622819ff9de4956da3988021e56d66a)
@@ -0,0 +1,61 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2011 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * ObserverStub.cpp
+ *
+ *  Created on: Dec 19, 2011
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "CodePatterns/Observer/Observer.hpp"
+
+#include <cppunit/extensions/HelperMacros.h>
+
+#include "ObserverStub.hpp"
+
+/************ UpdateCountObserver **************/
+
+UpdateCountObserver::UpdateCountObserver() :
+  Observer("UpdateCountObserver"),
+  updates(0)
+{};
+
+UpdateCountObserver::~UpdateCountObserver()
+{}
+
+void UpdateCountObserver::update(Observable *publisher){
+  updates++;
+}
+
+void UpdateCountObserver::subjectKilled(Observable *publisher) {
+}
+
+/*********** NotificationObserver **************/
+
+NotificationObserver::NotificationObserver(Notification_ptr notification) :
+  Observer("NotificationObserver"),
+  requestedNotification(notification),
+  wasNotified(false)
+{}
+
+NotificationObserver::~NotificationObserver()
+{}
+
+void NotificationObserver::update(Observable*){}
+void NotificationObserver::subjectKilled(Observable*){}
+void NotificationObserver::recieveNotification(Observable *publisher, Notification_ptr notification){
+  CPPUNIT_ASSERT(requestedNotification==notification);
+  wasNotified = true;
+}
Index: src/unittests/stubs/ObserverStub.hpp
===================================================================
--- src/unittests/stubs/ObserverStub.hpp	(revision 99f4ee808622819ff9de4956da3988021e56d66a)
+++ src/unittests/stubs/ObserverStub.hpp	(revision 99f4ee808622819ff9de4956da3988021e56d66a)
@@ -0,0 +1,44 @@
+/*
+ * ObserverStub.hpp
+ *
+ *  Created on: Dec 19, 2011
+ *      Author: heber
+ */
+
+#ifndef OBSERVERSTUB_HPP_
+#define OBSERVERSTUB_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include "CodePatterns/Observer/Observer.hpp"
+
+class UpdateCountObserver : public Observer {
+public:
+  UpdateCountObserver();
+  virtual ~UpdateCountObserver();
+
+  void update(Observable *publisher);
+  void subjectKilled(Observable *publisher);
+
+  int updates;
+};
+
+class NotificationObserver : public Observer {
+public:
+  NotificationObserver(Notification_ptr notification);
+  virtual ~NotificationObserver();
+
+  void update(Observable*);
+  void subjectKilled(Observable*);
+  void recieveNotification(Observable *publisher, Notification_ptr notification);
+
+  Notification_ptr requestedNotification;
+
+  bool wasNotified;
+};
+
+#endif /* OBSERVERSTUB_HPP_ */
