summaryrefslogtreecommitdiffstats
path: root/kmymoney2/converter/convertertest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kmymoney2/converter/convertertest.cpp')
-rw-r--r--kmymoney2/converter/convertertest.cpp211
1 files changed, 211 insertions, 0 deletions
diff --git a/kmymoney2/converter/convertertest.cpp b/kmymoney2/converter/convertertest.cpp
new file mode 100644
index 0000000..aef63d9
--- /dev/null
+++ b/kmymoney2/converter/convertertest.cpp
@@ -0,0 +1,211 @@
+/***************************************************************************
+ convertertest.cpp
+ -------------------
+ copyright : (C) 2002 by Thomas Baumgart
+ email : ipwizard@users.sourceforge.net
+ Ace Jones <ace.j@hotpop.com>
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qvaluelist.h>
+#include <qvaluevector.h>
+#include <qdom.h>
+#include <qfile.h>
+
+#include <kdebug.h>
+#include <kdeversion.h>
+#include <kglobal.h>
+#include <kglobalsettings.h>
+#include <klocale.h>
+#include <kstandarddirs.h>
+
+#include "convertertest.h"
+
+// uses helper functions from reports tests
+#include "../reports/reportstestcommon.h"
+using namespace test;
+
+#include <kmymoney/mymoneysecurity.h>
+#include <kmymoney/mymoneyprice.h>
+#include <kmymoney/mymoneyreport.h>
+#include <kmymoney/mymoneystatement.h>
+#include "../mymoney/storage/mymoneystoragexml.h"
+#include "../mymoney/storage/mymoneystoragedump.h"
+
+#define private public
+#include "../converter/webpricequote.h"
+#undef private
+
+ConverterTest::ConverterTest()
+{
+}
+
+using namespace convertertest;
+
+void ConverterTest::setUp () {
+
+ storage = new MyMoneySeqAccessMgr;
+ file = MyMoneyFile::instance();
+ file->attachStorage(storage);
+
+ MyMoneyFileTransaction ft;
+
+ file->addCurrency(MyMoneySecurity("CAD", "Canadian Dollar", "C$"));
+ file->addCurrency(MyMoneySecurity("USD", "US Dollar", "$"));
+ file->addCurrency(MyMoneySecurity("JPY", "Japanese Yen", QChar(0x00A5), 100, 1));
+ file->addCurrency(MyMoneySecurity("GBP", "British Pound", "#"));
+ file->setBaseCurrency(file->currency("USD"));
+
+ MyMoneyPayee payeeTest("Test Payee");
+ file->addPayee(payeeTest);
+ MyMoneyPayee payeeTest2("Thomas Baumgart");
+ file->addPayee(payeeTest2);
+
+ acAsset = (MyMoneyFile::instance()->asset().id());
+ acLiability = (MyMoneyFile::instance()->liability().id());
+ acExpense = (MyMoneyFile::instance()->expense().id());
+ acIncome = (MyMoneyFile::instance()->income().id());
+ acChecking = makeAccount("Checking Account",MyMoneyAccount::Checkings,moConverterCheckingOpen,QDate(2004,5,15),acAsset);
+ acCredit = makeAccount("Credit Card",MyMoneyAccount::CreditCard,moConverterCreditOpen,QDate(2004,7,15),acLiability);
+ acSolo = makeAccount("Solo",MyMoneyAccount::Expense,0,QDate(2004,1,11),acExpense);
+ acParent = makeAccount("Parent",MyMoneyAccount::Expense,0,QDate(2004,1,11),acExpense);
+ acChild = makeAccount("Child",MyMoneyAccount::Expense,0,QDate(2004,2,11),acParent);
+ acForeign = makeAccount("Foreign",MyMoneyAccount::Expense,0,QDate(2004,1,11),acExpense);
+
+ MyMoneyInstitution i("Bank of the World","","","","","","");
+ file->addInstitution(i);
+ inBank = i.id();
+ ft.commit();
+}
+
+void ConverterTest::tearDown ()
+{
+ file->detachStorage(storage);
+ delete storage;
+}
+
+void ConverterTest::testWebQuotes()
+{
+#ifdef PERFORM_ONLINE_TESTS
+ try
+ {
+ WebPriceQuote q;
+ QuoteReceiver qr(&q);
+
+ q.launch("DIS");
+
+// kdDebug(2) << "ConverterTest::testWebQuotes(): quote for " << q.m_symbol << " on " << qr.m_date.toString() << " is " << qr.m_price.toString() << " errors(" << qr.m_errors.count() << "): " << qr.m_errors.join(" /// ") << endl;
+
+ // No errors allowed
+ CPPUNIT_ASSERT(qr.m_errors.count() == 0);
+
+ // Quote date should be within the last week, or something bad is going on.
+ CPPUNIT_ASSERT(qr.m_date <= QDate::currentDate());
+ CPPUNIT_ASSERT(qr.m_date >= QDate::currentDate().addDays(-7));
+
+ // Quote value should at least be positive
+ CPPUNIT_ASSERT(qr.m_price.isPositive());
+
+ q.launch("MF8AAUKS.L","Yahoo UK");
+
+// kdDebug(2) << "ConverterTest::testWebQuotes(): quote for " << q.m_symbol << " on " << qr.m_date.toString() << " is " << qr.m_price.toString() << " errors(" << qr.m_errors.count() << "): " << qr.m_errors.join(" /// ") << endl;
+
+ CPPUNIT_ASSERT(qr.m_errors.count() == 0);
+ CPPUNIT_ASSERT(qr.m_date <= QDate::currentDate().addDays(1));
+ CPPUNIT_ASSERT(qr.m_date >= QDate::currentDate().addDays(-7));
+ CPPUNIT_ASSERT(qr.m_price.isPositive());
+
+ q.launch("EUR > USD","Yahoo Currency");
+
+// kdDebug(2) << "ConverterTest::testWebQuotes(): quote for " << q.m_symbol << " on " << qr.m_date.toString() << " is " << qr.m_price.toString() << " errors(" << qr.m_errors.count() << "): " << qr.m_errors.join(" /// ") << endl;
+
+ CPPUNIT_ASSERT(qr.m_errors.count() == 0);
+ CPPUNIT_ASSERT(qr.m_date <= QDate::currentDate().addDays(1));
+ CPPUNIT_ASSERT(qr.m_date >= QDate::currentDate().addDays(-7));
+ CPPUNIT_ASSERT(qr.m_price.isPositive());
+
+ q.launch("50492","Globe & Mail");
+
+// kdDebug(2) << "ConverterTest::testWebQuotes(): quote for " << q.m_symbol << " on " << qr.m_date.toString() << " is " << qr.m_price.toString() << " errors(" << qr.m_errors.count() << "): " << qr.m_errors.join(" /// ") << endl;
+
+ CPPUNIT_ASSERT(qr.m_errors.count() == 0);
+ CPPUNIT_ASSERT(qr.m_date <= QDate::currentDate().addDays(1));
+ CPPUNIT_ASSERT(qr.m_date >= QDate::currentDate().addDays(-7));
+ CPPUNIT_ASSERT(qr.m_price.isPositive());
+
+ q.launch("TDB647","MSN.CA");
+
+// kdDebug(2) << "ConverterTest::testWebQuotes(): quote for " << q.m_symbol << " on " << qr.m_date.toString() << " is " << qr.m_price.toString() << " errors(" << qr.m_errors.count() << "): " << qr.m_errors.join(" /// ") << endl;
+
+ CPPUNIT_ASSERT(qr.m_errors.count() == 0);
+ CPPUNIT_ASSERT(qr.m_date <= QDate::currentDate().addDays(1));
+ CPPUNIT_ASSERT(qr.m_date >= QDate::currentDate().addDays(-7));
+ CPPUNIT_ASSERT(qr.m_price.isPositive());
+
+ }
+ catch (MyMoneyException* e)
+ {
+ CPPUNIT_FAIL(e->what());
+ }
+#endif
+}
+
+void ConverterTest::testDateFormat()
+{
+ try
+ {
+ MyMoneyDateFormat format("%mm-%dd-%yyyy");
+
+ CPPUNIT_ASSERT(format.convertString("1-5-2005") == QDate(2005,1,5));
+ CPPUNIT_ASSERT(format.convertString("jan-15-2005") == QDate(2005,1,15));
+ CPPUNIT_ASSERT(format.convertString("august-25-2005") == QDate(2005,8,25));
+
+ format = MyMoneyDateFormat("%mm/%dd/%yy");
+
+ CPPUNIT_ASSERT(format.convertString("1/5/05") == QDate(2005,1,5));
+ CPPUNIT_ASSERT(format.convertString("jan/15/05") == QDate(2005,1,15));
+ CPPUNIT_ASSERT(format.convertString("august/25/05") == QDate(2005,8,25));
+
+ format = MyMoneyDateFormat("%d\\.%m\\.%yy");
+
+ CPPUNIT_ASSERT(format.convertString("1.5.05") == QDate(2005,5,1));
+ CPPUNIT_ASSERT(format.convertString("15.jan.05") == QDate(2005,1,15));
+ CPPUNIT_ASSERT(format.convertString("25.august.05") == QDate(2005,8,25));
+
+ format = MyMoneyDateFormat("%yyyy\\\\%dddd\\\\%mmmmmmmmmmm");
+
+ CPPUNIT_ASSERT(format.convertString("2005\\31\\12") == QDate(2005,12,31));
+ CPPUNIT_ASSERT(format.convertString("2005\\15\\jan") == QDate(2005,1,15));
+ CPPUNIT_ASSERT(format.convertString("2005\\25\\august") == QDate(2005,8,25));
+
+ format = MyMoneyDateFormat("%m %dd, %yyyy");
+
+ CPPUNIT_ASSERT(format.convertString("jan 15, 2005") == QDate(2005,1,15));
+ CPPUNIT_ASSERT(format.convertString("august 25, 2005") == QDate(2005,8,25));
+ CPPUNIT_ASSERT(format.convertString("january 1st, 2005") == QDate(2005,1,1));
+
+ format = MyMoneyDateFormat("%m %d %y");
+
+ CPPUNIT_ASSERT(format.convertString("12/31/50",false,2000) == QDate(1950,12,31));
+ CPPUNIT_ASSERT(format.convertString("1/1/90",false,2000) == QDate(1990,1,1));
+ CPPUNIT_ASSERT(format.convertString("december 31st, 5",false) == QDate(2005,12,31));
+ }
+ catch (MyMoneyException* e)
+ {
+ CPPUNIT_FAIL(e->what());
+ }
+}
+
+// vim:cin:si:ai:et:ts=2:sw=2: