You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1915 lines
92 KiB
1915 lines
92 KiB
/***************************************************************************
|
|
mymoneyscheduletest.cpp
|
|
-------------------
|
|
copyright : (C) 2002 by Michael Edwardes
|
|
email : mte@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. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include <config.h>
|
|
#endif
|
|
|
|
// Include internationalization
|
|
#include <tdelocale.h>
|
|
|
|
#include "mymoneyscheduletest.h"
|
|
|
|
#include "mymoneysplit.h"
|
|
#include "mymoneymoney.h"
|
|
|
|
#include <iostream>
|
|
|
|
MyMoneyScheduleTest::MyMoneyScheduleTest()
|
|
{
|
|
}
|
|
|
|
|
|
void MyMoneyScheduleTest::setUp () {
|
|
}
|
|
|
|
void MyMoneyScheduleTest::tearDown () {
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testEmptyConstructor() {
|
|
MyMoneySchedule s;
|
|
|
|
CPPUNIT_ASSERT(s.id().isEmpty());
|
|
CPPUNIT_ASSERT(s.m_occurence == MyMoneySchedule::OCCUR_ANY);
|
|
CPPUNIT_ASSERT(s.m_type == MyMoneySchedule::TYPE_ANY);
|
|
CPPUNIT_ASSERT(s.m_paymentType == MyMoneySchedule::STYPE_ANY);
|
|
CPPUNIT_ASSERT(s.m_fixed == false);
|
|
CPPUNIT_ASSERT(!s.m_startDate.isValid());
|
|
CPPUNIT_ASSERT(!s.m_endDate.isValid());
|
|
CPPUNIT_ASSERT(!s.m_lastPayment.isValid());
|
|
CPPUNIT_ASSERT(s.m_autoEnter == false);
|
|
CPPUNIT_ASSERT(s.m_name.isEmpty());
|
|
CPPUNIT_ASSERT(s.willEnd() == false);
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testConstructor() {
|
|
MyMoneySchedule s( "A Name",
|
|
MyMoneySchedule::TYPE_BILL,
|
|
MyMoneySchedule::OCCUR_WEEKLY, 1,
|
|
MyMoneySchedule::STYPE_DIRECTDEBIT,
|
|
TQDate::currentDate(),
|
|
TQDate(),
|
|
true,
|
|
true);
|
|
|
|
CPPUNIT_ASSERT(s.type() == MyMoneySchedule::TYPE_BILL);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1 );
|
|
CPPUNIT_ASSERT(s.paymentType() == MyMoneySchedule::STYPE_DIRECTDEBIT);
|
|
CPPUNIT_ASSERT(s.startDate() == TQDate());
|
|
CPPUNIT_ASSERT(s.willEnd() == false);
|
|
CPPUNIT_ASSERT(s.isFixed() == true);
|
|
CPPUNIT_ASSERT(s.autoEnter() == true);
|
|
CPPUNIT_ASSERT(s.name() == "A Name");
|
|
CPPUNIT_ASSERT(!s.m_endDate.isValid());
|
|
CPPUNIT_ASSERT(!s.m_lastPayment.isValid());
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testSetFunctions() {
|
|
MyMoneySchedule s;
|
|
|
|
s.setId("SCHED001");
|
|
CPPUNIT_ASSERT(s.id() == "SCHED001");
|
|
|
|
s.setType(MyMoneySchedule::TYPE_BILL);
|
|
CPPUNIT_ASSERT(s.type() == MyMoneySchedule::TYPE_BILL);
|
|
|
|
s.setEndDate(TQDate::currentDate());
|
|
CPPUNIT_ASSERT(s.endDate() == TQDate::currentDate());
|
|
CPPUNIT_ASSERT(s.willEnd() == true);
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testCopyConstructor() {
|
|
MyMoneySchedule s;
|
|
|
|
s.setId("SCHED001");
|
|
s.setType(MyMoneySchedule::TYPE_BILL);
|
|
|
|
MyMoneySchedule s2(s);
|
|
|
|
CPPUNIT_ASSERT(s.id() == s2.id());
|
|
CPPUNIT_ASSERT(s.type() == s2.type());
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testAssignmentConstructor() {
|
|
MyMoneySchedule s;
|
|
|
|
s.setId("SCHED001");
|
|
s.setType(MyMoneySchedule::TYPE_BILL);
|
|
|
|
MyMoneySchedule s2 = s;
|
|
|
|
CPPUNIT_ASSERT(s.id() == s2.id());
|
|
CPPUNIT_ASSERT(s.type() == s2.type());
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testSingleton() {
|
|
/*
|
|
MyMoneyScheduled *m = MyMoneyScheduled::instance();
|
|
CPPUNIT_ASSERT(m!=NULL);
|
|
|
|
CPPUNIT_ASSERT(m->m_instance != NULL);
|
|
CPPUNIT_ASSERT(m->m_nextId == 1);
|
|
*/
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testAddSchedule()
|
|
{
|
|
/*
|
|
MyMoneyScheduled *m = MyMoneyScheduled::instance();
|
|
CPPUNIT_ASSERT(m!=NULL);
|
|
|
|
try {
|
|
|
|
MyMoneySplit sp1;
|
|
sp1.setShares(MyMoneyMoney(1));
|
|
sp1.setValue(MyMoneyMoney(1));
|
|
sp1.setAccountId("MTE1");
|
|
sp1.setMemo("MTE1");
|
|
sp1.setPayeeId("MTE1");
|
|
|
|
MyMoneySplit sp2;
|
|
sp2.setShares(MyMoneyMoney(1));
|
|
sp2.setValue(MyMoneyMoney(1));
|
|
sp2.setAccountId("MTE2");
|
|
sp2.setMemo("MTE2");
|
|
sp2.setPayeeId("MTE2");
|
|
|
|
MyMoneyTransaction t;
|
|
t.addSplit(sp1);
|
|
t.addSplit(sp2);
|
|
|
|
MyMoneySchedule s1( "s1",
|
|
MyMoneySchedule::TYPE_BILL,
|
|
MyMoneySchedule::OCCUR_WEEKLY, 1,
|
|
MyMoneySchedule::STYPE_DIRECTDEBIT,
|
|
TQDate(2001, 1, 1),
|
|
false,
|
|
true,
|
|
true);
|
|
s1.setTransaction(t);
|
|
MyMoneySchedule s2( "s2",
|
|
MyMoneySchedule::TYPE_DEPOSIT,
|
|
MyMoneySchedule::OCCUR_MONTHLY, 1,
|
|
MyMoneySchedule::STYPE_MANUALDEPOSIT,
|
|
TQDate(2001, 2, 1),
|
|
false,
|
|
true,
|
|
true);
|
|
s2.setTransaction(t);
|
|
MyMoneySchedule s3( "s3",
|
|
MyMoneySchedule::TYPE_TRANSFER,
|
|
MyMoneySchedule::OCCUR_YEARLY, 1,
|
|
MyMoneySchedule::STYPE_WRITECHEQUE,
|
|
TQDate(2001, 3, 1),
|
|
false,
|
|
true,
|
|
true);
|
|
s3.setTransaction(t);
|
|
|
|
|
|
m->addSchedule("A000001", s1);
|
|
m->addSchedule("A000001", s2);
|
|
m->addSchedule("A000001", s3);
|
|
} catch(MyMoneyException *e) {
|
|
char buf[256];
|
|
sprintf(buf, "Unexpected exception: %s", e->what().latin1());
|
|
CPPUNIT_FAIL(buf);
|
|
delete e;
|
|
}
|
|
|
|
CPPUNIT_ASSERT(m->m_nextId == 4);
|
|
CPPUNIT_ASSERT(m->m_accountsScheduled["A000001"].size() == 3);
|
|
*/
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testAnyScheduled()
|
|
{
|
|
/*
|
|
MyMoneyScheduled *m = MyMoneyScheduled::instance();
|
|
CPPUNIT_ASSERT(m!=NULL);
|
|
|
|
// Successes
|
|
CPPUNIT_ASSERT(m->anyScheduled("A000001"));
|
|
CPPUNIT_ASSERT(m->anyScheduled("A000001", MyMoneySchedule::TYPE_BILL));
|
|
CPPUNIT_ASSERT(m->anyScheduled("A000001", MyMoneySchedule::TYPE_DEPOSIT));
|
|
CPPUNIT_ASSERT(m->anyScheduled("A000001", MyMoneySchedule::TYPE_TRANSFER));
|
|
CPPUNIT_ASSERT(m->anyScheduled("A000001", MyMoneySchedule::TYPE_ANY,
|
|
MyMoneySchedule::OCCUR_MONTHLY));
|
|
CPPUNIT_ASSERT(m->anyScheduled("A000001", MyMoneySchedule::TYPE_ANY,
|
|
MyMoneySchedule::OCCUR_WEEKLY));
|
|
CPPUNIT_ASSERT(m->anyScheduled("A000001", MyMoneySchedule::TYPE_ANY,
|
|
MyMoneySchedule::OCCUR_YEARLY));
|
|
CPPUNIT_ASSERT(m->anyScheduled("A000001", MyMoneySchedule::TYPE_ANY,
|
|
MyMoneySchedule::OCCUR_ANY,
|
|
MyMoneySchedule::STYPE_DIRECTDEBIT));
|
|
CPPUNIT_ASSERT(m->anyScheduled("A000001", MyMoneySchedule::TYPE_ANY,
|
|
MyMoneySchedule::OCCUR_ANY,
|
|
MyMoneySchedule::STYPE_MANUALDEPOSIT));
|
|
CPPUNIT_ASSERT(m->anyScheduled("A000001", MyMoneySchedule::TYPE_ANY,
|
|
MyMoneySchedule::OCCUR_ANY,
|
|
MyMoneySchedule::STYPE_WRITECHEQUE));
|
|
|
|
// Failures
|
|
CPPUNIT_ASSERT(m->anyScheduled("A000001", MyMoneySchedule::TYPE_BILL,
|
|
MyMoneySchedule::OCCUR_MONTHLY) == false);
|
|
*/
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testOverdue()
|
|
{
|
|
MyMoneySchedule sch_overdue;
|
|
MyMoneySchedule sch_intime;
|
|
|
|
// the following checks only work correctly, if currentDate() is
|
|
// between the 1st and 27th. If it is between 28th and 31st
|
|
// we don't perform them. Note: this should be fixed.
|
|
if(TQDate::currentDate().day() > 27 || TQDate::currentDate().day() == 1) {
|
|
std::cout << std::endl << "testOverdue() skipped because current day is between 28th and 2nd" << std::endl;
|
|
return;
|
|
}
|
|
|
|
TQDate startDate = TQDate::currentDate().addDays(-1).addMonths(-23);
|
|
TQDate lastPaymentDate = TQDate::currentDate().addDays(-1).addMonths(-1);
|
|
|
|
TQString ref = TQString(
|
|
"<!DOCTYPE TEST>\n"
|
|
"<SCHEDULE-CONTAINER>\n"
|
|
" <SCHEDULED_TX startDate=\"%1\" autoEnter=\"0\" weekendOption=\"2\" lastPayment=\"%2\" paymentType=\"8\" endDate=\"\" type=\"5\" id=\"SCH0002\" name=\"A Name\" fixed=\"0\" occurenceMultiplier=\"1\" occurence=\"32\" >\n"
|
|
" <PAYMENTS>\n"
|
|
" <PAYMENT date=\"%3\" />\n"
|
|
" </PAYMENTS>\n"
|
|
" <TRANSACTION postdate=\"\" memo=\"Wohnung:Miete\" id=\"\" commodity=\"EUR\" entrydate=\"\" >\n"
|
|
" <SPLITS>\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"96379/100\" action=\"\" number=\"\" reconcileflag=\"2\" memo=\"\" value=\"96379/100\" account=\"A000076\" />\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"-96379/100\" action=\"\" number=\"\" reconcileflag=\"1\" memo=\"\" value=\"-96379/100\" account=\"A000276\" />\n"
|
|
" </SPLITS>\n"
|
|
" <KEYVALUEPAIRS>\n"
|
|
" <PAIR key=\"key\" value=\"value\" />\n"
|
|
" </KEYVALUEPAIRS>\n"
|
|
" </TRANSACTION>\n"
|
|
" </SCHEDULED_TX>\n"
|
|
"</SCHEDULE-CONTAINER>\n");
|
|
TQString ref_overdue = ref.arg(startDate.toString(Qt::ISODate))
|
|
.arg(lastPaymentDate.toString(Qt::ISODate))
|
|
.arg(lastPaymentDate.toString(Qt::ISODate));
|
|
|
|
TQString ref_intime = ref.arg(startDate.addDays(1).toString(Qt::ISODate))
|
|
.arg(lastPaymentDate.addDays(1).toString(Qt::ISODate))
|
|
.arg(lastPaymentDate.addDays(1).toString(Qt::ISODate));
|
|
|
|
TQDomDocument doc;
|
|
TQDomElement node;
|
|
|
|
// std::cout << ref_intime << std::endl;
|
|
try {
|
|
doc.setContent(ref_overdue);
|
|
node = doc.documentElement().firstChild().toElement();
|
|
sch_overdue = MyMoneySchedule(node);
|
|
doc.setContent(ref_intime);
|
|
node = doc.documentElement().firstChild().toElement();
|
|
sch_intime = MyMoneySchedule(node);
|
|
|
|
CPPUNIT_ASSERT(sch_overdue.isOverdue() == true);
|
|
CPPUNIT_ASSERT(sch_intime.isOverdue() == false);
|
|
|
|
} catch(MyMoneyException *e) {
|
|
delete e;
|
|
CPPUNIT_FAIL("Unexpected exception");
|
|
}
|
|
/*
|
|
MyMoneyScheduled *m = MyMoneyScheduled::instance();
|
|
CPPUNIT_ASSERT(m!=NULL);
|
|
|
|
try
|
|
{
|
|
CPPUNIT_ASSERT(m->anyOverdue("A000001"));
|
|
CPPUNIT_ASSERT(m->anyOverdue("A000001", MyMoneySchedule::TYPE_BILL));
|
|
CPPUNIT_ASSERT(m->anyOverdue("A000001", MyMoneySchedule::TYPE_TRANSFER));
|
|
CPPUNIT_ASSERT(m->anyOverdue("A000001", MyMoneySchedule::TYPE_DEPOSIT));
|
|
} catch(MyMoneyException *e) {
|
|
char buf[256];
|
|
sprintf(buf, "Unexpected exception: %s", e->what().latin1());
|
|
CPPUNIT_FAIL(buf);
|
|
delete e;
|
|
}
|
|
*/
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testGetSchedule()
|
|
{
|
|
/*
|
|
MyMoneyScheduled *m = MyMoneyScheduled::instance();
|
|
CPPUNIT_ASSERT(m!=NULL);
|
|
|
|
try
|
|
{
|
|
MyMoneySchedule s = m->getSchedule("A000001", "SCHED00002");
|
|
|
|
CPPUNIT_ASSERT(s.type() == MyMoneySchedule::TYPE_DEPOSIT);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
CPPUNIT_ASSERT(s.paymentType() == MyMoneySchedule::STYPE_MANUALDEPOSIT);
|
|
CPPUNIT_ASSERT(s.startDate() == TQDate(2001, 2, 1));
|
|
CPPUNIT_ASSERT(s.willEnd() == false);
|
|
CPPUNIT_ASSERT(s.isFixed() == true);
|
|
CPPUNIT_ASSERT(s.autoEnter() == true);
|
|
|
|
MyMoneyTransaction t = s.transaction();
|
|
CPPUNIT_ASSERT(t.splitCount() == 2);
|
|
|
|
s = m->getSchedule("A000001", "SCHED00005");
|
|
|
|
CPPUNIT_FAIL("Exception expected while getting schedule SCHED00005");
|
|
} catch (MyMoneyException *e)
|
|
{
|
|
delete e;
|
|
}
|
|
*/
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testGetScheduled()
|
|
{
|
|
/*
|
|
MyMoneyScheduled *m = MyMoneyScheduled::instance();
|
|
CPPUNIT_ASSERT(m!=NULL);
|
|
|
|
try
|
|
{
|
|
TQValueList<TQString> testList;
|
|
|
|
testList = m->getScheduled("A000001");
|
|
CPPUNIT_ASSERT(testList.size() == 3);
|
|
CPPUNIT_ASSERT(testList[0] == "SCHED00001");
|
|
CPPUNIT_ASSERT(testList[1] == "SCHED00002");
|
|
CPPUNIT_ASSERT(testList[2] == "SCHED00003");
|
|
|
|
testList = m->getScheduled("A000001", MyMoneySchedule::TYPE_DEPOSIT);
|
|
CPPUNIT_ASSERT(testList.size() == 1);
|
|
CPPUNIT_ASSERT(testList[0] == "SCHED00002");
|
|
|
|
testList = m->getScheduled("A000001", MyMoneySchedule::TYPE_BILL);
|
|
CPPUNIT_ASSERT(testList.size() == 1);
|
|
CPPUNIT_ASSERT(testList[0] == "SCHED00001");
|
|
|
|
testList = m->getScheduled("A000001", MyMoneySchedule::TYPE_TRANSFER);
|
|
CPPUNIT_ASSERT(testList.size() == 1);
|
|
CPPUNIT_ASSERT(testList[0] == "SCHED00003");
|
|
|
|
testList = m->getScheduled("A000001", MyMoneySchedule::TYPE_DEPOSIT,
|
|
MyMoneySchedule::STYPE_MANUALDEPOSIT,
|
|
MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(testList.size() == 1);
|
|
CPPUNIT_ASSERT(testList[0] == "SCHED00002");
|
|
|
|
testList = m->getScheduled("A000001", TQDate(2001, 1, 1), TQDate(2001, 2, 1));
|
|
CPPUNIT_ASSERT(testList.size() == 2);
|
|
CPPUNIT_ASSERT(testList[0] == "SCHED00001");
|
|
CPPUNIT_ASSERT(testList[1] == "SCHED00002");
|
|
|
|
} catch(MyMoneyException *e) {
|
|
char buf[256];
|
|
sprintf(buf, "Unexpected exception: %s", e->what().latin1());
|
|
CPPUNIT_FAIL(buf);
|
|
delete e;
|
|
}
|
|
*/
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testGetOverdue()
|
|
{
|
|
/*
|
|
MyMoneyScheduled *m = MyMoneyScheduled::instance();
|
|
CPPUNIT_ASSERT(m!=NULL);
|
|
|
|
try
|
|
{
|
|
TQValueList<TQString> testList;
|
|
|
|
testList = m->getOverdue("A000001");
|
|
CPPUNIT_ASSERT(testList.size() == 3);
|
|
CPPUNIT_ASSERT(testList[0] == "SCHED00001");
|
|
CPPUNIT_ASSERT(testList[1] == "SCHED00002");
|
|
CPPUNIT_ASSERT(testList[2] == "SCHED00003");
|
|
|
|
testList = m->getOverdue("A000001", MyMoneySchedule::TYPE_DEPOSIT);
|
|
CPPUNIT_ASSERT(testList.size() == 1);
|
|
CPPUNIT_ASSERT(testList[0] == "SCHED00002");
|
|
|
|
testList = m->getOverdue("A000001", MyMoneySchedule::TYPE_BILL);
|
|
CPPUNIT_ASSERT(testList.size() == 1);
|
|
CPPUNIT_ASSERT(testList[0] == "SCHED00001");
|
|
|
|
testList = m->getOverdue("A000001", MyMoneySchedule::TYPE_TRANSFER);
|
|
CPPUNIT_ASSERT(testList.size() == 1);
|
|
CPPUNIT_ASSERT(testList[0] == "SCHED00003");
|
|
|
|
testList = m->getOverdue("A000001", MyMoneySchedule::TYPE_DEPOSIT,
|
|
MyMoneySchedule::STYPE_MANUALDEPOSIT,
|
|
MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(testList.size() == 1);
|
|
CPPUNIT_ASSERT(testList[0] == "SCHED00002");
|
|
} catch(MyMoneyException *e) {
|
|
char buf[256];
|
|
sprintf(buf, "Unexpected exception: %s", e->what().latin1());
|
|
CPPUNIT_FAIL(buf);
|
|
delete e;
|
|
}
|
|
*/
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testNextPayment()
|
|
/*
|
|
* Test for a schedule where a payment hasn't yet been made.
|
|
* First payment is in the future.
|
|
*/
|
|
{
|
|
MyMoneySchedule sch;
|
|
TQString future_sched = TQString(
|
|
"<!DOCTYPE TEST>\n"
|
|
"<SCHEDULE-CONTAINER>\n"
|
|
"<SCHEDULED_TX startDate=\"2007-02-17\" autoEnter=\"1\" weekendOption=\"2\" lastPayment=\"\" paymentType=\"1\" endDate=\"\" type=\"1\" id=\"SCH000058\" name=\"Car Tax\" fixed=\"1\" occurenceMultiplier=\"1\" occurence=\"16384\" >\n"
|
|
" <PAYMENTS/>\n"
|
|
" <TRANSACTION postdate=\"\" memo=\"\" id=\"\" commodity=\"GBP\" entrydate=\"\" >\n"
|
|
" <SPLITS>\n"
|
|
" <SPLIT payee=\"P000044\" reconciledate=\"\" shares=\"-15000/100\" action=\"Withdrawal\" bankid=\"\" number=\"\" reconcileflag=\"0\" memo=\"\" value=\"-15000/100\" account=\"A000155\" />\n"
|
|
" <SPLIT payee=\"\" reconciledate=\"\" shares=\"15000/100\" action=\"Withdrawal\" bankid=\"\" number=\"\" reconcileflag=\"0\" memo=\"\" value=\"15000/100\" account=\"A000182\" />\n"
|
|
" </SPLITS>\n"
|
|
" <KEYVALUEPAIRS/>\n"
|
|
" </TRANSACTION>\n"
|
|
"</SCHEDULED_TX>\n"
|
|
"</SCHEDULE-CONTAINER>\n"
|
|
);
|
|
|
|
TQDomDocument doc;
|
|
TQDomElement node;
|
|
doc.setContent(future_sched);
|
|
node = doc.documentElement().firstChild().toElement();
|
|
|
|
try {
|
|
sch = MyMoneySchedule(node);
|
|
CPPUNIT_ASSERT(sch.nextPayment(TQDate(2007,2,14)) == TQDate(2007,2,17));
|
|
CPPUNIT_ASSERT(sch.nextPayment(TQDate(2007,2,17)) == TQDate(2008,2,17));
|
|
CPPUNIT_ASSERT(sch.nextPayment(TQDate(2007,2,18)) == TQDate(2008,2,17));
|
|
|
|
} catch(MyMoneyException *e) {
|
|
delete e;
|
|
CPPUNIT_FAIL("Unexpected exception");
|
|
}
|
|
/*
|
|
MyMoneyScheduled *m = MyMoneyScheduled::instance();
|
|
CPPUNIT_ASSERT(m!=NULL);
|
|
|
|
try
|
|
{
|
|
MyMoneySchedule s1 = m->getSchedule("A000001", "SCHED00001");
|
|
MyMoneySchedule s2 = m->getSchedule("A000001", "SCHED00002");
|
|
MyMoneySchedule s3 = m->getSchedule("A000001", "SCHED00003");
|
|
|
|
TQDate nextPayment1 = s1.nextPayment();
|
|
TQDate nextPayment2 = s2.nextPayment();
|
|
TQDate nextPayment3 = s3.nextPayment();
|
|
|
|
CPPUNIT_ASSERT(nextPayment1.year() != 1900);
|
|
CPPUNIT_ASSERT(nextPayment2.year() != 1900);
|
|
CPPUNIT_ASSERT(nextPayment3.year() != 1900);
|
|
} catch (MyMoneyException *e)
|
|
{
|
|
CPPUNIT_FAIL("Unexpected exception");
|
|
delete e;
|
|
}
|
|
*/
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testAddHalfMonths()
|
|
{
|
|
// addHalfMonths is private
|
|
// Test a Schedule with occurence OCCUR_EVERYHALFMONTH using nextPayment
|
|
MyMoneySchedule s;
|
|
s.setStartDate(TQDate(2007, 1, 1));
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYHALFMONTH);
|
|
s.setNextDueDate(s.startDate());
|
|
s.setLastPayment(s.startDate());
|
|
|
|
TQString format("yyyy-MM-dd");
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-16" );
|
|
s.setNextDueDate(TQDate(2007, 1, 2));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-17" );
|
|
s.setNextDueDate(TQDate(2007, 1, 3));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-18" );
|
|
s.setNextDueDate(TQDate(2007, 1, 4));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-19" );
|
|
s.setNextDueDate(TQDate(2007, 1, 5));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-20" );
|
|
s.setNextDueDate(TQDate(2007, 1, 6));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-21" );
|
|
s.setNextDueDate(TQDate(2007, 1, 7));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-22" );
|
|
s.setNextDueDate(TQDate(2007, 1, 8));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-23" );
|
|
s.setNextDueDate(TQDate(2007, 1, 9));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-24" );
|
|
s.setNextDueDate(TQDate(2007, 1, 10));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-25" );
|
|
s.setNextDueDate(TQDate(2007, 1, 11));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-26" );
|
|
s.setNextDueDate(TQDate(2007, 1, 12));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-27" );
|
|
s.setNextDueDate(TQDate(2007, 1, 13));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-28" );
|
|
s.setNextDueDate(TQDate(2007, 1, 14));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-29" );
|
|
// 15 -> Last Day
|
|
s.setNextDueDate(TQDate(2007, 1, 15));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-01-31" );
|
|
s.setNextDueDate(TQDate(2007, 1, 16));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-01" );
|
|
s.setNextDueDate(TQDate(2007, 1, 17));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-02" );
|
|
s.setNextDueDate(TQDate(2007, 1, 18));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-03" );
|
|
s.setNextDueDate(TQDate(2007, 1, 19));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-04" );
|
|
s.setNextDueDate(TQDate(2007, 1, 20));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-05" );
|
|
s.setNextDueDate(TQDate(2007, 1, 21));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-06" );
|
|
s.setNextDueDate(TQDate(2007, 1, 22));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-07" );
|
|
s.setNextDueDate(TQDate(2007, 1, 23));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-08" );
|
|
s.setNextDueDate(TQDate(2007, 1, 24));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-09" );
|
|
s.setNextDueDate(TQDate(2007, 1, 25));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-10" );
|
|
s.setNextDueDate(TQDate(2007, 1, 26));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-11" );
|
|
s.setNextDueDate(TQDate(2007, 1, 27));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-12" );
|
|
s.setNextDueDate(TQDate(2007, 1, 28));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-13" );
|
|
s.setNextDueDate(TQDate(2007, 1, 29));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-14" );
|
|
// 30th,31st -> 15th
|
|
s.setNextDueDate(TQDate(2007, 1, 30));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-15" );
|
|
s.setNextDueDate(TQDate(2007, 1, 31));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-02-15" );
|
|
// 30th (last day)
|
|
s.setNextDueDate(TQDate(2007, 4, 30));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2007-05-15" );
|
|
// 28th of February (Last day): to 15th
|
|
s.setNextDueDate(TQDate(1900, 2, 28));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "1900-03-15" );
|
|
// 28th of February (Leap year): to 13th
|
|
s.setNextDueDate(TQDate(2000, 2, 28));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2000-03-13" );
|
|
// 29th of February (Leap year)
|
|
s.setNextDueDate(TQDate(2000, 2, 29));
|
|
CPPUNIT_ASSERT( s.nextPayment(s.nextDueDate()).toString(format) == "2000-03-15" );
|
|
// Add multiple transactions
|
|
s.setStartDate(TQDate(2007, 1, 1));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-01-16" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-02-01" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-02-16" );
|
|
s.setStartDate(TQDate(2007, 1, 12));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-01-27" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-02-12" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-02-27" );
|
|
CPPUNIT_ASSERT( s.dateAfter(5).toString(format) == "2007-03-12" );
|
|
s.setStartDate(TQDate(2007, 1, 13));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-01-28" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-02-13" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-02-28" );
|
|
CPPUNIT_ASSERT( s.dateAfter(5).toString(format) == "2007-03-15" );
|
|
s.setStartDate(TQDate(2007, 1, 14));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-01-29" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-02-14" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-02-28" );
|
|
CPPUNIT_ASSERT( s.dateAfter(5).toString(format) == "2007-03-15" );
|
|
s.setStartDate(TQDate(2007, 1, 15));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-01-31" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-02-15" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-02-28" );
|
|
CPPUNIT_ASSERT( s.dateAfter(5).toString(format) == "2007-03-15" );
|
|
s.setStartDate(TQDate(2007, 1, 16));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-02-01" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-02-16" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-03-01" );
|
|
CPPUNIT_ASSERT( s.dateAfter(5).toString(format) == "2007-03-16" );
|
|
s.setStartDate(TQDate(2007, 1, 27));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-02-12" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-02-27" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-03-12" );
|
|
CPPUNIT_ASSERT( s.dateAfter(5).toString(format) == "2007-03-27" );
|
|
s.setStartDate(TQDate(2007, 1, 28));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-02-13" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-02-28" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-03-15" );
|
|
CPPUNIT_ASSERT( s.dateAfter(5).toString(format) == "2007-03-31" );
|
|
s.setStartDate(TQDate(2007, 1, 29));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-02-14" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-02-28" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-03-15" );
|
|
CPPUNIT_ASSERT( s.dateAfter(5).toString(format) == "2007-03-31" );
|
|
s.setStartDate(TQDate(2007, 1, 30));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-02-15" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-02-28" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-03-15" );
|
|
CPPUNIT_ASSERT( s.dateAfter(5).toString(format) == "2007-03-31" );
|
|
s.setStartDate(TQDate(2007, 1, 31));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-02-15" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-02-28" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-03-15" );
|
|
CPPUNIT_ASSERT( s.dateAfter(5).toString(format) == "2007-03-31" );
|
|
s.setStartDate(TQDate(2007, 4, 29));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-05-14" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-05-29" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-06-14" );
|
|
CPPUNIT_ASSERT( s.dateAfter(5).toString(format) == "2007-06-29" );
|
|
s.setStartDate(TQDate(2007, 4, 30));
|
|
CPPUNIT_ASSERT( s.dateAfter(2).toString(format) == "2007-05-15" );
|
|
CPPUNIT_ASSERT( s.dateAfter(3).toString(format) == "2007-05-31" );
|
|
CPPUNIT_ASSERT( s.dateAfter(4).toString(format) == "2007-06-15" );
|
|
CPPUNIT_ASSERT( s.dateAfter(5).toString(format) == "2007-06-30" );
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testPaymentDates()
|
|
{
|
|
MyMoneySchedule sch;
|
|
TQString ref_ok = TQString(
|
|
"<!DOCTYPE TEST>\n"
|
|
"<SCHEDULE-CONTAINER>\n"
|
|
|
|
"<SCHEDULED_TX startDate=\"2003-12-31\" autoEnter=\"1\" weekendOption=\"0\" lastPayment=\"2006-01-31\" paymentType=\"2\" endDate=\"\" type=\"2\" id=\"SCH000032\" name=\"DSL\" fixed=\"0\" occurenceMultiplier=\"1\" occurence=\"32\" >\n"
|
|
" <PAYMENTS/>\n"
|
|
" <TRANSACTION postdate=\"2006-02-28\" memo=\"\" id=\"\" commodity=\"EUR\" entrydate=\"\" >\n"
|
|
" <SPLITS>\n"
|
|
" <SPLIT payee=\"P000076\" reconciledate=\"\" shares=\"1200/100\" action=\"Deposit\" bankid=\"\" number=\"\" reconcileflag=\"0\" memo=\"\" value=\"1200/100\" account=\"A000076\" />\n"
|
|
" <SPLIT payee=\"\" reconciledate=\"\" shares=\"-1200/100\" action=\"Deposit\" bankid=\"\" number=\"\" reconcileflag=\"0\" memo=\"\" value=\"-1200/100\" account=\"A000009\" />\n"
|
|
" </SPLITS>\n"
|
|
" <KEYVALUEPAIRS/>\n"
|
|
" </TRANSACTION>\n"
|
|
"</SCHEDULED_TX>\n"
|
|
|
|
"</SCHEDULE-CONTAINER>\n"
|
|
);
|
|
|
|
TQDomDocument doc;
|
|
TQDomElement node;
|
|
doc.setContent(ref_ok);
|
|
node = doc.documentElement().firstChild().toElement();
|
|
|
|
TQDate startDate(2006,1,28);
|
|
TQDate endDate(2006,5,30);
|
|
|
|
try {
|
|
sch = MyMoneySchedule(node);
|
|
TQDate nextPayment = sch.nextPayment(startDate);
|
|
TQValueList<TQDate> list = sch.paymentDates(nextPayment, endDate);
|
|
CPPUNIT_ASSERT(list.count() == 3);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2006,2,28));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2006,3,31));
|
|
// Would fall on a Sunday so gets moved back to 28th.
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2006,4,28));
|
|
|
|
// Add tests for each possible occurence.
|
|
// Check how paymentDates is meant to work
|
|
// Build a list of expected dates and compare
|
|
// MyMoneySchedule::OCCUR_ONCE
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_ONCE);
|
|
startDate.setYMD(2009,1,1);
|
|
endDate.setYMD(2009,12,31);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 1);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2009,1,1));
|
|
// MyMoneySchedule::OCCUR_DAILY
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_DAILY);
|
|
startDate.setYMD(2009,1,1);
|
|
endDate.setYMD(2009,1,5);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2009, 1, 1));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2009, 1, 2));
|
|
// Would fall on Saturday so gets moved to 2nd.
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2009, 1, 2));
|
|
// Would fall on Sunday so gets moved to 2nd.
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2009, 1, 2));
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2009, 1, 5));
|
|
// MyMoneySchedule::OCCUR_DAILY with multiplier 2
|
|
sch.setOccurenceMultiplier(2);
|
|
list = sch.paymentDates(startDate.addDays(1),endDate);
|
|
CPPUNIT_ASSERT(list.count() == 2);
|
|
// Would fall on Sunday so gets moved to 2nd.
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2009, 1, 2));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2009, 1, 5));
|
|
sch.setOccurenceMultiplier(1);
|
|
// MyMoneySchedule::OCCUR_WEEKLY
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_WEEKLY);
|
|
startDate.setYMD(2009,1,6);
|
|
endDate.setYMD(2009,2,4);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2009, 1, 6));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2009, 1,13));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2009, 1,20));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2009, 1,27));
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2009, 2, 3));
|
|
// MyMoneySchedule::OCCUR_EVERYOTHERWEEK
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_EVERYOTHERWEEK);
|
|
startDate.setYMD(2009,2,5);
|
|
endDate.setYMD(2009,4,3);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2009, 2, 5));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2009, 2,19));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2009, 3, 5));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2009, 3,19));
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2009, 4, 2));
|
|
// MyMoneySchedule::OCCUR_FORTNIGHTLY
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_FORTNIGHTLY);
|
|
startDate.setYMD(2009,4,4);
|
|
endDate.setYMD(2009,5,31);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 4);
|
|
// First one would fall on a Saturday and would get moved
|
|
// to 3rd which is before start date so is not in list.
|
|
// Would fall on a Saturday so gets moved to 17th.
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2009, 4,17));
|
|
// Would fall on a Saturday so gets moved to 1st.
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2009, 5, 1));
|
|
// Would fall on a Saturday so gets moved to 15th.
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2009, 5,15));
|
|
// Would fall on a Saturday so gets moved to 29th.
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2009, 5,29));
|
|
// MyMoneySchedule::OCCUR_EVERYHALFMONTH
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_EVERYHALFMONTH);
|
|
startDate.setYMD(2009,6,1);
|
|
endDate.setYMD(2009,8,11);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2009, 6, 1));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2009, 6,16));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2009, 7, 1));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2009, 7,16));
|
|
// Would fall on a Saturday so gets moved to 31st.
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2009, 7, 31));
|
|
// MyMoneySchedule::OCCUR_EVERYTHREEWEEKS
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_EVERYTHREEWEEKS);
|
|
startDate.setYMD(2009,8,12);
|
|
endDate.setYMD(2009,11,12);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2009, 8,12));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2009, 9, 2));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2009, 9,23));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2009,10,14));
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2009,11, 4));
|
|
// MyMoneySchedule::OCCUR_EVERYFOURWEEKS
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_EVERYFOURWEEKS);
|
|
startDate.setYMD(2009,11,13);
|
|
endDate.setYMD(2010,3,13);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2009,11,13));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2009,12,11));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2010, 1, 8));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2010, 2, 5));
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2010, 3, 5));
|
|
// MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS);
|
|
startDate.setYMD(2010,3,19);
|
|
endDate.setYMD(2010,7,19);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2010, 3,19));
|
|
// Would fall on a Sunday so gets moved to 16th.
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2010, 4,16));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2010, 5,18));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2010, 6,17));
|
|
// Would fall on a Saturday so gets moved to 16th.
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2010, 7,16));
|
|
// MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS);
|
|
startDate.setYMD(2010,7,26);
|
|
endDate.setYMD(2011,3,26);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2010, 7,26));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2010, 9,20));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2010,11,15));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2011, 1,10));
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2011, 3, 7));
|
|
// MyMoneySchedule::OCCUR_EVERYOTHERMONTH
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_EVERYOTHERMONTH);
|
|
startDate.setYMD(2011,3,14);
|
|
endDate.setYMD(2011,11,20);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2011, 3,14));
|
|
// Would fall on a Saturday so gets moved to 13th.
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2011, 5,13));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2011, 7,14));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2011, 9,14));
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2011,11,14));
|
|
// MyMoneySchedule::OCCUR_EVERYTHREEMONTHS
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_EVERYTHREEMONTHS);
|
|
startDate.setYMD(2011,11,15);
|
|
endDate.setYMD(2012,11,19);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2011,11,15));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2012, 2,15));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2012, 5,15));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2012, 8,15));
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2012,11,15));
|
|
// MyMoneySchedule::OCCUR_QUARTERLY
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_QUARTERLY);
|
|
startDate.setYMD(2012,11,20);
|
|
endDate.setYMD(2013,11,23);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2012,11,20));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2013, 2,20));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2013, 5,20));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2013, 8,20));
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2013,11,20));
|
|
// MyMoneySchedule::OCCUR_EVERYFOURMONTHS
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_EVERYFOURMONTHS);
|
|
startDate.setYMD(2013,11,21);
|
|
endDate.setYMD(2015, 3,23);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2013,11,21));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2014, 3,21));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2014, 7,21));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2014,11,21));
|
|
// Would fall on a Saturday so gets moved to 20th.
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2015, 3,20));
|
|
// MyMoneySchedule::OCCUR_TWICEYEARLY
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_TWICEYEARLY);
|
|
startDate.setYMD(2015, 3,22);
|
|
endDate.setYMD(2017, 3,29);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 4);
|
|
// First date would fall on a Sunday which would get moved
|
|
// to 20th which is before start date so not in list.
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2015, 9,22));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2016, 3,22));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2016, 9,22));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2017, 3,22));
|
|
// MyMoneySchedule::OCCUR_YEARLY
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_YEARLY);
|
|
startDate.setYMD(2017, 3,23);
|
|
endDate.setYMD(2021, 3,29);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2017, 3,23));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2018, 3,23));
|
|
// Would fall on a Saturday so gets moved to 22nd.
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2019, 3,22));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2020, 3,23));
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2021, 3,23));
|
|
// MyMoneySchedule::OCCUR_EVERYOTHERYEAR
|
|
sch.setOccurence(MyMoneySchedule::OCCUR_EVERYOTHERYEAR);
|
|
startDate.setYMD(2021, 3,24);
|
|
endDate.setYMD(2029, 3,30);
|
|
sch.setStartDate(startDate);
|
|
sch.setNextDueDate(startDate);
|
|
list = sch.paymentDates(startDate,endDate);
|
|
CPPUNIT_ASSERT(list.count() == 5);
|
|
CPPUNIT_ASSERT(list[0] == TQDate(2021, 3,24));
|
|
CPPUNIT_ASSERT(list[1] == TQDate(2023, 3,24));
|
|
CPPUNIT_ASSERT(list[2] == TQDate(2025, 3,24));
|
|
CPPUNIT_ASSERT(list[3] == TQDate(2027, 3,24));
|
|
// Would fall on a Saturday so gets moved to 23rd.
|
|
CPPUNIT_ASSERT(list[4] == TQDate(2029, 3,23));
|
|
} catch(MyMoneyException *e) {
|
|
delete e;
|
|
CPPUNIT_FAIL("Unexpected exception");
|
|
}
|
|
/*
|
|
MyMoneyScheduled *m = MyMoneyScheduled::instance();
|
|
CPPUNIT_ASSERT(m!=NULL);
|
|
|
|
try
|
|
{
|
|
MyMoneySchedule s1 = m->getSchedule("A000001", "SCHED00001");
|
|
MyMoneySchedule s2 = m->getSchedule("A000001", "SCHED00002");
|
|
MyMoneySchedule s3 = m->getSchedule("A000001", "SCHED00003");
|
|
|
|
TQValueList<TQDate> payments1 = s1.paymentDates(TQDate(2001, 1, 1), TQDate(2001, 2, 1));
|
|
TQValueList<TQDate> payments2 = s2.paymentDates(TQDate(2001, 2, 1), TQDate(2001, 6, 1));
|
|
TQValueList<TQDate> payments3 = s3.paymentDates(TQDate(2001, 3, 1), TQDate(2005, 3, 1));
|
|
|
|
CPPUNIT_ASSERT(payments1.size() == 5);
|
|
CPPUNIT_ASSERT(payments2.size() == 5);
|
|
CPPUNIT_ASSERT(payments3.size() == 5);
|
|
} catch (MyMoneyException *e)
|
|
{
|
|
CPPUNIT_FAIL("Unexpected exception");
|
|
delete e;
|
|
}
|
|
*/
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testReplaceSchedule()
|
|
{
|
|
/*
|
|
MyMoneyScheduled *m = MyMoneyScheduled::instance();
|
|
CPPUNIT_ASSERT(m!=NULL);
|
|
|
|
try
|
|
{
|
|
MyMoneySchedule s = m->getSchedule("A000001", "SCHED00002");
|
|
CPPUNIT_ASSERT(s.type() == MyMoneySchedule::TYPE_DEPOSIT);
|
|
s.setType(MyMoneySchedule::TYPE_TRANSFER);
|
|
m->replaceSchedule("A000001", "SCHED00002", s);
|
|
s = m->getSchedule("A000001", "SCHED00002");
|
|
CPPUNIT_ASSERT(s.type() == MyMoneySchedule::TYPE_TRANSFER);
|
|
|
|
} catch(MyMoneyException *e) {
|
|
char buf[256];
|
|
sprintf(buf, "Unexpected exception: %s", e->what().latin1());
|
|
CPPUNIT_FAIL(buf);
|
|
delete e;
|
|
}
|
|
*/
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testRemoveSchedule()
|
|
{
|
|
/*
|
|
MyMoneyScheduled *m = MyMoneyScheduled::instance();
|
|
CPPUNIT_ASSERT(m!=NULL);
|
|
|
|
try
|
|
{
|
|
TQValueList<TQString> testList;
|
|
|
|
testList = m->getScheduled("A000001");
|
|
CPPUNIT_ASSERT(testList.size() == 3);
|
|
|
|
m->removeSchedule("A000001", "SCHED00002");
|
|
|
|
testList = m->getScheduled("A000001");
|
|
CPPUNIT_ASSERT(testList.size() == 2);
|
|
|
|
m->getSchedule("A000001", "SCHED00002");
|
|
|
|
CPPUNIT_FAIL("Exception expected while getting schedule SCHED00002");
|
|
} catch (MyMoneyException *e)
|
|
{
|
|
delete e;
|
|
}
|
|
*/
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testWriteXML() {
|
|
MyMoneySchedule sch( "A Name",
|
|
MyMoneySchedule::TYPE_BILL,
|
|
MyMoneySchedule::OCCUR_WEEKLY, 123,
|
|
MyMoneySchedule::STYPE_DIRECTDEBIT,
|
|
TQDate::currentDate(),
|
|
TQDate(),
|
|
true,
|
|
true);
|
|
|
|
sch.setLastPayment(TQDate::currentDate());
|
|
sch.recordPayment(TQDate::currentDate());
|
|
sch.setId("SCH0001");
|
|
|
|
MyMoneyTransaction t;
|
|
t.setPostDate(TQDate(2001,12,28));
|
|
t.setEntryDate(TQDate(2003,9,29));
|
|
t.setId("T000000000000000001");
|
|
t.setMemo("Wohnung:Miete");
|
|
t.setCommodity("EUR");
|
|
t.setValue("key", "value");
|
|
|
|
MyMoneySplit s;
|
|
s.setPayeeId("P000001");
|
|
s.setShares(MyMoneyMoney(96379, 100));
|
|
s.setValue(MyMoneyMoney(96379, 100));
|
|
s.setAccountId("A000076");
|
|
s.setBankID("SPID1");
|
|
s.setReconcileFlag(MyMoneySplit::Reconciled);
|
|
t.addSplit(s);
|
|
|
|
s.setPayeeId("P000001");
|
|
s.setShares(MyMoneyMoney(-96379, 100));
|
|
s.setValue(MyMoneyMoney(-96379, 100));
|
|
s.setAccountId("A000276");
|
|
s.setBankID("SPID2");
|
|
s.setReconcileFlag(MyMoneySplit::Cleared);
|
|
s.clearId();
|
|
t.addSplit(s);
|
|
|
|
sch.setTransaction(t);
|
|
|
|
TQDomDocument doc("TEST");
|
|
TQDomElement el = doc.createElement("SCHEDULE-CONTAINER");
|
|
doc.appendChild(el);
|
|
sch.writeXML(doc, el);
|
|
|
|
TQString ref = TQString(
|
|
"<!DOCTYPE TEST>\n"
|
|
"<SCHEDULE-CONTAINER>\n"
|
|
" <SCHEDULED_TX startDate=\"%1\" autoEnter=\"1\" weekendOption=\"2\" lastPayment=\"%2\" paymentType=\"1\" endDate=\"\" type=\"1\" id=\"SCH0001\" name=\"A Name\" fixed=\"1\" occurenceMultiplier=\"123\" occurence=\"4\" >\n"
|
|
" <PAYMENTS>\n"
|
|
" <PAYMENT date=\"%3\" />\n"
|
|
" </PAYMENTS>\n"
|
|
" <TRANSACTION postdate=\"2001-12-28\" memo=\"Wohnung:Miete\" id=\"\" commodity=\"EUR\" entrydate=\"2003-09-29\" >\n"
|
|
" <SPLITS>\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"96379/100\" action=\"\" bankid=\"\" number=\"\" reconcileflag=\"2\" memo=\"\" value=\"96379/100\" id=\"S0001\" account=\"A000076\" />\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"-96379/100\" action=\"\" bankid=\"\" number=\"\" reconcileflag=\"1\" memo=\"\" value=\"-96379/100\" id=\"S0002\" account=\"A000276\" />\n"
|
|
" </SPLITS>\n"
|
|
" <KEYVALUEPAIRS>\n"
|
|
" <PAIR key=\"key\" value=\"value\" />\n"
|
|
" </KEYVALUEPAIRS>\n"
|
|
" </TRANSACTION>\n"
|
|
" </SCHEDULED_TX>\n"
|
|
"</SCHEDULE-CONTAINER>\n"
|
|
).arg(TQDate::currentDate().toString(Qt::ISODate))
|
|
.arg(TQDate::currentDate().toString(Qt::ISODate))
|
|
.arg(TQDate::currentDate().toString(Qt::ISODate));
|
|
|
|
CPPUNIT_ASSERT(doc.toString() == ref);
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testReadXML() {
|
|
MyMoneySchedule sch;
|
|
|
|
TQString ref_ok1 = TQString(
|
|
"<!DOCTYPE TEST>\n"
|
|
"<SCHEDULE-CONTAINER>\n"
|
|
" <SCHEDULED_TX startDate=\"%1\" autoEnter=\"1\" weekendOption=\"2\" lastPayment=\"%2\" paymentType=\"1\" endDate=\"\" type=\"1\" id=\"SCH0002\" name=\"A Name\" fixed=\"1\" occurenceMultiplier=\"1\" occurence=\"4\" >\n"
|
|
" <PAYMENTS>\n"
|
|
" <PAYMENT date=\"%3\" />\n"
|
|
" </PAYMENTS>\n"
|
|
" <TRANSACTION postdate=\"2001-12-28\" memo=\"Wohnung:Miete\" id=\"\" commodity=\"EUR\" entrydate=\"2003-09-29\" >\n"
|
|
" <SPLITS>\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"96379/100\" action=\"\" bankid=\"SPID1\" number=\"\" reconcileflag=\"2\" memo=\"\" value=\"96379/100\" account=\"A000076\" />\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"-96379/100\" action=\"\" bankid=\"SPID2\" number=\"\" reconcileflag=\"1\" memo=\"\" value=\"-96379/100\" account=\"A000276\" />\n"
|
|
" </SPLITS>\n"
|
|
" <KEYVALUEPAIRS>\n"
|
|
" <PAIR key=\"key\" value=\"value\" />\n"
|
|
" </KEYVALUEPAIRS>\n"
|
|
" </TRANSACTION>\n"
|
|
" </SCHEDULED_TX>\n"
|
|
"</SCHEDULE-CONTAINER>\n"
|
|
).arg(TQDate::currentDate().toString(Qt::ISODate))
|
|
.arg(TQDate::currentDate().toString(Qt::ISODate))
|
|
.arg(TQDate::currentDate().toString(Qt::ISODate));
|
|
|
|
// diff to ref_ok1 is that we now have an empty entrydate
|
|
// in the transaction parameters
|
|
TQString ref_ok2 = TQString(
|
|
"<!DOCTYPE TEST>\n"
|
|
"<SCHEDULE-CONTAINER>\n"
|
|
" <SCHEDULED_TX startDate=\"%1\" autoEnter=\"1\" weekendOption=\"2\" lastPayment=\"%2\" paymentType=\"1\" endDate=\"\" type=\"1\" id=\"SCH0002\" name=\"A Name\" fixed=\"1\" occurenceMultiplier=\"1\" occurence=\"4\" >\n"
|
|
" <PAYMENTS>\n"
|
|
" <PAYMENT date=\"%3\" />\n"
|
|
" </PAYMENTS>\n"
|
|
" <TRANSACTION postdate=\"2001-12-28\" memo=\"Wohnung:Miete\" id=\"\" commodity=\"EUR\" entrydate=\"\" >\n"
|
|
" <SPLITS>\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"96379/100\" action=\"\" bankid=\"SPID1\" number=\"\" reconcileflag=\"2\" memo=\"\" value=\"96379/100\" account=\"A000076\" />\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"-96379/100\" action=\"\" bankid=\"SPID2\" number=\"\" reconcileflag=\"1\" memo=\"\" value=\"-96379/100\" account=\"A000276\" />\n"
|
|
" </SPLITS>\n"
|
|
" <KEYVALUEPAIRS>\n"
|
|
" <PAIR key=\"key\" value=\"value\" />\n"
|
|
" </KEYVALUEPAIRS>\n"
|
|
" </TRANSACTION>\n"
|
|
" </SCHEDULED_TX>\n"
|
|
"</SCHEDULE-CONTAINER>\n"
|
|
).arg(TQDate::currentDate().toString(Qt::ISODate))
|
|
.arg(TQDate::currentDate().toString(Qt::ISODate))
|
|
.arg(TQDate::currentDate().toString(Qt::ISODate));
|
|
|
|
TQString ref_false = TQString(
|
|
"<!DOCTYPE TEST>\n"
|
|
"<SCHEDULE-CONTAINER>\n"
|
|
" <SCHEDULE startDate=\"%1\" autoEnter=\"1\" weekendOption=\"2\" lastPayment=\"%2\" paymentType=\"1\" endDate=\"\" type=\"1\" id=\"SCH0002\" name=\"A Name\" fixed=\"1\" occurenceMultiplier=\"1\" occurence=\"4\" >\n"
|
|
" <PAYMENTS count=\"1\" >\n"
|
|
" <PAYMENT date=\"%3\" />\n"
|
|
" </PAYMENTS>\n"
|
|
" <TRANSACTION postdate=\"2001-12-28\" memo=\"Wohnung:Miete\" id=\"\" commodity=\"EUR\" entrydate=\"2003-09-29\" >\n"
|
|
" <SPLITS>\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"96379/100\" action=\"\" bankid=\"SPID1\" number=\"\" reconcileflag=\"2\" memo=\"\" value=\"96379/100\" account=\"A000076\" />\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"-96379/100\" action=\"\" bankid=\"SPID2\" number=\"\" reconcileflag=\"1\" memo=\"\" value=\"-96379/100\" account=\"A000276\" />\n"
|
|
" </SPLITS>\n"
|
|
" <KEYVALUEPAIRS>\n"
|
|
" <PAIR key=\"key\" value=\"value\" />\n"
|
|
" </KEYVALUEPAIRS>\n"
|
|
" </TRANSACTION>\n"
|
|
" </SCHEDULED_TX>\n"
|
|
"</SCHEDULE-CONTAINER>\n"
|
|
).arg(TQDate::currentDate().toString(Qt::ISODate))
|
|
.arg(TQDate::currentDate().toString(Qt::ISODate))
|
|
.arg(TQDate::currentDate().toString(Qt::ISODate));
|
|
|
|
TQDomDocument doc;
|
|
TQDomElement node;
|
|
doc.setContent(ref_false);
|
|
node = doc.documentElement().firstChild().toElement();
|
|
|
|
try {
|
|
sch = MyMoneySchedule(node);
|
|
CPPUNIT_FAIL("Missing expected exception");
|
|
} catch(MyMoneyException *e) {
|
|
delete e;
|
|
}
|
|
|
|
doc.setContent(ref_ok1);
|
|
node = doc.documentElement().firstChild().toElement();
|
|
|
|
|
|
try {
|
|
sch = MyMoneySchedule(node);
|
|
CPPUNIT_ASSERT(sch.id() == "SCH0002");
|
|
CPPUNIT_ASSERT(sch.nextDueDate() == TQDate::currentDate().addDays(7));
|
|
CPPUNIT_ASSERT(sch.startDate() == TQDate::currentDate());
|
|
CPPUNIT_ASSERT(sch.endDate() == TQDate());
|
|
CPPUNIT_ASSERT(sch.autoEnter() == true);
|
|
CPPUNIT_ASSERT(sch.isFixed() == true);
|
|
CPPUNIT_ASSERT(sch.weekendOption() == MyMoneySchedule::MoveNothing);
|
|
CPPUNIT_ASSERT(sch.lastPayment() == TQDate::currentDate());
|
|
CPPUNIT_ASSERT(sch.paymentType() == MyMoneySchedule::STYPE_DIRECTDEBIT);
|
|
CPPUNIT_ASSERT(sch.type() == MyMoneySchedule::TYPE_BILL);
|
|
CPPUNIT_ASSERT(sch.name() == "A Name");
|
|
CPPUNIT_ASSERT(sch.occurence() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(sch.occurenceMultiplier() == 1);
|
|
CPPUNIT_ASSERT(sch.nextDueDate() == sch.lastPayment().addDays(7));
|
|
CPPUNIT_ASSERT(sch.recordedPayments().count() == 1);
|
|
CPPUNIT_ASSERT(sch.recordedPayments()[0] == TQDate::currentDate());
|
|
} catch(MyMoneyException *e) {
|
|
delete e;
|
|
CPPUNIT_FAIL("Unexpected exception");
|
|
}
|
|
|
|
doc.setContent(ref_ok2);
|
|
node = doc.documentElement().firstChild().toElement();
|
|
|
|
|
|
try {
|
|
sch = MyMoneySchedule(node);
|
|
CPPUNIT_ASSERT(sch.id() == "SCH0002");
|
|
CPPUNIT_ASSERT(sch.nextDueDate() == TQDate::currentDate().addDays(7));
|
|
CPPUNIT_ASSERT(sch.startDate() == TQDate::currentDate());
|
|
CPPUNIT_ASSERT(sch.endDate() == TQDate());
|
|
CPPUNIT_ASSERT(sch.autoEnter() == true);
|
|
CPPUNIT_ASSERT(sch.isFixed() == true);
|
|
CPPUNIT_ASSERT(sch.weekendOption() == MyMoneySchedule::MoveNothing);
|
|
CPPUNIT_ASSERT(sch.lastPayment() == TQDate::currentDate());
|
|
CPPUNIT_ASSERT(sch.paymentType() == MyMoneySchedule::STYPE_DIRECTDEBIT);
|
|
CPPUNIT_ASSERT(sch.type() == MyMoneySchedule::TYPE_BILL);
|
|
CPPUNIT_ASSERT(sch.name() == "A Name");
|
|
CPPUNIT_ASSERT(sch.occurence() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(sch.occurenceMultiplier() == 1);
|
|
CPPUNIT_ASSERT(sch.nextDueDate() == sch.lastPayment().addDays(7));
|
|
CPPUNIT_ASSERT(sch.recordedPayments().count() == 1);
|
|
CPPUNIT_ASSERT(sch.recordedPayments()[0] == TQDate::currentDate());
|
|
} catch(MyMoneyException *e) {
|
|
delete e;
|
|
CPPUNIT_FAIL("Unexpected exception");
|
|
}
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testHasReferenceTo()
|
|
{
|
|
MyMoneySchedule sch;
|
|
TQString ref_ok = TQString(
|
|
"<!DOCTYPE TEST>\n"
|
|
"<SCHEDULE-CONTAINER>\n"
|
|
" <SCHEDULED_TX startDate=\"%1\" autoEnter=\"1\" weekendOption=\"2\" lastPayment=\"%2\" paymentType=\"1\" endDate=\"\" type=\"1\" id=\"SCH0002\" name=\"A Name\" fixed=\"1\" occurenceMultiplier=\"1\" occurence=\"4\" >\n"
|
|
" <PAYMENTS>\n"
|
|
" <PAYMENT date=\"%3\" />\n"
|
|
" </PAYMENTS>\n"
|
|
" <TRANSACTION postdate=\"2001-12-28\" memo=\"Wohnung:Miete\" id=\"\" commodity=\"EUR\" entrydate=\"2003-09-29\" >\n"
|
|
" <SPLITS>\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"96379/100\" action=\"\" number=\"\" reconcileflag=\"2\" memo=\"\" value=\"96379/100\" account=\"A000076\" />\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"-96379/100\" action=\"\" number=\"\" reconcileflag=\"1\" memo=\"\" value=\"-96379/100\" account=\"A000276\" />\n"
|
|
" </SPLITS>\n"
|
|
" <KEYVALUEPAIRS>\n"
|
|
" <PAIR key=\"key\" value=\"value\" />\n"
|
|
" </KEYVALUEPAIRS>\n"
|
|
" </TRANSACTION>\n"
|
|
" </SCHEDULED_TX>\n"
|
|
"</SCHEDULE-CONTAINER>\n"
|
|
).arg(TQDate::currentDate().toString(Qt::ISODate))
|
|
.arg(TQDate::currentDate().toString(Qt::ISODate))
|
|
.arg(TQDate::currentDate().toString(Qt::ISODate));
|
|
|
|
TQDomDocument doc;
|
|
TQDomElement node;
|
|
doc.setContent(ref_ok);
|
|
node = doc.documentElement().firstChild().toElement();
|
|
|
|
try {
|
|
sch = MyMoneySchedule(node);
|
|
|
|
} catch(MyMoneyException *e) {
|
|
delete e;
|
|
CPPUNIT_FAIL("Unexpected exception");
|
|
}
|
|
|
|
CPPUNIT_ASSERT(sch.hasReferenceTo("P000001") == true);
|
|
CPPUNIT_ASSERT(sch.hasReferenceTo("A000276") == true);
|
|
CPPUNIT_ASSERT(sch.hasReferenceTo("A000076") == true);
|
|
CPPUNIT_ASSERT(sch.hasReferenceTo("EUR") == true);
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testAdjustedNextDueDate()
|
|
{
|
|
MyMoneySchedule s;
|
|
|
|
TQDate dueDate(2007,9,3); // start on a monday
|
|
for(int i = 0; i < 7; ++i) {
|
|
s.setNextDueDate(dueDate);
|
|
s.setWeekendOption(MyMoneySchedule::MoveNothing);
|
|
CPPUNIT_ASSERT(s.adjustedNextDueDate() == dueDate);
|
|
|
|
s.setWeekendOption(MyMoneySchedule::MoveFriday);
|
|
switch(i) {
|
|
case 5: // saturday
|
|
case 6: // sunday
|
|
break;
|
|
CPPUNIT_ASSERT(s.adjustedNextDueDate() == TQDate(2007,9,7));
|
|
default:
|
|
CPPUNIT_ASSERT(s.adjustedNextDueDate() == dueDate);
|
|
break;
|
|
}
|
|
|
|
s.setWeekendOption(MyMoneySchedule::MoveMonday);
|
|
switch(i) {
|
|
case 5: // saturday
|
|
case 6: // sunday
|
|
CPPUNIT_ASSERT(s.adjustedNextDueDate() == TQDate(2007,9,10));
|
|
break;
|
|
default:
|
|
CPPUNIT_ASSERT(s.adjustedNextDueDate() == dueDate);
|
|
break;
|
|
}
|
|
dueDate = dueDate.addDays(1);
|
|
}
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testModifyNextDueDate(void)
|
|
{
|
|
MyMoneySchedule s;
|
|
s.setStartDate(TQDate(2007, 1, 1));
|
|
s.setOccurence(MyMoneySchedule::OCCUR_MONTHLY);
|
|
s.setNextDueDate(s.startDate().addMonths(1));
|
|
s.setLastPayment(s.startDate());
|
|
|
|
TQValueList<TQDate> dates;
|
|
dates = s.paymentDates(TQDate(2007,2,1), TQDate(2007,2,1));
|
|
CPPUNIT_ASSERT(s.nextDueDate() == TQDate(2007,2,1));
|
|
CPPUNIT_ASSERT(dates.count() == 1);
|
|
CPPUNIT_ASSERT(dates[0] == TQDate(2007,2,1));
|
|
|
|
s.setNextDueDate(TQDate(2007,1,24));
|
|
|
|
dates = s.paymentDates(TQDate(2007,2,1), TQDate(2007,2,1));
|
|
CPPUNIT_ASSERT(s.nextDueDate() == TQDate(2007,1,24));
|
|
CPPUNIT_ASSERT(dates.count() == 0);
|
|
|
|
dates = s.paymentDates(TQDate(2007,1,24), TQDate(2007,1,24));
|
|
CPPUNIT_ASSERT(dates.count() == 1);
|
|
|
|
dates = s.paymentDates(TQDate(2007,1,24), TQDate(2007,2,24));
|
|
CPPUNIT_ASSERT(dates.count() == 2);
|
|
CPPUNIT_ASSERT(dates[0] == TQDate(2007,1,24));
|
|
CPPUNIT_ASSERT(dates[1] == TQDate(2007,2,24));
|
|
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testDaysBetweenEvents()
|
|
{
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_ONCE) == 0);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_DAILY) == 1);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_WEEKLY) == 7);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_EVERYOTHERWEEK) == 14);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_FORTNIGHTLY) == 14);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_EVERYHALFMONTH) == 15);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_EVERYTHREEWEEKS) == 21);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_EVERYFOURWEEKS) == 28);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS) == 30);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_MONTHLY) == 30);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS) == 56);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_EVERYOTHERMONTH) == 60);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_EVERYTHREEMONTHS) == 90);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_QUARTERLY) == 90);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_EVERYFOURMONTHS) == 120);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_TWICEYEARLY) == 180);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_YEARLY) == 360);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::daysBetweenEvents(MyMoneySchedule::OCCUR_EVERYOTHERYEAR) == 0);
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testStringToOccurence()
|
|
{
|
|
// For each occurenceE:
|
|
// test MyMoneySchedule::stringToOccurence(TQString) == occurence
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Once")) == MyMoneySchedule::OCCUR_ONCE );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Daily")) == MyMoneySchedule::OCCUR_DAILY );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Weekly")) == MyMoneySchedule::OCCUR_WEEKLY );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Every other week")) == MyMoneySchedule::OCCUR_EVERYOTHERWEEK );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Fortnightly")) == MyMoneySchedule::OCCUR_FORTNIGHTLY );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Every half month")) == MyMoneySchedule::OCCUR_EVERYHALFMONTH );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Every four weeks")) == MyMoneySchedule::OCCUR_EVERYFOURWEEKS );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Monthly")) == MyMoneySchedule::OCCUR_MONTHLY );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Every eight weeks")) == MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Every two months")) == MyMoneySchedule::OCCUR_EVERYOTHERMONTH );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Every three months")) == MyMoneySchedule::OCCUR_EVERYTHREEMONTHS );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Quarterly")) == MyMoneySchedule::OCCUR_QUARTERLY );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Every four months")) == MyMoneySchedule::OCCUR_EVERYFOURMONTHS );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Twice yearly")) == MyMoneySchedule::OCCUR_TWICEYEARLY );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Yearly")) == MyMoneySchedule::OCCUR_YEARLY );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::stringToOccurence(i18n("Every other year")) == MyMoneySchedule::OCCUR_EVERYOTHERYEAR );
|
|
// test occurence == stringToOccurence(i18n(occurenceToString(occurence)))
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_ONCE == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_ONCE).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_DAILY == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_DAILY).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_WEEKLY == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_WEEKLY).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_EVERYOTHERWEEK == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYOTHERWEEK).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_FORTNIGHTLY == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_FORTNIGHTLY).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_EVERYHALFMONTH == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYHALFMONTH).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_EVERYTHREEWEEKS == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYTHREEWEEKS).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_EVERYTHREEWEEKS == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYTHREEWEEKS).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_EVERYFOURWEEKS == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYFOURWEEKS).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_MONTHLY == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_MONTHLY).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_EVERYOTHERMONTH == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYOTHERMONTH).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_EVERYTHREEMONTHS == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYTHREEMONTHS).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_QUARTERLY == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_QUARTERLY).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_EVERYFOURMONTHS == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYFOURMONTHS).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_TWICEYEARLY == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_TWICEYEARLY).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_YEARLY == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_YEARLY).utf8())) );
|
|
CPPUNIT_ASSERT( MyMoneySchedule::OCCUR_EVERYOTHERYEAR == MyMoneySchedule::stringToOccurence(i18n(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYOTHERYEAR).utf8())) );
|
|
}
|
|
void MyMoneyScheduleTest::testEventsPerYear()
|
|
{
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_ONCE) == 0);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_DAILY) == 365);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_WEEKLY) == 52);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_EVERYOTHERWEEK) == 26);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_FORTNIGHTLY) == 26);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_EVERYHALFMONTH) == 24);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_EVERYTHREEWEEKS) == 17);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_EVERYFOURWEEKS) == 13);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS) == 12);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_MONTHLY) == 12);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS) == 6);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_EVERYOTHERMONTH) == 6);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_EVERYTHREEMONTHS) == 4);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_QUARTERLY) == 4);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_EVERYFOURMONTHS) == 3);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_TWICEYEARLY) == 2);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_YEARLY) == 1);
|
|
CPPUNIT_ASSERT(MyMoneySchedule::eventsPerYear(MyMoneySchedule::OCCUR_EVERYOTHERYEAR) == 0);
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testOccurenceToString()
|
|
{
|
|
// For each occurenceE test MyMoneySchedule::occurenceToString(occurenceE)
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_ONCE) == "Once" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_DAILY) == "Daily" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_WEEKLY) == "Weekly" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYOTHERWEEK) == "Every other week" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_FORTNIGHTLY) == "Fortnightly" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYHALFMONTH) == "Every half month" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYTHREEWEEKS) == "Every three weeks" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYFOURWEEKS) == "Every four weeks" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS) == "Every thirty days" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_MONTHLY) == "Monthly" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS) == "Every eight weeks" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYOTHERMONTH) == "Every two months" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYTHREEMONTHS) == "Every three months" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_QUARTERLY) == "Quarterly" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYFOURMONTHS) == "Every four months" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_TWICEYEARLY) == "Twice yearly" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_YEARLY) == "Yearly" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYOTHERYEAR) == "Every other year" );
|
|
// For each occurenceE set occurence and compare occurenceToString() with oTS(occurence())
|
|
MyMoneySchedule s;
|
|
s.setStartDate(TQDate(2007, 1, 1));
|
|
s.setNextDueDate(s.startDate());
|
|
s.setLastPayment(s.startDate());
|
|
s.setOccurence(MyMoneySchedule::OCCUR_ONCE); CPPUNIT_ASSERT(s.occurenceToString() == "Once" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_DAILY); CPPUNIT_ASSERT(s.occurenceToString() == "Daily" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_WEEKLY); CPPUNIT_ASSERT(s.occurenceToString() == "Weekly" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYOTHERWEEK); CPPUNIT_ASSERT(s.occurenceToString() == "Every other week" );
|
|
// Fortnightly no longer used: Every other week used instead
|
|
s.setOccurence(MyMoneySchedule::OCCUR_FORTNIGHTLY); CPPUNIT_ASSERT(s.occurenceToString() == "Every other week" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYHALFMONTH); CPPUNIT_ASSERT(s.occurenceToString() == "Every half month" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYTHREEWEEKS); CPPUNIT_ASSERT(s.occurenceToString() == "Every three weeks" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYFOURWEEKS); CPPUNIT_ASSERT(s.occurenceToString() == "Every four weeks" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS); CPPUNIT_ASSERT(s.occurenceToString() == "Every thirty days" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_MONTHLY); CPPUNIT_ASSERT(s.occurenceToString() == "Monthly" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS); CPPUNIT_ASSERT(s.occurenceToString() == "Every eight weeks" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYOTHERMONTH); CPPUNIT_ASSERT(s.occurenceToString() == "Every two months" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYTHREEMONTHS); CPPUNIT_ASSERT(s.occurenceToString() == "Every three months" );
|
|
// Quarterly no longer used. Every three months used instead
|
|
s.setOccurence(MyMoneySchedule::OCCUR_QUARTERLY); CPPUNIT_ASSERT(s.occurenceToString() == "Every three months" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYFOURMONTHS); CPPUNIT_ASSERT(s.occurenceToString() == "Every four months" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_TWICEYEARLY); CPPUNIT_ASSERT(s.occurenceToString() == "Twice yearly" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_YEARLY); CPPUNIT_ASSERT(s.occurenceToString() == "Yearly" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYOTHERYEAR); CPPUNIT_ASSERT(s.occurenceToString() == "Every other year" );
|
|
// Test occurenceToString(mult,occ)
|
|
// Test all pairs equivalent to simple occurences: should return the same as occurenceToString(simpleOcc)
|
|
// TODO replace string with (mult,occ) call.
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_ONCE) == MyMoneySchedule::occurenceToString(1,MyMoneySchedule::OCCUR_ONCE) );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_DAILY) == MyMoneySchedule::occurenceToString(1,MyMoneySchedule::OCCUR_DAILY) );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_WEEKLY) == MyMoneySchedule::occurenceToString(1,MyMoneySchedule::OCCUR_WEEKLY) );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYOTHERWEEK) == MyMoneySchedule::occurenceToString(2,MyMoneySchedule::OCCUR_WEEKLY) );
|
|
// OCCUR_FORTNIGHTLY will no longer be used: only Every Other Week
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYHALFMONTH) == MyMoneySchedule::occurenceToString(1,MyMoneySchedule::OCCUR_EVERYHALFMONTH) );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYTHREEWEEKS) == MyMoneySchedule::occurenceToString(3,MyMoneySchedule::OCCUR_WEEKLY) );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYFOURWEEKS) == MyMoneySchedule::occurenceToString(4,MyMoneySchedule::OCCUR_WEEKLY) );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_MONTHLY) == MyMoneySchedule::occurenceToString(1,MyMoneySchedule::OCCUR_MONTHLY) );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS) == MyMoneySchedule::occurenceToString(8,MyMoneySchedule::OCCUR_WEEKLY) );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYOTHERMONTH) == MyMoneySchedule::occurenceToString(2,MyMoneySchedule::OCCUR_MONTHLY) );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYTHREEMONTHS) == MyMoneySchedule::occurenceToString(3,MyMoneySchedule::OCCUR_MONTHLY) );
|
|
// OCCUR_QUARTERLY will no longer be used: only Every Three Months
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYFOURMONTHS) == MyMoneySchedule::occurenceToString(4,MyMoneySchedule::OCCUR_MONTHLY) );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_TWICEYEARLY) == MyMoneySchedule::occurenceToString(6,MyMoneySchedule::OCCUR_MONTHLY) );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_YEARLY) == MyMoneySchedule::occurenceToString(1,MyMoneySchedule::OCCUR_YEARLY) );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(MyMoneySchedule::OCCUR_EVERYOTHERYEAR) == MyMoneySchedule::occurenceToString(2,MyMoneySchedule::OCCUR_YEARLY) );
|
|
// Test additional calls with other mult,occ
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(2,MyMoneySchedule::OCCUR_ONCE) == "2 times" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(2,MyMoneySchedule::OCCUR_DAILY) == "Every 2 days" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(5,MyMoneySchedule::OCCUR_WEEKLY) == "Every 5 weeks" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(2,MyMoneySchedule::OCCUR_EVERYHALFMONTH) == "Every 2 half months" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(5,MyMoneySchedule::OCCUR_MONTHLY) == "Every 5 months" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(3,MyMoneySchedule::OCCUR_YEARLY) == "Every 3 years" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(37,MyMoneySchedule::OCCUR_ONCE) == "37 times" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(43,MyMoneySchedule::OCCUR_DAILY) == "Every 43 days" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(61,MyMoneySchedule::OCCUR_WEEKLY) == "Every 61 weeks" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(73,MyMoneySchedule::OCCUR_EVERYHALFMONTH) == "Every 73 half months" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(83,MyMoneySchedule::OCCUR_MONTHLY) == "Every 83 months" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurenceToString(89,MyMoneySchedule::OCCUR_YEARLY) == "Every 89 years" );
|
|
// Test instance-level occurenceToString method is using occurencePeriod and multiplier
|
|
// For each base occurence set occurencePeriod and multiplier
|
|
s.setOccurencePeriod(MyMoneySchedule::OCCUR_ONCE); s.setOccurenceMultiplier(1);
|
|
s.setOccurence(MyMoneySchedule::OCCUR_ONCE);
|
|
s.setOccurenceMultiplier(1); CPPUNIT_ASSERT(s.occurenceToString() == "Once" );
|
|
s.setOccurenceMultiplier(2); CPPUNIT_ASSERT(s.occurenceToString() == "2 times" );
|
|
s.setOccurenceMultiplier(3); CPPUNIT_ASSERT(s.occurenceToString() == "3 times" );
|
|
s.setOccurencePeriod(MyMoneySchedule::OCCUR_DAILY);
|
|
s.setOccurenceMultiplier(1); CPPUNIT_ASSERT(s.occurenceToString() == "Daily" );
|
|
s.setOccurenceMultiplier(30); CPPUNIT_ASSERT(s.occurenceToString() == "Every thirty days" );
|
|
s.setOccurenceMultiplier(3); CPPUNIT_ASSERT(s.occurenceToString() == "Every 3 days" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurenceToString() == "Weekly" );
|
|
s.setOccurenceMultiplier(2); CPPUNIT_ASSERT(s.occurenceToString() == "Every other week" );
|
|
s.setOccurenceMultiplier(3); CPPUNIT_ASSERT(s.occurenceToString() == "Every three weeks" );
|
|
s.setOccurenceMultiplier(4); CPPUNIT_ASSERT(s.occurenceToString() == "Every four weeks" );
|
|
s.setOccurenceMultiplier(5); CPPUNIT_ASSERT(s.occurenceToString() == "Every 5 weeks" );
|
|
s.setOccurenceMultiplier(7); CPPUNIT_ASSERT(s.occurenceToString() == "Every 7 weeks" );
|
|
s.setOccurenceMultiplier(8); CPPUNIT_ASSERT(s.occurenceToString() == "Every eight weeks" );
|
|
s.setOccurenceMultiplier(9); CPPUNIT_ASSERT(s.occurenceToString() == "Every 9 weeks" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYHALFMONTH);
|
|
s.setOccurenceMultiplier(1); CPPUNIT_ASSERT(s.occurenceToString() == "Every half month" );
|
|
s.setOccurenceMultiplier(2); CPPUNIT_ASSERT(s.occurenceToString() == "Every 2 half months" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_MONTHLY);
|
|
s.setOccurenceMultiplier(1); CPPUNIT_ASSERT(s.occurenceToString() == "Monthly" );
|
|
s.setOccurenceMultiplier(2); CPPUNIT_ASSERT(s.occurenceToString() == "Every two months" );
|
|
s.setOccurenceMultiplier(3); CPPUNIT_ASSERT(s.occurenceToString() == "Every three months" );
|
|
s.setOccurenceMultiplier(4); CPPUNIT_ASSERT(s.occurenceToString() == "Every four months" );
|
|
s.setOccurenceMultiplier(5); CPPUNIT_ASSERT(s.occurenceToString() == "Every 5 months" );
|
|
s.setOccurenceMultiplier(6); CPPUNIT_ASSERT(s.occurenceToString() == "Twice yearly" );
|
|
s.setOccurenceMultiplier(7); CPPUNIT_ASSERT(s.occurenceToString() == "Every 7 months" );
|
|
s.setOccurence(MyMoneySchedule::OCCUR_YEARLY);
|
|
s.setOccurenceMultiplier(1); CPPUNIT_ASSERT(s.occurenceToString() == "Yearly" );
|
|
s.setOccurenceMultiplier(2); CPPUNIT_ASSERT(s.occurenceToString() == "Every other year" );
|
|
s.setOccurenceMultiplier(3); CPPUNIT_ASSERT(s.occurenceToString() == "Every 3 years" );
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testOccurencePeriodToString()
|
|
{
|
|
// For each occurenceE test MyMoneySchedule::occurencePeriodToString(occurenceE)
|
|
// Base occurences are translated
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_ONCE) == "Once" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_DAILY) == "Day" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_WEEKLY) == "Week" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_EVERYHALFMONTH) == "Half-month" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_MONTHLY) == "Month" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_YEARLY) == "Year" );
|
|
// All others are not translated so return Any
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_EVERYOTHERWEEK) == "Any" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_FORTNIGHTLY) == "Any" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_EVERYTHREEWEEKS) == "Any" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_EVERYFOURWEEKS) == "Any" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS) == "Any" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS) == "Any" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_EVERYOTHERMONTH) == "Any" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_EVERYTHREEMONTHS) == "Any" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_QUARTERLY) == "Any" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_EVERYFOURMONTHS) == "Any" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_TWICEYEARLY) == "Any" );
|
|
CPPUNIT_ASSERT(MyMoneySchedule::occurencePeriodToString(MyMoneySchedule::OCCUR_EVERYOTHERYEAR) == "Any" );
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testOccurencePeriod()
|
|
{
|
|
// Each occurence:
|
|
// Set occurence using setOccurencePeriod
|
|
// occurencePeriod should match what we set
|
|
// occurence depends on multiplier
|
|
// TODO:
|
|
// Once occurence() and setOccurence() are converting between compound and simple occurences
|
|
// we need to change the occurence() check and add an occurenceMultiplier() check
|
|
MyMoneySchedule s;
|
|
s.setStartDate(TQDate(2007, 1, 1));
|
|
s.setNextDueDate(s.startDate());
|
|
s.setLastPayment(s.startDate());
|
|
// Set all base occurences
|
|
s.setOccurencePeriod(MyMoneySchedule::OCCUR_ONCE);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_ONCE );
|
|
s.setOccurenceMultiplier(1);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_ONCE );
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_ONCE );
|
|
s.setOccurenceMultiplier(2);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 2);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_ONCE );
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_ONCE );
|
|
|
|
s.setOccurencePeriod(MyMoneySchedule::OCCUR_DAILY);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_DAILY);
|
|
s.setOccurenceMultiplier(1);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_DAILY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_DAILY);
|
|
s.setOccurenceMultiplier(30);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 30);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_DAILY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS);
|
|
s.setOccurenceMultiplier(2);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 2);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_DAILY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_DAILY);
|
|
|
|
s.setOccurencePeriod(MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
s.setOccurenceMultiplier(1);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
s.setOccurenceMultiplier(2);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 2);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYOTHERWEEK);
|
|
s.setOccurenceMultiplier(3);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 3);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYTHREEWEEKS);
|
|
s.setOccurenceMultiplier(4);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 4);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYFOURWEEKS);
|
|
s.setOccurenceMultiplier(5);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 5);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
s.setOccurenceMultiplier(8);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 8);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS);
|
|
|
|
s.setOccurencePeriod(MyMoneySchedule::OCCUR_EVERYHALFMONTH);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_EVERYHALFMONTH);
|
|
s.setOccurenceMultiplier(1);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_EVERYHALFMONTH);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYHALFMONTH);
|
|
s.setOccurenceMultiplier(2);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 2);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_EVERYHALFMONTH);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYHALFMONTH);
|
|
|
|
s.setOccurencePeriod(MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
s.setOccurenceMultiplier(1);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
s.setOccurenceMultiplier(2);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 2);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYOTHERMONTH);
|
|
s.setOccurenceMultiplier(3);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 3);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYTHREEMONTHS);
|
|
s.setOccurenceMultiplier(4);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 4);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYFOURMONTHS);
|
|
s.setOccurenceMultiplier(5);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 5);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
s.setOccurenceMultiplier(6);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 6);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_TWICEYEARLY);
|
|
|
|
s.setOccurencePeriod(MyMoneySchedule::OCCUR_YEARLY);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_YEARLY);
|
|
s.setOccurenceMultiplier(1);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_YEARLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_YEARLY);
|
|
s.setOccurenceMultiplier(2);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 2);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_YEARLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYOTHERYEAR);
|
|
s.setOccurenceMultiplier(3);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 3);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_YEARLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_YEARLY);
|
|
|
|
// Set occurence: check occurence, Period and Multiplier
|
|
s.setOccurence(MyMoneySchedule::OCCUR_ONCE);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_ONCE);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_ONCE);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
|
|
s.setOccurence(MyMoneySchedule::OCCUR_DAILY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_DAILY);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_DAILY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_DAILY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 30);
|
|
|
|
s.setOccurence(MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYOTHERWEEK);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYOTHERWEEK);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 2);
|
|
// Fortnightly no longer used: Every other week used instead
|
|
s.setOccurence(MyMoneySchedule::OCCUR_FORTNIGHTLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYOTHERWEEK);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 2);
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYTHREEWEEKS);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYTHREEWEEKS);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 3);
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYFOURWEEKS);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYFOURWEEKS);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 4);
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_WEEKLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 8);
|
|
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYHALFMONTH);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYHALFMONTH);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_EVERYHALFMONTH);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
|
|
s.setOccurence(MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYOTHERMONTH);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYOTHERMONTH);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 2);
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYTHREEMONTHS);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYTHREEMONTHS);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 3);
|
|
// Quarterly no longer used. Every three months used instead
|
|
s.setOccurence(MyMoneySchedule::OCCUR_QUARTERLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYTHREEMONTHS);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 3);
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYFOURMONTHS);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYFOURMONTHS);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 4);
|
|
s.setOccurence(MyMoneySchedule::OCCUR_TWICEYEARLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_TWICEYEARLY);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 6);
|
|
|
|
s.setOccurence(MyMoneySchedule::OCCUR_YEARLY);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_YEARLY);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_YEARLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 1);
|
|
s.setOccurence(MyMoneySchedule::OCCUR_EVERYOTHERYEAR);
|
|
CPPUNIT_ASSERT(s.occurence() == MyMoneySchedule::OCCUR_EVERYOTHERYEAR);
|
|
CPPUNIT_ASSERT(s.occurencePeriod() == MyMoneySchedule::OCCUR_YEARLY);
|
|
CPPUNIT_ASSERT(s.occurenceMultiplier() == 2);
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testSimpleToFromCompoundOccurence()
|
|
{
|
|
// Conversion between Simple and Compound occurences
|
|
// Each simple occurence to compound occurence
|
|
MyMoneySchedule::occurenceE occ;
|
|
int mult;
|
|
occ = MyMoneySchedule::OCCUR_ONCE; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_ONCE && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_DAILY; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_DAILY && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_WEEKLY; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_WEEKLY && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_EVERYOTHERWEEK; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_WEEKLY && mult == 2 );
|
|
occ = MyMoneySchedule::OCCUR_FORTNIGHTLY; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_WEEKLY && mult == 2 );
|
|
occ = MyMoneySchedule::OCCUR_EVERYHALFMONTH; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_EVERYHALFMONTH && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_EVERYTHREEWEEKS; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_WEEKLY && mult == 3 );
|
|
occ = MyMoneySchedule::OCCUR_EVERYFOURWEEKS; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_WEEKLY && mult == 4 );
|
|
occ = MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_DAILY && mult == 30 );
|
|
occ = MyMoneySchedule::OCCUR_MONTHLY; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_MONTHLY && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_WEEKLY && mult == 8 );
|
|
occ = MyMoneySchedule::OCCUR_EVERYOTHERMONTH; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_MONTHLY && mult == 2 );
|
|
occ = MyMoneySchedule::OCCUR_EVERYTHREEMONTHS; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_MONTHLY && mult == 3 );
|
|
occ = MyMoneySchedule::OCCUR_QUARTERLY; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_MONTHLY && mult == 3 );
|
|
occ = MyMoneySchedule::OCCUR_EVERYFOURMONTHS; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_MONTHLY && mult == 4 );
|
|
occ = MyMoneySchedule::OCCUR_TWICEYEARLY; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_MONTHLY && mult == 6 );
|
|
occ = MyMoneySchedule::OCCUR_YEARLY; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_YEARLY && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_EVERYOTHERYEAR; mult = 1;
|
|
MyMoneySchedule::simpleToCompoundOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_YEARLY && mult == 2 );
|
|
// Compound to Simple Occurences
|
|
occ = MyMoneySchedule::OCCUR_ONCE; mult = 1;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_ONCE && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_DAILY; mult = 1;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_DAILY && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_WEEKLY; mult = 1;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_WEEKLY && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_WEEKLY; mult = 2;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_EVERYOTHERWEEK && mult == 1 );
|
|
// MyMoneySchedule::OCCUR_FORTNIGHTLY not converted back
|
|
occ = MyMoneySchedule::OCCUR_EVERYHALFMONTH; mult = 1;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_EVERYHALFMONTH && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_WEEKLY; mult = 3;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_EVERYTHREEWEEKS && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_WEEKLY ; mult = 4;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_EVERYFOURWEEKS && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_DAILY; mult = 30;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_EVERYTHIRTYDAYS && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_MONTHLY; mult = 1;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_MONTHLY && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_WEEKLY; mult = 8;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_EVERYEIGHTWEEKS && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_MONTHLY; mult = 2;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_EVERYOTHERMONTH && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_MONTHLY; mult = 3;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_EVERYTHREEMONTHS && mult == 1 );
|
|
// MyMoneySchedule::OCCUR_QUARTERLY not converted back
|
|
occ = MyMoneySchedule::OCCUR_MONTHLY; mult = 4;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_EVERYFOURMONTHS && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_MONTHLY; mult = 6;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_TWICEYEARLY && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_YEARLY; mult = 1;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_YEARLY && mult == 1 );
|
|
occ = MyMoneySchedule::OCCUR_YEARLY; mult = 2;
|
|
MyMoneySchedule::compoundToSimpleOccurence(mult, occ);
|
|
CPPUNIT_ASSERT( occ == MyMoneySchedule::OCCUR_EVERYOTHERYEAR && mult == 1 );
|
|
}
|
|
|
|
void MyMoneyScheduleTest::testPaidEarlyOneTime()
|
|
{
|
|
// this tries to figure out what's wrong with
|
|
// https://bugs.kde.org/show_bug.cgi?id=231029
|
|
|
|
MyMoneySchedule sch;
|
|
TQDate paymentInFuture = TQDate::currentDate().addDays(7);
|
|
|
|
TQString ref_ok = TQString(
|
|
"<!DOCTYPE TEST>\n"
|
|
"<SCHEDULE-CONTAINER>\n"
|
|
" <SCHEDULED_TX startDate=\"%1\" autoEnter=\"0\" weekendOption=\"1\" lastPayment=\"%2\" paymentType=\"2\" endDate=\"%3\" type=\"4\" id=\"SCH0042\" name=\"A Name\" fixed=\"1\" occurenceMultiplier=\"1\" occurence=\"32\" >\n"
|
|
" <PAYMENTS/>\n"
|
|
" <TRANSACTION postdate=\"\" memo=\"\" id=\"\" commodity=\"GBP\" entrydate=\"\" >\n"
|
|
" <SPLITS>\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"96379/100\" action=\"Transfer\" number=\"\" reconcileflag=\"2\" memo=\"\" value=\"96379/100\" id=\"S0001\" account=\"A000076\" />\n"
|
|
" <SPLIT payee=\"P000001\" reconciledate=\"\" shares=\"-96379/100\" action=\"Transfer\" number=\"\" reconcileflag=\"2\" memo=\"\" value=\"-96379/100\" id=\"S0002\" account=\"A000276\" />\n"
|
|
" </SPLITS>\n"
|
|
" </TRANSACTION>\n"
|
|
" </SCHEDULED_TX>\n"
|
|
"</SCHEDULE-CONTAINER>\n"
|
|
).arg(paymentInFuture.toString(Qt::ISODate))
|
|
.arg(paymentInFuture.toString(Qt::ISODate))
|
|
.arg(paymentInFuture.toString(Qt::ISODate));
|
|
|
|
TQDomDocument doc;
|
|
TQDomElement node;
|
|
doc.setContent(ref_ok);
|
|
node = doc.documentElement().firstChild().toElement();
|
|
|
|
try {
|
|
sch = MyMoneySchedule(node);
|
|
CPPUNIT_ASSERT(sch.isFinished() == true);
|
|
CPPUNIT_ASSERT(sch.occurencePeriod() == MyMoneySchedule::OCCUR_MONTHLY);
|
|
CPPUNIT_ASSERT(sch.paymentDates(TQDate::currentDate(), TQDate::currentDate().addDays(21)).count() == 0);
|
|
} catch (MyMoneyException *e) {
|
|
delete e;
|
|
CPPUNIT_FAIL("Unexpected exception");
|
|
}
|
|
|
|
}
|