Warning, file /office/kmymoney/kmymoney/mymoney/tests/mymoneybalancecache-test.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     SPDX-FileCopyrightText: 2009-2011 Fernando Vilas <fvilas@iname.com>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "mymoneybalancecache-test.h"
0007 
0008 #include <QDebug>
0009 
0010 #include <QTest>
0011 
0012 #include "mymoneytestutils.h"
0013 #include "mymoneyexception.h"
0014 #include "mymoneybalancecache.h"
0015 
0016 QTEST_GUILESS_MAIN(MyMoneyBalanceCacheTest)
0017 
0018 void MyMoneyBalanceCacheTest::init()
0019 {
0020     m = new MyMoneyBalanceCache();
0021 }
0022 
0023 void MyMoneyBalanceCacheTest::cleanup()
0024 {
0025     delete m;
0026 }
0027 
0028 void MyMoneyBalanceCacheTest::testCacheItem()
0029 {
0030     MyMoneyBalanceCacheItem item(MyMoneyMoney(10, 100), QDate(2010, 9, 18));
0031     MyMoneyBalanceCacheItem invalid(MyMoneyMoney::minValue, QDate());
0032     //MyMoneyBalanceCacheItem noarg;
0033 
0034 
0035     QVERIFY(item.balance() == MyMoneyMoney(10, 100));
0036     QVERIFY(item.date() == QDate(2010, 9, 18));
0037     QVERIFY(item.isValid());
0038 
0039     QVERIFY(! invalid.isValid());
0040 
0041     //QVERIFY(! noarg.isValid());
0042 
0043 }
0044 
0045 void MyMoneyBalanceCacheTest::testEmpty()
0046 {
0047     QVERIFY(m->isEmpty());
0048     testInsert();
0049     QVERIFY(! m->isEmpty());
0050 }
0051 
0052 void MyMoneyBalanceCacheTest::testInsert()
0053 {
0054     m->insert("A000001", QDate(2010, 9, 16), MyMoneyMoney(10, 100));
0055 
0056     // The next 2 lines have the same date and account.
0057     // This is intentional to see that the balance for that
0058     // account and date gets overwritten.
0059     m->insert("A000001", QDate(2010, 9, 18), MyMoneyMoney(15, 100));
0060     m->insert("A000001", QDate(2010, 9, 18), MyMoneyMoney(20, 100));
0061     m->insert("A000002", QDate(2010, 9, 17), MyMoneyMoney(30, 100));
0062     m->insert("A000002", QDate(2010, 9, 19), MyMoneyMoney(40, 100));
0063 }
0064 
0065 void MyMoneyBalanceCacheTest::testClear()
0066 {
0067     QVERIFY(m->size() == 0);
0068     testInsert();
0069     QVERIFY(m->size() == 4);
0070 
0071     // Delete an item that is not in the cache. The cache should
0072     // be unaffected.
0073     m->clear("A000003", QDate(2010, 9, 17));
0074     QVERIFY(m->size() == 4);
0075 
0076     // Now delete a value before the last one in the account.
0077     // All values after it should also be gone.
0078     m->clear("A000001", QDate(2010, 9, 17));
0079     QVERIFY(m->size() == 3);
0080 
0081     // Verify that the items not deleted still exist
0082     m->clear("A000001");
0083     QVERIFY(m->size() == 2);
0084     m->clear();
0085     QVERIFY(m->size() == 0);
0086 
0087     // Verify that searching for something not in the list is safe
0088     try {
0089         m->clear("A000001");
0090     } catch (const MyMoneyException &) {
0091         QFAIL("Unexpected exception");
0092     }
0093 
0094 }
0095 
0096 void MyMoneyBalanceCacheTest::testSize()
0097 {
0098     QVERIFY(m->size() == 0);
0099     testInsert();
0100     QVERIFY(m->size() == 4);
0101 }
0102 
0103 void MyMoneyBalanceCacheTest::testRetrieve()
0104 {
0105     testInsert();
0106 
0107     MyMoneyBalanceCacheItem item = m->balance("A000003", QDate(2010, 9, 17));
0108     QVERIFY(! item.isValid());
0109 
0110     item = m->balance("A000001", QDate(2010, 9, 16));
0111     QVERIFY(item.isValid());
0112     QVERIFY(item.balance() == MyMoneyMoney(10, 100));
0113     QVERIFY(item.date() == QDate(2010, 9, 16));
0114 
0115     item = m->balance("A000001", QDate(2010, 9, 17));
0116     QVERIFY(! item.isValid());
0117 
0118     item = m->balance("A000001", QDate(2010, 9, 18));
0119     QVERIFY(item.isValid());
0120     QVERIFY(item.balance() == MyMoneyMoney(20, 100));
0121     QVERIFY(item.date() == QDate(2010, 9, 18));
0122 
0123     // Test bad acct
0124     item = m->mostRecentBalance("A000003", QDate(2010, 9, 17));
0125     QVERIFY(! item.isValid());
0126 
0127     // Test date too old
0128     item = m->mostRecentBalance("A000001", QDate(2010, 9, 15));
0129     QVERIFY(!item.isValid());
0130 
0131     // Test date found
0132     item = m->mostRecentBalance("A000001", QDate(2010, 9, 16));
0133     QVERIFY(item.isValid());
0134     QVERIFY(item.balance() == MyMoneyMoney(10, 100));
0135     QVERIFY(item.date() == QDate(2010, 9, 16));
0136 
0137     // Test date in between
0138     item = m->mostRecentBalance("A000001", QDate(2010, 9, 17));
0139     QVERIFY(item.isValid());
0140     QVERIFY(item.balance() == MyMoneyMoney(10, 100));
0141     QVERIFY(item.date() == QDate(2010, 9, 16));
0142 
0143     // Test date found
0144     item = m->mostRecentBalance("A000001", QDate(2010, 9, 18));
0145     QVERIFY(item.isValid());
0146     QVERIFY(item.balance() == MyMoneyMoney(20, 100));
0147     QVERIFY(item.date() == QDate(2010, 9, 18));
0148 
0149     // Test date later than all entries
0150     item = m->mostRecentBalance("A000001", QDate(2010, 9, 19));
0151     QVERIFY(item.isValid());
0152     QVERIFY(item.balance() == MyMoneyMoney(20, 100));
0153     QVERIFY(item.date() == QDate(2010, 9, 18));
0154 }