summaryrefslogtreecommitdiffstats
path: root/kmymoney2/reports/pivotgridtest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kmymoney2/reports/pivotgridtest.cpp')
-rw-r--r--kmymoney2/reports/pivotgridtest.cpp198
1 files changed, 198 insertions, 0 deletions
diff --git a/kmymoney2/reports/pivotgridtest.cpp b/kmymoney2/reports/pivotgridtest.cpp
new file mode 100644
index 0000000..397491d
--- /dev/null
+++ b/kmymoney2/reports/pivotgridtest.cpp
@@ -0,0 +1,198 @@
+/***************************************************************************
+ pivotgridtest.cpp
+ -------------------
+ copyright : (C) 2002-2005 by Thomas Baumgart
+ email : ipwizard@users.sourceforge.net
+ Ace Jones <ace.j@hotpop.com>
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+/*
+#include <qvaluelist.h>
+#include <qvaluevector.h>
+#include <qdom.h>
+#include <qfile.h>
+
+#include <kdebug.h>
+#include <kdeversion.h>
+#include <kglobal.h>
+#include <kglobalsettings.h>
+#include <klocale.h>
+#include <kstandarddirs.h>
+
+// DOH, mmreport.h uses this without including it!!
+#include "../mymoney/mymoneyaccount.h"
+
+#include "../mymoney/mymoneysecurity.h"
+#include "../mymoney/mymoneyprice.h"
+#include "../mymoney/mymoneyreport.h"
+#include "../mymoney/mymoneystatement.h"
+#include "../mymoney/storage/mymoneystoragedump.h"
+#include "../mymoney/storage/mymoneystoragexml.h"
+*/
+
+#include "pivotgridtest.h"
+
+#include "reportstestcommon.h"
+
+#define private public
+#include "../reports/pivotgrid.h"
+#undef private
+
+using namespace reports;
+using namespace test;
+
+PivotGridTest::PivotGridTest()
+{
+}
+
+void PivotGridTest::setUp ()
+{
+ storage = new MyMoneySeqAccessMgr;
+ file = MyMoneyFile::instance();
+ file->attachStorage(storage);
+
+ MyMoneyFileTransaction ft;
+ file->addCurrency(MyMoneySecurity("CAD", "Canadian Dollar", "C$"));
+ file->addCurrency(MyMoneySecurity("USD", "US Dollar", "$"));
+ file->addCurrency(MyMoneySecurity("JPY", "Japanese Yen", QChar(0x00A5), 100, 1));
+ file->addCurrency(MyMoneySecurity("GBP", "British Pound", "#"));
+ file->setBaseCurrency(file->currency("USD"));
+
+ MyMoneyPayee payeeTest("Test Payee");
+ file->addPayee(payeeTest);
+ MyMoneyPayee payeeTest2("Thomas Baumgart");
+ file->addPayee(payeeTest2);
+
+ acAsset = (MyMoneyFile::instance()->asset().id());
+ acLiability = (MyMoneyFile::instance()->liability().id());
+ acExpense = (MyMoneyFile::instance()->expense().id());
+ acIncome = (MyMoneyFile::instance()->income().id());
+ acChecking = makeAccount(QString("Checking Account"),MyMoneyAccount::Checkings,moCheckingOpen,QDate(2004,5,15),acAsset);
+ acCredit = makeAccount(QString("Credit Card"),MyMoneyAccount::CreditCard,moCreditOpen,QDate(2004,7,15),acLiability);
+ acSolo = makeAccount(QString("Solo"),MyMoneyAccount::Expense,0,QDate(2004,1,11),acExpense);
+ acParent = makeAccount(QString("Parent"),MyMoneyAccount::Expense,0,QDate(2004,1,11),acExpense);
+ acChild = makeAccount(QString("Child"),MyMoneyAccount::Expense,0,QDate(2004,2,11),acParent);
+ acForeign = makeAccount(QString("Foreign"),MyMoneyAccount::Expense,0,QDate(2004,1,11),acExpense);
+
+ acSecondChild = makeAccount(QString("Second Child"),MyMoneyAccount::Expense,0,QDate(2004,2,11),acParent);
+ acGrandChild1 = makeAccount(QString("Grand Child 1"),MyMoneyAccount::Expense,0,QDate(2004,2,11),acChild);
+ acGrandChild2 = makeAccount(QString("Grand Child 2"),MyMoneyAccount::Expense,0,QDate(2004,2,11),acChild);
+
+ MyMoneyInstitution i("Bank of the World","","","","","","");
+ file->addInstitution(i);
+ inBank = i.id();
+ ft.commit();
+}
+
+void PivotGridTest::tearDown ()
+{
+ file->detachStorage(storage);
+ delete storage;
+}
+
+void PivotGridTest::testCellAddValue(void)
+{
+ PivotCell a;
+ CPPUNIT_ASSERT(a == MyMoneyMoney(0,1));
+ CPPUNIT_ASSERT(a.m_stockSplit == MyMoneyMoney(1,1));
+ CPPUNIT_ASSERT(a.m_postSplit == MyMoneyMoney(0,1));
+ CPPUNIT_ASSERT(a.formatMoney("", 2) == MyMoneyMoney(0,1).formatMoney("", 2));
+
+ PivotCell b(MyMoneyMoney(13,10));
+ CPPUNIT_ASSERT(b == MyMoneyMoney(13,10));
+ CPPUNIT_ASSERT(b.m_stockSplit == MyMoneyMoney(1,1));
+ CPPUNIT_ASSERT(b.m_postSplit == MyMoneyMoney(0,1));
+ CPPUNIT_ASSERT(b.formatMoney("", 2) == MyMoneyMoney(13,10).formatMoney("", 2));
+
+ PivotCell s(b);
+ CPPUNIT_ASSERT(s == MyMoneyMoney(13,10));
+ CPPUNIT_ASSERT(s.m_stockSplit == MyMoneyMoney(1,1));
+ CPPUNIT_ASSERT(s.m_postSplit == MyMoneyMoney(0,1));
+ CPPUNIT_ASSERT(s.formatMoney("", 2) == MyMoneyMoney(13,10).formatMoney("", 2));
+
+ s = PivotCell::stockSplit(MyMoneyMoney(1,2));
+ CPPUNIT_ASSERT(s == MyMoneyMoney(0,1));
+ CPPUNIT_ASSERT(s.m_stockSplit == MyMoneyMoney(1,2));
+ CPPUNIT_ASSERT(s.m_postSplit == MyMoneyMoney(0,1));
+ CPPUNIT_ASSERT(s.formatMoney("", 2) == MyMoneyMoney(0,1).formatMoney("", 2));
+
+ a += MyMoneyMoney(1,1);
+ a += MyMoneyMoney(2,1);
+ CPPUNIT_ASSERT(a == MyMoneyMoney(3,1));
+ CPPUNIT_ASSERT(a.m_stockSplit == MyMoneyMoney(1,1));
+ CPPUNIT_ASSERT(a.m_postSplit == MyMoneyMoney(0,1));
+ CPPUNIT_ASSERT(a.formatMoney("", 2) == MyMoneyMoney(3,1).formatMoney("", 2));
+
+ a += s;
+ CPPUNIT_ASSERT(a == MyMoneyMoney(3,1));
+ CPPUNIT_ASSERT(a.m_stockSplit == MyMoneyMoney(1,2));
+ CPPUNIT_ASSERT(a.m_postSplit == MyMoneyMoney(0,1));
+ CPPUNIT_ASSERT(a.formatMoney("", 2) == MyMoneyMoney(15,10).formatMoney("", 2));
+
+ a += MyMoneyMoney(3,1);
+ a += MyMoneyMoney(3,1);
+ CPPUNIT_ASSERT(a == MyMoneyMoney(3,1));
+ CPPUNIT_ASSERT(a.m_stockSplit == MyMoneyMoney(1,2));
+ CPPUNIT_ASSERT(a.m_postSplit == MyMoneyMoney(6,1));
+ CPPUNIT_ASSERT(a.formatMoney("", 2) == MyMoneyMoney(75,10).formatMoney("", 2));
+}
+
+void PivotGridTest::testCellAddCell(void)
+{
+ PivotCell a,b;
+
+ a += MyMoneyMoney(3,1);
+ a += PivotCell::stockSplit(MyMoneyMoney(2,1));
+ a += MyMoneyMoney(4,1);
+
+ CPPUNIT_ASSERT(a == MyMoneyMoney(3,1));
+ CPPUNIT_ASSERT(a.m_stockSplit == MyMoneyMoney(2,1));
+ CPPUNIT_ASSERT(a.m_postSplit == MyMoneyMoney(4,1));
+ CPPUNIT_ASSERT(a.formatMoney("", 2) == MyMoneyMoney(10,1).formatMoney("", 2));
+
+ b += MyMoneyMoney(4,1);
+ b += PivotCell::stockSplit(MyMoneyMoney(4,1));
+ b += MyMoneyMoney(16,1);
+
+ CPPUNIT_ASSERT(b == MyMoneyMoney(4,1));
+ CPPUNIT_ASSERT(b.m_stockSplit == MyMoneyMoney(4,1));
+ CPPUNIT_ASSERT(b.m_postSplit == MyMoneyMoney(16,1));
+ CPPUNIT_ASSERT(b.formatMoney("", 2) == MyMoneyMoney(32,1).formatMoney("", 2));
+
+ a += b;
+
+ CPPUNIT_ASSERT(a == MyMoneyMoney(3,1));
+ CPPUNIT_ASSERT(a.m_stockSplit == MyMoneyMoney(8,1));
+ CPPUNIT_ASSERT(a.m_postSplit == MyMoneyMoney(48,1));
+ CPPUNIT_ASSERT(a.formatMoney("", 2) == MyMoneyMoney(72,1).formatMoney("", 2));
+}
+
+void PivotGridTest::testCellRunningSum(void)
+{
+ PivotCell a;
+ MyMoneyMoney runningSum(12,10);
+
+ a += MyMoneyMoney(3,1);
+ a += PivotCell::stockSplit(MyMoneyMoney(125,100));
+ a += MyMoneyMoney(134,10);
+
+ CPPUNIT_ASSERT(a.m_stockSplit != MyMoneyMoney(1,1));
+ CPPUNIT_ASSERT(a.m_postSplit != MyMoneyMoney(0,1));
+
+ runningSum = a.calculateRunningSum(runningSum);
+
+ CPPUNIT_ASSERT(runningSum == MyMoneyMoney(1865,100));
+ CPPUNIT_ASSERT(a.formatMoney("", 2) == MyMoneyMoney(1865,100).formatMoney("", 2));
+ CPPUNIT_ASSERT(a.m_stockSplit == MyMoneyMoney(1,1));
+ CPPUNIT_ASSERT(a.m_postSplit == MyMoneyMoney(0,1));
+}
+
+// vim:cin:si:ai:et:ts=2:sw=2: