summaryrefslogtreecommitdiffstats
path: root/kmymoney2/mymoney/mymoneyobservertest.h
diff options
context:
space:
mode:
Diffstat (limited to 'kmymoney2/mymoney/mymoneyobservertest.h')
-rw-r--r--kmymoney2/mymoney/mymoneyobservertest.h106
1 files changed, 106 insertions, 0 deletions
diff --git a/kmymoney2/mymoney/mymoneyobservertest.h b/kmymoney2/mymoney/mymoneyobservertest.h
new file mode 100644
index 0000000..a806882
--- /dev/null
+++ b/kmymoney2/mymoney/mymoneyobservertest.h
@@ -0,0 +1,106 @@
+/***************************************************************************
+ mymoneyobservertest.h
+ -------------------
+ copyright : (C) 2002 by Thomas Baumgart
+ email : ipwizard@users.sourceforge.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef __MYMONEYOBSERVERTEST_H__
+#define __MYMONEYOBSERVERTEST_H__
+
+#include <cppunit/extensions/HelperMacros.h>
+
+class TestObserver : public MyMoneyObserver
+{
+public:
+ TestObserver() { m_updated = ""; }
+ void update(const QString& id) { m_updated = id; };
+ const QString& updated(void) { return m_updated; };
+ void reset(void) { m_updated = ""; };
+private:
+ QString m_updated;
+};
+
+class TestSubject : public MyMoneySubject
+{
+};
+
+class MyMoneyObserverTest : public CppUnit::TestFixture {
+ CPPUNIT_TEST_SUITE(MyMoneyObserverTest);
+ CPPUNIT_TEST(testEmptySubject);
+ CPPUNIT_TEST(testAddObserver);
+ CPPUNIT_TEST(testRemoveObserver);
+ CPPUNIT_TEST(testNotifyObserver);
+ CPPUNIT_TEST(testNotifyMultipleObserver);
+ CPPUNIT_TEST_SUITE_END();
+
+protected:
+ TestSubject *subject;
+ TestObserver *observer1;
+ TestObserver *observer2;
+
+public:
+ MyMoneyObserverTest () {}
+
+
+void setUp () {
+ subject = new TestSubject;
+ observer1 = new TestObserver;
+ observer2 = new TestObserver;
+}
+
+void tearDown () {
+ delete observer1;
+ delete observer2;
+ delete subject;
+}
+
+void testEmptySubject() {
+ CPPUNIT_ASSERT(subject->m_observers.count() == 0);
+}
+
+void testAddObserver() {
+ subject->attach(observer1);
+ CPPUNIT_ASSERT(subject->m_observers.count() == 1);
+ CPPUNIT_ASSERT(subject->m_observers.at(0) == observer1);
+}
+
+void testRemoveObserver() {
+ testAddObserver();
+ subject->detach(observer1);
+ CPPUNIT_ASSERT(subject->m_observers.count() == 0);
+}
+
+void testNotifyObserver() {
+ testAddObserver();
+ CPPUNIT_ASSERT(observer1->updated() == "");
+ subject->notify("my id");
+ CPPUNIT_ASSERT(observer1->updated() == "my id");
+}
+
+void testNotifyMultipleObserver() {
+ testAddObserver();
+ subject->attach(observer2);
+ CPPUNIT_ASSERT(subject->m_observers.count() == 2);
+ CPPUNIT_ASSERT(subject->m_observers.at(0) == observer1);
+ CPPUNIT_ASSERT(subject->m_observers.at(1) == observer2);
+
+ CPPUNIT_ASSERT(observer1->updated() == "");
+ CPPUNIT_ASSERT(observer2->updated() == "");
+ subject->notify("my id");
+ CPPUNIT_ASSERT(observer1->updated() == "my id");
+ CPPUNIT_ASSERT(observer2->updated() == "my id");
+}
+
+};
+
+#endif