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 }