summaryrefslogtreecommitdiffstats
path: root/kmymoney2/mymoney/mymoneysplittest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kmymoney2/mymoney/mymoneysplittest.cpp')
-rw-r--r--kmymoney2/mymoney/mymoneysplittest.cpp306
1 files changed, 306 insertions, 0 deletions
diff --git a/kmymoney2/mymoney/mymoneysplittest.cpp b/kmymoney2/mymoney/mymoneysplittest.cpp
new file mode 100644
index 0000000..a592e1a
--- /dev/null
+++ b/kmymoney2/mymoney/mymoneysplittest.cpp
@@ -0,0 +1,306 @@
+/***************************************************************************
+ mymoneysplittest.cpp
+ -------------------
+ copyright : (C) 2002 by Thomas Baumgart
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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 "mymoneysplittest.h"
+#include <kmymoney/mymoneyexception.h>
+
+MyMoneySplitTest::MyMoneySplitTest()
+{
+}
+
+
+void MyMoneySplitTest::setUp () {
+ m = new MyMoneySplit();
+}
+
+void MyMoneySplitTest::tearDown () {
+ delete m;
+}
+
+void MyMoneySplitTest::testEmptyConstructor() {
+ CPPUNIT_ASSERT(m->accountId().isEmpty());
+ CPPUNIT_ASSERT(m->id().isEmpty());
+ CPPUNIT_ASSERT(m->memo().isEmpty());
+ CPPUNIT_ASSERT(m->action().isEmpty());
+ CPPUNIT_ASSERT(m->shares().isZero());
+ CPPUNIT_ASSERT(m->value().isZero());
+ CPPUNIT_ASSERT(m->reconcileFlag() == MyMoneySplit::NotReconciled);
+ CPPUNIT_ASSERT(m->reconcileDate() == QDate());
+ CPPUNIT_ASSERT(m->transactionId().isEmpty());
+}
+
+void MyMoneySplitTest::testSetFunctions() {
+ m->setAccountId("Account");
+ m->setMemo("Memo");
+ m->setReconcileDate(QDate(1,2,3));
+ m->setReconcileFlag(MyMoneySplit::Cleared);
+ m->setShares(1234);
+ m->setValue(3456);
+ m->setId("MyID");
+ m->setPayeeId("Payee");
+ m->setAction("Action");
+ m->setTransactionId("TestTransaction");
+ m->setValue("Key", "Value");
+
+ CPPUNIT_ASSERT(m->accountId() == "Account");
+ CPPUNIT_ASSERT(m->memo() == "Memo");
+ CPPUNIT_ASSERT(m->reconcileDate() == QDate(1,2,3));
+ CPPUNIT_ASSERT(m->reconcileFlag() == MyMoneySplit::Cleared);
+ CPPUNIT_ASSERT(m->shares() == MyMoneyMoney(1234));
+ CPPUNIT_ASSERT(m->value() == MyMoneyMoney(3456));
+ CPPUNIT_ASSERT(m->id() == "MyID");
+ CPPUNIT_ASSERT(m->payeeId() == "Payee");
+ CPPUNIT_ASSERT(m->action() == "Action");
+ CPPUNIT_ASSERT(m->transactionId() == "TestTransaction");
+ CPPUNIT_ASSERT(m->value("Key") == "Value");
+}
+
+
+void MyMoneySplitTest::testCopyConstructor() {
+ testSetFunctions();
+
+ MyMoneySplit n(*m);
+
+ CPPUNIT_ASSERT(n.accountId() == "Account");
+ CPPUNIT_ASSERT(n.memo() == "Memo");
+ CPPUNIT_ASSERT(n.reconcileDate() == QDate(1,2,3));
+ CPPUNIT_ASSERT(n.reconcileFlag() == MyMoneySplit::Cleared);
+ CPPUNIT_ASSERT(n.shares() == MyMoneyMoney(1234));
+ CPPUNIT_ASSERT(n.value() == MyMoneyMoney(3456));
+ CPPUNIT_ASSERT(n.id() == "MyID");
+ CPPUNIT_ASSERT(n.payeeId() == "Payee");
+ CPPUNIT_ASSERT(n.action() == "Action");
+ CPPUNIT_ASSERT(n.transactionId() == "TestTransaction");
+ CPPUNIT_ASSERT(n.value("Key") == "Value");
+}
+
+void MyMoneySplitTest::testAssignmentConstructor() {
+ testSetFunctions();
+
+ MyMoneySplit n;
+
+ n = *m;
+
+ CPPUNIT_ASSERT(n.accountId() == "Account");
+ CPPUNIT_ASSERT(n.memo() == "Memo");
+ CPPUNIT_ASSERT(n.reconcileDate() == QDate(1,2,3));
+ CPPUNIT_ASSERT(n.reconcileFlag() == MyMoneySplit::Cleared);
+ CPPUNIT_ASSERT(n.shares() == MyMoneyMoney(1234));
+ CPPUNIT_ASSERT(n.value() == MyMoneyMoney(3456));
+ CPPUNIT_ASSERT(n.id() == "MyID");
+ CPPUNIT_ASSERT(n.payeeId() == "Payee");
+ CPPUNIT_ASSERT(n.action() == "Action");
+ CPPUNIT_ASSERT(n.transactionId() == "TestTransaction");
+ CPPUNIT_ASSERT(n.value("Key") == "Value");
+}
+
+void MyMoneySplitTest::testEquality() {
+ testSetFunctions();
+
+ MyMoneySplit n(*m);
+
+ CPPUNIT_ASSERT(n == *m);
+}
+
+void MyMoneySplitTest::testInequality() {
+ testSetFunctions();
+
+ MyMoneySplit n(*m);
+
+ n.setShares(3456);
+ CPPUNIT_ASSERT(!(n == *m));
+
+ n = *m;
+ n.setId("Not My ID");
+ CPPUNIT_ASSERT(!(n == *m));
+
+ n = *m;
+ n.setPayeeId("No payee");
+ CPPUNIT_ASSERT(!(n == *m));
+
+ n = *m;
+ n.setAction("No action");
+ CPPUNIT_ASSERT(!(n == *m));
+
+ n = *m;
+ n.setNumber("No number");
+ CPPUNIT_ASSERT(!(n == *m));
+
+ n = *m;
+ n.setAccountId("No account");
+ CPPUNIT_ASSERT(!(n == *m));
+
+ n = *m;
+ n.setMemo("No memo");
+ CPPUNIT_ASSERT(!(n == *m));
+
+ n = *m;
+ n.setReconcileDate(QDate(3,4,5));
+ CPPUNIT_ASSERT(!(n == *m));
+
+ n = *m;
+ n.setReconcileFlag(MyMoneySplit::Frozen);
+ CPPUNIT_ASSERT(!(n == *m));
+
+ n = *m;
+ n.setShares(4567);
+ CPPUNIT_ASSERT(!(n == *m));
+
+ n = *m;
+ n.setValue(9876);
+ CPPUNIT_ASSERT(!(n == *m));
+
+ n = *m;
+ n.setTransactionId("NoTransaction");
+ CPPUNIT_ASSERT(!(n == *m));
+
+ n = *m;
+ n.setValue("Key", "NoValue");
+ CPPUNIT_ASSERT(!(n == *m));
+}
+
+
+void MyMoneySplitTest::testAmortization() {
+ CPPUNIT_ASSERT(m->isAmortizationSplit() == false);
+ testSetFunctions();
+ CPPUNIT_ASSERT(m->isAmortizationSplit() == false);
+ m->setAction(MyMoneySplit::ActionAmortization);
+ CPPUNIT_ASSERT(m->isAmortizationSplit() == true);
+}
+
+void MyMoneySplitTest::testValue() {
+ m->setValue(1);
+ m->setShares(2);
+ CPPUNIT_ASSERT(m->value("EUR", "EUR") == MyMoneyMoney(1));
+ CPPUNIT_ASSERT(m->value("EUR", "USD") == MyMoneyMoney(2));
+}
+
+void MyMoneySplitTest::testSetValue() {
+ CPPUNIT_ASSERT(m->value().isZero());
+ CPPUNIT_ASSERT(m->shares().isZero());
+ m->setValue(1, "EUR", "EUR");
+ CPPUNIT_ASSERT(m->value() == MyMoneyMoney(1));
+ CPPUNIT_ASSERT(m->shares().isZero());
+ m->setValue(3, "EUR", "USD");
+ CPPUNIT_ASSERT(m->value() == MyMoneyMoney(1));
+ CPPUNIT_ASSERT(m->shares() == MyMoneyMoney(3));
+}
+
+void MyMoneySplitTest::testSetAction() {
+ CPPUNIT_ASSERT(m->action() == QString());
+ m->setAction(MyMoneySplit::BuyShares);
+ CPPUNIT_ASSERT(m->action() == MyMoneySplit::ActionBuyShares);
+ m->setAction(MyMoneySplit::SellShares);
+ CPPUNIT_ASSERT(m->action() == MyMoneySplit::ActionBuyShares);
+ m->setAction(MyMoneySplit::Dividend);
+ CPPUNIT_ASSERT(m->action() == MyMoneySplit::ActionDividend);
+ m->setAction(MyMoneySplit::Yield);
+ CPPUNIT_ASSERT(m->action() == MyMoneySplit::ActionYield);
+ m->setAction(MyMoneySplit::ReinvestDividend);
+ CPPUNIT_ASSERT(m->action() == MyMoneySplit::ActionReinvestDividend);
+ m->setAction(MyMoneySplit::AddShares);
+ CPPUNIT_ASSERT(m->action() == MyMoneySplit::ActionAddShares);
+ m->setAction(MyMoneySplit::RemoveShares);
+ CPPUNIT_ASSERT(m->action() == MyMoneySplit::ActionAddShares);
+ m->setAction(MyMoneySplit::SplitShares);
+ CPPUNIT_ASSERT(m->action() == MyMoneySplit::ActionSplitShares);
+}
+
+void MyMoneySplitTest::testIsAutoCalc() {
+ CPPUNIT_ASSERT(m->isAutoCalc() == false);
+ m->setValue(MyMoneyMoney::autoCalc);
+ CPPUNIT_ASSERT(m->isAutoCalc() == true);
+ m->setShares(MyMoneyMoney::autoCalc);
+ CPPUNIT_ASSERT(m->isAutoCalc() == true);
+ m->setValue(0);
+ CPPUNIT_ASSERT(m->isAutoCalc() == true);
+ m->setShares(1);
+ CPPUNIT_ASSERT(m->isAutoCalc() == false);
+}
+
+void MyMoneySplitTest::testWriteXML() {
+ MyMoneySplit s;
+
+ s.setPayeeId("P000001");
+ s.setShares(MyMoneyMoney(96379, 100));
+ s.setValue(MyMoneyMoney(96379, 1000));
+ s.setAccountId("A000076");
+ s.setNumber("124");
+ s.setBankID("SPID");
+ s.setAction(MyMoneySplit::ActionDeposit);
+ s.setReconcileFlag(MyMoneySplit::Reconciled);
+
+ QDomDocument doc("TEST");
+ QDomElement el = doc.createElement("SPLIT-CONTAINER");
+ doc.appendChild(el);
+ s.writeXML(doc, el);
+
+ QString ref = QString(
+ "<!DOCTYPE TEST>\n"
+ "<SPLIT-CONTAINER>\n"
+ " <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"96379/100\" action=\"Deposit\" bankid=\"SPID\" number=\"124\" reconcileflag=\"2\" memo=\"\" value=\"96379/1000\" id=\"\" account=\"A000076\" />\n"
+ "</SPLIT-CONTAINER>\n");
+
+ CPPUNIT_ASSERT(doc.toString() == ref);
+}
+
+void MyMoneySplitTest::testReadXML() {
+ MyMoneySplit s;
+ QString ref_ok = QString(
+ "<!DOCTYPE TEST>\n"
+ "<SPLIT-CONTAINER>\n"
+ " <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"96379/100\" action=\"Deposit\" bankid=\"SPID\" number=\"124\" reconcileflag=\"2\" memo=\"MyMemo\" value=\"96379/1000\" account=\"A000076\" />\n"
+ "</SPLIT-CONTAINER>\n");
+
+ QString ref_false = QString(
+ "<!DOCTYPE TEST>\n"
+ "<SPLIT-CONTAINER>\n"
+ " <SPLITS payee=\"P000001\" reconciledate=\"\" shares=\"96379/100\" action=\"Deposit\" bankid=\"SPID\" number=\"124\" reconcileflag=\"2\" memo=\"\" value=\"96379/1000\" account=\"A000076\" />\n"
+ "</SPLIT-CONTAINER>\n");
+
+ QDomDocument doc;
+ QDomElement node;
+ doc.setContent(ref_false);
+ node = doc.documentElement().firstChild().toElement();
+
+ try {
+ s = MyMoneySplit(node);
+ CPPUNIT_FAIL("Missing expected exception");
+ } catch(MyMoneyException *e) {
+ delete e;
+ }
+
+ doc.setContent(ref_ok);
+ node = doc.documentElement().firstChild().toElement();
+
+ try {
+ s = MyMoneySplit(node);
+ CPPUNIT_ASSERT(s.id().isEmpty());
+ CPPUNIT_ASSERT(s.payeeId() == "P000001");
+ CPPUNIT_ASSERT(s.reconcileDate() == QDate());
+ CPPUNIT_ASSERT(s.shares() == MyMoneyMoney(96379, 100));
+ CPPUNIT_ASSERT(s.value() == MyMoneyMoney(96379, 1000));
+ CPPUNIT_ASSERT(s.number() == "124");
+ CPPUNIT_ASSERT(s.bankID() == "SPID");
+ CPPUNIT_ASSERT(s.reconcileFlag() == MyMoneySplit::Reconciled);
+ CPPUNIT_ASSERT(s.action() == MyMoneySplit::ActionDeposit);
+ CPPUNIT_ASSERT(s.accountId() == "A000076");
+ CPPUNIT_ASSERT(s.memo() == "MyMemo");
+ } catch(MyMoneyException *e) {
+ delete e;
+ }
+
+}