KMyMoney/PlayingWithAlkValue: Difference between revisions

From KDE Community Wiki
No edit summary
No edit summary
Line 15: Line 15:
* Dealing with String based constructor and its respective test.
* Dealing with String based constructor and its respective test.


- Apparently, AlkValue String constructor can not deal with "1,123.".
- Problem: Apparently, AlkValue String constructor can not deal with "1,123.".
It seems that the problem is caused by the "," in the converted string, which is not supported by the GMP mpq_class class.
It seems that the problem is caused by the "," in the converted string, which is not supported by the GMP mpq_class class.


Line 22: Line 22:
''Is it a fix for the AlkValue class?''  
''Is it a fix for the AlkValue class?''  


- string constructor of AlkValue class normalize the fraction, while old constructor does not.  
- Problem: string constructor of AlkValue class normalize the fraction, while old constructor does not.  
This caused failures in the testStringConstructor.  
This caused failures in the testStringConstructor.  


Line 29: Line 29:
For now follow the old constructor (Test passed without normalization in the constructor)
For now follow the old constructor (Test passed without normalization in the constructor)


- Failed testNegativeStringConstructor. ''Fix for AlkValue class?''
- Problem: Failed testNegativeStringConstructor. ''Fix for AlkValue class?''
 
Fix: Changed the constructor code to consider negative symbols in separate. Either - or ().
 
* Dealing with convert method and its respective test
* Dealing with convert method and its respective test


Line 35: Line 38:


- Issue: gmp requires normalized operands, while the operators of the current implementation of mymoneymoney does not normalize the values. This affect the unit tests. Check whether the normalization will be applied to all operators, or only when explicitly requested (reduce method).
- Issue: gmp requires normalized operands, while the operators of the current implementation of mymoneymoney does not normalize the values. This affect the unit tests. Check whether the normalization will be applied to all operators, or only when explicitly requested (reduce method).
* All test passed apart from testFormatMoney.
Possible problem with the multiplication with int that has not been detected by the testMultiplication.
Needs more investigation to understand what is going on.


'''Classes that include the mymoneymoney.h file'''
'''Classes that include the mymoneymoney.h file'''

Revision as of 20:24, 16 August 2010

This page contains some notes about the port of the mymoneymoney class to AlkValue (from alkimia).

Based on the forum, the general strategy is to derive MyMoneyMoney from AlkValue, such that

class MyMoneyMoney : public AlkValue {...};

In this way, most of the methods should be directly available, and others can be provided by MyMoneyMoney (such as the toDouble() method that is used by several classes).

This needs to be checked in order to avoid possible overflows.

Current status

  • Removal of m_num and m_denom from MyMoneyMoney class. Using inheritance from AlkValue. Class compiling ok. Starting unit testing the new class.
  • Dealing with String based constructor and its respective test.

- Problem: Apparently, AlkValue String constructor can not deal with "1,123.". It seems that the problem is caused by the "," in the converted string, which is not supported by the GMP mpq_class class.

Temporary fix: Copied the AlkValue string constructor to MyMoneyMoney class and eliminated the thousand separator.

Is it a fix for the AlkValue class?

- Problem: string constructor of AlkValue class normalize the fraction, while old constructor does not. This caused failures in the testStringConstructor.

Check where the normalization (reduce method) is used on the code. Decide whether normalize in the constructor like the AlkValue or to leave like the old constructor. For now follow the old constructor (Test passed without normalization in the constructor)

- Problem: Failed testNegativeStringConstructor. Fix for AlkValue class?

Fix: Changed the constructor code to consider negative symbols in separate. Either - or ().

  • Dealing with convert method and its respective test
  • Dealing with operators

- Issue: gmp requires normalized operands, while the operators of the current implementation of mymoneymoney does not normalize the values. This affect the unit tests. Check whether the normalization will be applied to all operators, or only when explicitly requested (reduce method).

  • All test passed apart from testFormatMoney.

Possible problem with the multiplication with int that has not been detected by the testMultiplication.

Needs more investigation to understand what is going on.

Classes that include the mymoneymoney.h file

These classes may be directed affected by the changes.

  • converter/webpricequote.h
  • converter/mymoneyqifprofile.cpp
  • converter/mymoneygncreader.cpp
  • dialogs/knewequityentrydlg.cpp
  • dialogs/knewaccountdlg.h
  • dialogs/ksplittransactiondlg.h
  • mymoney/mymoneybudget.h
  • mymoney/mymoneyforecast.h
  • mymoney/mymoneymoney.cpp
  • mymoney/mymoneysecurity.h
  • mymoney/mymoneyscheduletest.cpp
  • mymoney/mymoneysplit.h
  • mymoney/mymoneytransaction.h
  • mymoney/mymoneystatement.h
  • mymoney/mymoneymoneytest.cpp
  • mymoney/storage/mymoneystoragesql.h
  • mymoney/mymoneyfinancialcalculatortest.cpp
  • mymoney/mymoneyaccount.h
  • mymoney/mymoneyprice.h
  • plugins/printcheck/numbertowords.h
  • reports/reportstestcommon.h
  • views/kscheduletreeitem.cpp
  • widgets/kpricetreeitem.cpp
  • widgets/kmymoneyedit.cpp
  • widgets/registeritem.h
  • wizards/newinvestmentwizard/konlineupdatewizardpage.cpp
  • wizards/newinvestmentwizard/kinvestmentdetailswizardpage.cpp
  • wizards/newuserwizard/knewuserwizard.cpp
  • wizards/newloanwizard/additionalfeeswizardpage.cpp