Added new test files.
This commit is contained in:
parent
a99695f69b
commit
30978b7fe5
13 changed files with 460 additions and 287 deletions
80
Makefile.am
80
Makefile.am
|
|
@ -92,48 +92,50 @@ endif
|
||||||
|
|
||||||
|
|
||||||
libpyledger_la_CPPFLAGS = $(libledger_la_CPPFLAGS)
|
libpyledger_la_CPPFLAGS = $(libledger_la_CPPFLAGS)
|
||||||
libpyledger_la_LDFLAGS = -release $(PACKAGE_VERSION)
|
libpyledger_la_LDFLAGS = -release $(PACKAGE_VERSION)
|
||||||
|
|
||||||
libpyledger_la_SOURCES = \
|
libpyledger_la_SOURCES = \
|
||||||
src/py_utils.cc \
|
src/py_utils.cc \
|
||||||
src/py_times.cc \
|
src/py_times.cc \
|
||||||
src/py_amount.cc
|
src/py_amount.cc
|
||||||
|
|
||||||
|
|
||||||
pkginclude_HEADERS = \
|
pkginclude_HEADERS = \
|
||||||
src/amount.h \
|
src/amount.h \
|
||||||
src/balance.h \
|
src/balpair.h \
|
||||||
src/commodity.h \
|
src/balance.h \
|
||||||
src/binary.h \
|
src/binary.h \
|
||||||
src/context.h \
|
src/commodity.h \
|
||||||
src/csv.h \
|
src/context.h \
|
||||||
src/derive.h \
|
src/csv.h \
|
||||||
src/emacs.h \
|
src/derive.h \
|
||||||
src/fdstream.hpp \
|
src/emacs.h \
|
||||||
src/format.h \
|
src/flags.h \
|
||||||
src/gnucash.h \
|
src/format.h \
|
||||||
src/journal.h \
|
src/gnucash.h \
|
||||||
src/ledger.h \
|
src/journal.h \
|
||||||
src/mask.h \
|
src/ledger.h \
|
||||||
src/ofx.h \
|
src/mask.h \
|
||||||
src/option.h \
|
src/ofx.h \
|
||||||
src/parser.h \
|
src/option.h \
|
||||||
src/pyinterp.h \
|
src/parser.h \
|
||||||
src/pyfstream.h \
|
src/pyfstream.h \
|
||||||
src/pyledger.h \
|
src/pyinterp.h \
|
||||||
src/qif.h \
|
src/pyledger.h \
|
||||||
src/quotes.h \
|
src/pyutils.h \
|
||||||
src/reconcile.h \
|
src/qif.h \
|
||||||
src/register.h \
|
src/quotes.h \
|
||||||
src/report.h \
|
src/reconcile.h \
|
||||||
src/session.h \
|
src/register.h \
|
||||||
src/system.hh \
|
src/report.h \
|
||||||
src/textual.h \
|
src/scoped_execute.h \
|
||||||
src/times.h \
|
src/session.h \
|
||||||
src/transform.h \
|
src/textual.h \
|
||||||
src/utils.h \
|
src/times.h \
|
||||||
src/value.h \
|
src/transform.h \
|
||||||
src/xml.h \
|
src/utils.h \
|
||||||
|
src/value.h \
|
||||||
|
src/xml.h \
|
||||||
src/xpath.h
|
src/xpath.h
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
@ -214,9 +216,11 @@ check_PROGRAMS = $(TESTS)
|
||||||
|
|
||||||
nodist_UnitTests_SOURCES = tests/UnitTests.cc \
|
nodist_UnitTests_SOURCES = tests/UnitTests.cc \
|
||||||
\
|
\
|
||||||
tests/numerics/t_times.cc \
|
tests/utility/t_utils.cc \
|
||||||
|
tests/utility/t_times.cc \
|
||||||
tests/numerics/t_commodity.cc \
|
tests/numerics/t_commodity.cc \
|
||||||
tests/numerics/t_amount.cc
|
tests/numerics/t_amount.cc \
|
||||||
|
tests/numerics/t_balance.cc
|
||||||
|
|
||||||
UnitTests_CPPFLAGS = -I$(srcdir)/tests $(libledger_la_CPPFLAGS)
|
UnitTests_CPPFLAGS = -I$(srcdir)/tests $(libledger_la_CPPFLAGS)
|
||||||
UnitTests_LDFLAGS = $(LIBADD_DL)
|
UnitTests_LDFLAGS = $(LIBADD_DL)
|
||||||
|
|
|
||||||
133
Makefile.in
133
Makefile.in
|
|
@ -132,8 +132,9 @@ am_PyUnitTests_OBJECTS =
|
||||||
PyUnitTests_OBJECTS = $(am_PyUnitTests_OBJECTS)
|
PyUnitTests_OBJECTS = $(am_PyUnitTests_OBJECTS)
|
||||||
PyUnitTests_LDADD = $(LDADD)
|
PyUnitTests_LDADD = $(LDADD)
|
||||||
nodist_UnitTests_OBJECTS = UnitTests-UnitTests.$(OBJEXT) \
|
nodist_UnitTests_OBJECTS = UnitTests-UnitTests.$(OBJEXT) \
|
||||||
UnitTests-t_times.$(OBJEXT) UnitTests-t_commodity.$(OBJEXT) \
|
UnitTests-t_utils.$(OBJEXT) UnitTests-t_times.$(OBJEXT) \
|
||||||
UnitTests-t_amount.$(OBJEXT)
|
UnitTests-t_commodity.$(OBJEXT) UnitTests-t_amount.$(OBJEXT) \
|
||||||
|
UnitTests-t_balance.$(OBJEXT)
|
||||||
UnitTests_OBJECTS = $(nodist_UnitTests_OBJECTS)
|
UnitTests_OBJECTS = $(nodist_UnitTests_OBJECTS)
|
||||||
UnitTests_DEPENDENCIES = $(lib_LTLIBRARIES) gdtoa/libgdtoa.la
|
UnitTests_DEPENDENCIES = $(lib_LTLIBRARIES) gdtoa/libgdtoa.la
|
||||||
UnitTests_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
UnitTests_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||||
|
|
@ -373,44 +374,46 @@ libledger_la_SOURCES = src/utils.cc src/times.cc src/mask.cc \
|
||||||
libpyledger_la_CPPFLAGS = $(libledger_la_CPPFLAGS)
|
libpyledger_la_CPPFLAGS = $(libledger_la_CPPFLAGS)
|
||||||
libpyledger_la_LDFLAGS = -release $(PACKAGE_VERSION)
|
libpyledger_la_LDFLAGS = -release $(PACKAGE_VERSION)
|
||||||
libpyledger_la_SOURCES = \
|
libpyledger_la_SOURCES = \
|
||||||
src/py_utils.cc \
|
src/py_utils.cc \
|
||||||
src/py_times.cc \
|
src/py_times.cc \
|
||||||
src/py_amount.cc
|
src/py_amount.cc
|
||||||
|
|
||||||
pkginclude_HEADERS = \
|
pkginclude_HEADERS = \
|
||||||
src/amount.h \
|
src/amount.h \
|
||||||
src/balance.h \
|
src/balpair.h \
|
||||||
src/commodity.h \
|
src/balance.h \
|
||||||
src/binary.h \
|
src/binary.h \
|
||||||
src/context.h \
|
src/commodity.h \
|
||||||
src/csv.h \
|
src/context.h \
|
||||||
src/derive.h \
|
src/csv.h \
|
||||||
src/emacs.h \
|
src/derive.h \
|
||||||
src/fdstream.hpp \
|
src/emacs.h \
|
||||||
src/format.h \
|
src/flags.h \
|
||||||
src/gnucash.h \
|
src/format.h \
|
||||||
src/journal.h \
|
src/gnucash.h \
|
||||||
src/ledger.h \
|
src/journal.h \
|
||||||
src/mask.h \
|
src/ledger.h \
|
||||||
src/ofx.h \
|
src/mask.h \
|
||||||
src/option.h \
|
src/ofx.h \
|
||||||
src/parser.h \
|
src/option.h \
|
||||||
src/pyinterp.h \
|
src/parser.h \
|
||||||
src/pyfstream.h \
|
src/pyfstream.h \
|
||||||
src/pyledger.h \
|
src/pyinterp.h \
|
||||||
src/qif.h \
|
src/pyledger.h \
|
||||||
src/quotes.h \
|
src/pyutils.h \
|
||||||
src/reconcile.h \
|
src/qif.h \
|
||||||
src/register.h \
|
src/quotes.h \
|
||||||
src/report.h \
|
src/reconcile.h \
|
||||||
src/session.h \
|
src/register.h \
|
||||||
src/system.hh \
|
src/report.h \
|
||||||
src/textual.h \
|
src/scoped_execute.h \
|
||||||
src/times.h \
|
src/session.h \
|
||||||
src/transform.h \
|
src/textual.h \
|
||||||
src/utils.h \
|
src/times.h \
|
||||||
src/value.h \
|
src/transform.h \
|
||||||
src/xml.h \
|
src/utils.h \
|
||||||
|
src/value.h \
|
||||||
|
src/xml.h \
|
||||||
src/xpath.h
|
src/xpath.h
|
||||||
|
|
||||||
ledger_CPPFLAGS = $(libledger_la_CPPFLAGS)
|
ledger_CPPFLAGS = $(libledger_la_CPPFLAGS)
|
||||||
|
|
@ -439,9 +442,11 @@ dist_lisp_LISP = lisp/ledger.el lisp/timeclock.el
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ $(am__append_16) $(am__append_17)
|
@HAVE_BOOST_PYTHON_TRUE@ $(am__append_16) $(am__append_17)
|
||||||
nodist_UnitTests_SOURCES = tests/UnitTests.cc \
|
nodist_UnitTests_SOURCES = tests/UnitTests.cc \
|
||||||
\
|
\
|
||||||
tests/numerics/t_times.cc \
|
tests/utility/t_utils.cc \
|
||||||
|
tests/utility/t_times.cc \
|
||||||
tests/numerics/t_commodity.cc \
|
tests/numerics/t_commodity.cc \
|
||||||
tests/numerics/t_amount.cc
|
tests/numerics/t_amount.cc \
|
||||||
|
tests/numerics/t_balance.cc
|
||||||
|
|
||||||
UnitTests_CPPFLAGS = -I$(srcdir)/tests $(libledger_la_CPPFLAGS)
|
UnitTests_CPPFLAGS = -I$(srcdir)/tests $(libledger_la_CPPFLAGS)
|
||||||
UnitTests_LDFLAGS = $(LIBADD_DL)
|
UnitTests_LDFLAGS = $(LIBADD_DL)
|
||||||
|
|
@ -596,8 +601,10 @@ distclean-compile:
|
||||||
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-UnitTests.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-UnitTests.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_amount.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_amount.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_balance.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_commodity.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_commodity.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_times.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_times.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_utils.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ledger-main.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ledger-main.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ledger-option.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ledger-option.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libledger_la-amount.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libledger_la-amount.Plo@am__quote@
|
||||||
|
|
@ -880,19 +887,33 @@ UnitTests-UnitTests.obj: tests/UnitTests.cc
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-UnitTests.obj `if test -f 'tests/UnitTests.cc'; then $(CYGPATH_W) 'tests/UnitTests.cc'; else $(CYGPATH_W) '$(srcdir)/tests/UnitTests.cc'; fi`
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-UnitTests.obj `if test -f 'tests/UnitTests.cc'; then $(CYGPATH_W) 'tests/UnitTests.cc'; else $(CYGPATH_W) '$(srcdir)/tests/UnitTests.cc'; fi`
|
||||||
|
|
||||||
UnitTests-t_times.o: tests/numerics/t_times.cc
|
UnitTests-t_utils.o: tests/utility/t_utils.cc
|
||||||
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_times.o -MD -MP -MF $(DEPDIR)/UnitTests-t_times.Tpo -c -o UnitTests-t_times.o `test -f 'tests/numerics/t_times.cc' || echo '$(srcdir)/'`tests/numerics/t_times.cc
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_utils.o -MD -MP -MF $(DEPDIR)/UnitTests-t_utils.Tpo -c -o UnitTests-t_utils.o `test -f 'tests/utility/t_utils.cc' || echo '$(srcdir)/'`tests/utility/t_utils.cc
|
||||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_times.Tpo $(DEPDIR)/UnitTests-t_times.Po
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_utils.Tpo $(DEPDIR)/UnitTests-t_utils.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/numerics/t_times.cc' object='UnitTests-t_times.o' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/utility/t_utils.cc' object='UnitTests-t_utils.o' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_times.o `test -f 'tests/numerics/t_times.cc' || echo '$(srcdir)/'`tests/numerics/t_times.cc
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_utils.o `test -f 'tests/utility/t_utils.cc' || echo '$(srcdir)/'`tests/utility/t_utils.cc
|
||||||
|
|
||||||
UnitTests-t_times.obj: tests/numerics/t_times.cc
|
UnitTests-t_utils.obj: tests/utility/t_utils.cc
|
||||||
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_times.obj -MD -MP -MF $(DEPDIR)/UnitTests-t_times.Tpo -c -o UnitTests-t_times.obj `if test -f 'tests/numerics/t_times.cc'; then $(CYGPATH_W) 'tests/numerics/t_times.cc'; else $(CYGPATH_W) '$(srcdir)/tests/numerics/t_times.cc'; fi`
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_utils.obj -MD -MP -MF $(DEPDIR)/UnitTests-t_utils.Tpo -c -o UnitTests-t_utils.obj `if test -f 'tests/utility/t_utils.cc'; then $(CYGPATH_W) 'tests/utility/t_utils.cc'; else $(CYGPATH_W) '$(srcdir)/tests/utility/t_utils.cc'; fi`
|
||||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_times.Tpo $(DEPDIR)/UnitTests-t_times.Po
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_utils.Tpo $(DEPDIR)/UnitTests-t_utils.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/numerics/t_times.cc' object='UnitTests-t_times.obj' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/utility/t_utils.cc' object='UnitTests-t_utils.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_times.obj `if test -f 'tests/numerics/t_times.cc'; then $(CYGPATH_W) 'tests/numerics/t_times.cc'; else $(CYGPATH_W) '$(srcdir)/tests/numerics/t_times.cc'; fi`
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_utils.obj `if test -f 'tests/utility/t_utils.cc'; then $(CYGPATH_W) 'tests/utility/t_utils.cc'; else $(CYGPATH_W) '$(srcdir)/tests/utility/t_utils.cc'; fi`
|
||||||
|
|
||||||
|
UnitTests-t_times.o: tests/utility/t_times.cc
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_times.o -MD -MP -MF $(DEPDIR)/UnitTests-t_times.Tpo -c -o UnitTests-t_times.o `test -f 'tests/utility/t_times.cc' || echo '$(srcdir)/'`tests/utility/t_times.cc
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_times.Tpo $(DEPDIR)/UnitTests-t_times.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/utility/t_times.cc' object='UnitTests-t_times.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_times.o `test -f 'tests/utility/t_times.cc' || echo '$(srcdir)/'`tests/utility/t_times.cc
|
||||||
|
|
||||||
|
UnitTests-t_times.obj: tests/utility/t_times.cc
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_times.obj -MD -MP -MF $(DEPDIR)/UnitTests-t_times.Tpo -c -o UnitTests-t_times.obj `if test -f 'tests/utility/t_times.cc'; then $(CYGPATH_W) 'tests/utility/t_times.cc'; else $(CYGPATH_W) '$(srcdir)/tests/utility/t_times.cc'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_times.Tpo $(DEPDIR)/UnitTests-t_times.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/utility/t_times.cc' object='UnitTests-t_times.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_times.obj `if test -f 'tests/utility/t_times.cc'; then $(CYGPATH_W) 'tests/utility/t_times.cc'; else $(CYGPATH_W) '$(srcdir)/tests/utility/t_times.cc'; fi`
|
||||||
|
|
||||||
UnitTests-t_commodity.o: tests/numerics/t_commodity.cc
|
UnitTests-t_commodity.o: tests/numerics/t_commodity.cc
|
||||||
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_commodity.o -MD -MP -MF $(DEPDIR)/UnitTests-t_commodity.Tpo -c -o UnitTests-t_commodity.o `test -f 'tests/numerics/t_commodity.cc' || echo '$(srcdir)/'`tests/numerics/t_commodity.cc
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_commodity.o -MD -MP -MF $(DEPDIR)/UnitTests-t_commodity.Tpo -c -o UnitTests-t_commodity.o `test -f 'tests/numerics/t_commodity.cc' || echo '$(srcdir)/'`tests/numerics/t_commodity.cc
|
||||||
|
|
@ -922,6 +943,20 @@ UnitTests-t_amount.obj: tests/numerics/t_amount.cc
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_amount.obj `if test -f 'tests/numerics/t_amount.cc'; then $(CYGPATH_W) 'tests/numerics/t_amount.cc'; else $(CYGPATH_W) '$(srcdir)/tests/numerics/t_amount.cc'; fi`
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_amount.obj `if test -f 'tests/numerics/t_amount.cc'; then $(CYGPATH_W) 'tests/numerics/t_amount.cc'; else $(CYGPATH_W) '$(srcdir)/tests/numerics/t_amount.cc'; fi`
|
||||||
|
|
||||||
|
UnitTests-t_balance.o: tests/numerics/t_balance.cc
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_balance.o -MD -MP -MF $(DEPDIR)/UnitTests-t_balance.Tpo -c -o UnitTests-t_balance.o `test -f 'tests/numerics/t_balance.cc' || echo '$(srcdir)/'`tests/numerics/t_balance.cc
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_balance.Tpo $(DEPDIR)/UnitTests-t_balance.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/numerics/t_balance.cc' object='UnitTests-t_balance.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_balance.o `test -f 'tests/numerics/t_balance.cc' || echo '$(srcdir)/'`tests/numerics/t_balance.cc
|
||||||
|
|
||||||
|
UnitTests-t_balance.obj: tests/numerics/t_balance.cc
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_balance.obj -MD -MP -MF $(DEPDIR)/UnitTests-t_balance.Tpo -c -o UnitTests-t_balance.obj `if test -f 'tests/numerics/t_balance.cc'; then $(CYGPATH_W) 'tests/numerics/t_balance.cc'; else $(CYGPATH_W) '$(srcdir)/tests/numerics/t_balance.cc'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_balance.Tpo $(DEPDIR)/UnitTests-t_balance.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/numerics/t_balance.cc' object='UnitTests-t_balance.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_balance.obj `if test -f 'tests/numerics/t_balance.cc'; then $(CYGPATH_W) 'tests/numerics/t_balance.cc'; else $(CYGPATH_W) '$(srcdir)/tests/numerics/t_balance.cc'; fi`
|
||||||
|
|
||||||
ledger-option.o: src/option.cc
|
ledger-option.o: src/option.cc
|
||||||
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ledger_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ledger-option.o -MD -MP -MF $(DEPDIR)/ledger-option.Tpo -c -o ledger-option.o `test -f 'src/option.cc' || echo '$(srcdir)/'`src/option.cc
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ledger_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ledger-option.o -MD -MP -MF $(DEPDIR)/ledger-option.Tpo -c -o ledger-option.o `test -f 'src/option.cc' || echo '$(srcdir)/'`src/option.cc
|
||||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/ledger-option.Tpo $(DEPDIR)/ledger-option.Po
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/ledger-option.Tpo $(DEPDIR)/ledger-option.Po
|
||||||
|
|
|
||||||
194
src/balance.h
194
src/balance.h
|
|
@ -230,200 +230,6 @@ inline std::ostream& operator<<(std::ostream& out, const balance_t& bal) {
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
class balance_pair_t
|
|
||||||
: public equality_comparable<balance_pair_t,
|
|
||||||
equality_comparable<balance_pair_t, balance_t,
|
|
||||||
equality_comparable<balance_pair_t, amount_t,
|
|
||||||
additive<balance_pair_t,
|
|
||||||
additive<balance_pair_t, balance_t,
|
|
||||||
additive<balance_pair_t, amount_t,
|
|
||||||
multiplicative<balance_pair_t, unsigned long,
|
|
||||||
multiplicative<balance_pair_t, long,
|
|
||||||
multiplicative<balance_pair_t, amount_t> > > > > > > > >
|
|
||||||
{
|
|
||||||
balance_t quantity;
|
|
||||||
optional<balance_t> cost;
|
|
||||||
|
|
||||||
friend class value_t;
|
|
||||||
friend class entry_base_t;
|
|
||||||
|
|
||||||
public:
|
|
||||||
// constructors
|
|
||||||
balance_pair_t() {
|
|
||||||
TRACE_CTOR(balance_pair_t, "");
|
|
||||||
}
|
|
||||||
balance_pair_t(const balance_pair_t& bal_pair)
|
|
||||||
: quantity(bal_pair.quantity), cost(bal_pair.cost) {
|
|
||||||
TRACE_CTOR(balance_pair_t, "copy");
|
|
||||||
}
|
|
||||||
balance_pair_t(const balance_t& _quantity)
|
|
||||||
: quantity(_quantity) {
|
|
||||||
TRACE_CTOR(balance_pair_t, "const balance_t&");
|
|
||||||
}
|
|
||||||
balance_pair_t(const amount_t& _quantity)
|
|
||||||
: quantity(_quantity) {
|
|
||||||
TRACE_CTOR(balance_pair_t, "const amount_t&");
|
|
||||||
}
|
|
||||||
~balance_pair_t() {
|
|
||||||
TRACE_DTOR(balance_pair_t);
|
|
||||||
}
|
|
||||||
|
|
||||||
// assignment operator
|
|
||||||
balance_pair_t& operator=(const balance_pair_t& bal_pair) {
|
|
||||||
if (this != &bal_pair) {
|
|
||||||
quantity = bal_pair.quantity;
|
|
||||||
cost = bal_pair.cost;
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
// in-place arithmetic
|
|
||||||
balance_pair_t& operator+=(const balance_pair_t& bal_pair) {
|
|
||||||
if (bal_pair.cost && ! cost)
|
|
||||||
cost = quantity;
|
|
||||||
quantity += bal_pair.quantity;
|
|
||||||
if (cost)
|
|
||||||
*cost += bal_pair.cost ? *bal_pair.cost : bal_pair.quantity;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
balance_pair_t& operator-=(const balance_pair_t& bal_pair) {
|
|
||||||
if (bal_pair.cost && ! cost)
|
|
||||||
cost = quantity;
|
|
||||||
quantity -= bal_pair.quantity;
|
|
||||||
if (cost)
|
|
||||||
*cost -= bal_pair.cost ? *bal_pair.cost : bal_pair.quantity;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
// comparison
|
|
||||||
bool operator==(const balance_pair_t& bal_pair) const {
|
|
||||||
return quantity == bal_pair.quantity;
|
|
||||||
}
|
|
||||||
bool operator==(const balance_t& bal) const {
|
|
||||||
return quantity == bal;
|
|
||||||
}
|
|
||||||
bool operator==(const amount_t& amt) const {
|
|
||||||
return quantity == amt;
|
|
||||||
}
|
|
||||||
|
|
||||||
balance_pair_t& operator*=(const amount_t& amt) {
|
|
||||||
quantity *= amt;
|
|
||||||
if (cost)
|
|
||||||
*cost *= amt;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
balance_pair_t& operator/=(const amount_t& amt) {
|
|
||||||
quantity /= amt;
|
|
||||||
if (cost)
|
|
||||||
*cost /= amt;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
// unary negation
|
|
||||||
void in_place_negate() {
|
|
||||||
quantity.in_place_negate();
|
|
||||||
if (cost)
|
|
||||||
cost->in_place_negate();
|
|
||||||
}
|
|
||||||
balance_pair_t negate() const {
|
|
||||||
balance_pair_t temp = *this;
|
|
||||||
temp.in_place_negate();
|
|
||||||
return temp;
|
|
||||||
}
|
|
||||||
balance_pair_t operator-() const {
|
|
||||||
return negate();
|
|
||||||
}
|
|
||||||
|
|
||||||
// test for non-zero (use ! for zero)
|
|
||||||
operator bool() const {
|
|
||||||
return quantity;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_realzero() const {
|
|
||||||
return ((! cost || cost->is_realzero()) && quantity.is_realzero());
|
|
||||||
}
|
|
||||||
|
|
||||||
balance_pair_t abs() const {
|
|
||||||
balance_pair_t temp = *this;
|
|
||||||
temp.quantity = temp.quantity.abs();
|
|
||||||
if (temp.cost)
|
|
||||||
temp.cost = temp.cost->abs();
|
|
||||||
return temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
optional<amount_t> amount(const optional<const commodity_t&>& commodity =
|
|
||||||
optional<const commodity_t&>()) const {
|
|
||||||
return quantity.amount(commodity);
|
|
||||||
}
|
|
||||||
optional<balance_t> value(const optional<moment_t>& moment =
|
|
||||||
optional<moment_t>()) const {
|
|
||||||
return quantity.value(moment);
|
|
||||||
}
|
|
||||||
|
|
||||||
balance_t
|
|
||||||
strip_annotations(const bool keep_price = amount_t::keep_price,
|
|
||||||
const bool keep_date = amount_t::keep_date,
|
|
||||||
const bool keep_tag = amount_t::keep_tag) const {
|
|
||||||
return quantity.strip_annotations(keep_price, keep_date, keep_tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
void print(std::ostream& out, const int first_width,
|
|
||||||
const int latter_width = -1) const {
|
|
||||||
quantity.print(out, first_width, latter_width);
|
|
||||||
}
|
|
||||||
|
|
||||||
balance_pair_t& add(const amount_t& amt,
|
|
||||||
const optional<amount_t>& a_cost = optional<amount_t>()) {
|
|
||||||
if (a_cost && ! cost)
|
|
||||||
cost = quantity;
|
|
||||||
quantity += amt;
|
|
||||||
if (cost)
|
|
||||||
*cost += a_cost ? *a_cost : amt;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool valid() {
|
|
||||||
return quantity.valid() && (! cost || cost->valid());
|
|
||||||
}
|
|
||||||
|
|
||||||
void in_place_reduce() {
|
|
||||||
quantity.in_place_reduce();
|
|
||||||
if (cost) cost->in_place_reduce();
|
|
||||||
}
|
|
||||||
balance_pair_t reduce() const {
|
|
||||||
balance_pair_t temp(*this);
|
|
||||||
temp.in_place_reduce();
|
|
||||||
return temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
void in_place_round() {
|
|
||||||
quantity = quantity.round();
|
|
||||||
if (cost)
|
|
||||||
cost = cost->round();
|
|
||||||
}
|
|
||||||
balance_pair_t round() const {
|
|
||||||
balance_pair_t temp(*this);
|
|
||||||
temp.in_place_round();
|
|
||||||
return temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
balance_pair_t unround() const {
|
|
||||||
balance_pair_t temp(quantity.unround());
|
|
||||||
if (cost)
|
|
||||||
temp.cost = cost->unround();
|
|
||||||
return temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
friend std::ostream& operator<<(std::ostream& out,
|
|
||||||
const balance_pair_t& bal_pair);
|
|
||||||
};
|
|
||||||
|
|
||||||
inline std::ostream& operator<<(std::ostream& out,
|
|
||||||
const balance_pair_t& bal_pair) {
|
|
||||||
bal_pair.quantity.print(out, 12);
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace ledger
|
} // namespace ledger
|
||||||
|
|
||||||
#endif // _BALANCE_H
|
#endif // _BALANCE_H
|
||||||
|
|
|
||||||
235
src/balpair.h
Normal file
235
src/balpair.h
Normal file
|
|
@ -0,0 +1,235 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2003-2007, John Wiegley. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of New Artisans LLC nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _BALPAIR_H
|
||||||
|
#define _BARPAIR_H
|
||||||
|
|
||||||
|
#include "balance.h"
|
||||||
|
|
||||||
|
namespace ledger {
|
||||||
|
|
||||||
|
class balance_pair_t
|
||||||
|
: public equality_comparable<balance_pair_t,
|
||||||
|
equality_comparable<balance_pair_t, balance_t,
|
||||||
|
equality_comparable<balance_pair_t, amount_t,
|
||||||
|
additive<balance_pair_t,
|
||||||
|
additive<balance_pair_t, balance_t,
|
||||||
|
additive<balance_pair_t, amount_t,
|
||||||
|
multiplicative<balance_pair_t, unsigned long,
|
||||||
|
multiplicative<balance_pair_t, long,
|
||||||
|
multiplicative<balance_pair_t, amount_t> > > > > > > > >
|
||||||
|
{
|
||||||
|
balance_t quantity;
|
||||||
|
optional<balance_t> cost;
|
||||||
|
|
||||||
|
friend class value_t;
|
||||||
|
friend class entry_base_t;
|
||||||
|
|
||||||
|
public:
|
||||||
|
// constructors
|
||||||
|
balance_pair_t() {
|
||||||
|
TRACE_CTOR(balance_pair_t, "");
|
||||||
|
}
|
||||||
|
balance_pair_t(const balance_pair_t& bal_pair)
|
||||||
|
: quantity(bal_pair.quantity), cost(bal_pair.cost) {
|
||||||
|
TRACE_CTOR(balance_pair_t, "copy");
|
||||||
|
}
|
||||||
|
balance_pair_t(const balance_t& _quantity)
|
||||||
|
: quantity(_quantity) {
|
||||||
|
TRACE_CTOR(balance_pair_t, "const balance_t&");
|
||||||
|
}
|
||||||
|
balance_pair_t(const amount_t& _quantity)
|
||||||
|
: quantity(_quantity) {
|
||||||
|
TRACE_CTOR(balance_pair_t, "const amount_t&");
|
||||||
|
}
|
||||||
|
~balance_pair_t() {
|
||||||
|
TRACE_DTOR(balance_pair_t);
|
||||||
|
}
|
||||||
|
|
||||||
|
// assignment operator
|
||||||
|
balance_pair_t& operator=(const balance_pair_t& bal_pair) {
|
||||||
|
if (this != &bal_pair) {
|
||||||
|
quantity = bal_pair.quantity;
|
||||||
|
cost = bal_pair.cost;
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// in-place arithmetic
|
||||||
|
balance_pair_t& operator+=(const balance_pair_t& bal_pair) {
|
||||||
|
if (bal_pair.cost && ! cost)
|
||||||
|
cost = quantity;
|
||||||
|
quantity += bal_pair.quantity;
|
||||||
|
if (cost)
|
||||||
|
*cost += bal_pair.cost ? *bal_pair.cost : bal_pair.quantity;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
balance_pair_t& operator-=(const balance_pair_t& bal_pair) {
|
||||||
|
if (bal_pair.cost && ! cost)
|
||||||
|
cost = quantity;
|
||||||
|
quantity -= bal_pair.quantity;
|
||||||
|
if (cost)
|
||||||
|
*cost -= bal_pair.cost ? *bal_pair.cost : bal_pair.quantity;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// comparison
|
||||||
|
bool operator==(const balance_pair_t& bal_pair) const {
|
||||||
|
return quantity == bal_pair.quantity;
|
||||||
|
}
|
||||||
|
bool operator==(const balance_t& bal) const {
|
||||||
|
return quantity == bal;
|
||||||
|
}
|
||||||
|
bool operator==(const amount_t& amt) const {
|
||||||
|
return quantity == amt;
|
||||||
|
}
|
||||||
|
|
||||||
|
balance_pair_t& operator*=(const amount_t& amt) {
|
||||||
|
quantity *= amt;
|
||||||
|
if (cost)
|
||||||
|
*cost *= amt;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
balance_pair_t& operator/=(const amount_t& amt) {
|
||||||
|
quantity /= amt;
|
||||||
|
if (cost)
|
||||||
|
*cost /= amt;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// unary negation
|
||||||
|
void in_place_negate() {
|
||||||
|
quantity.in_place_negate();
|
||||||
|
if (cost)
|
||||||
|
cost->in_place_negate();
|
||||||
|
}
|
||||||
|
balance_pair_t negate() const {
|
||||||
|
balance_pair_t temp = *this;
|
||||||
|
temp.in_place_negate();
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
balance_pair_t operator-() const {
|
||||||
|
return negate();
|
||||||
|
}
|
||||||
|
|
||||||
|
// test for non-zero (use ! for zero)
|
||||||
|
operator bool() const {
|
||||||
|
return quantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_realzero() const {
|
||||||
|
return ((! cost || cost->is_realzero()) && quantity.is_realzero());
|
||||||
|
}
|
||||||
|
|
||||||
|
balance_pair_t abs() const {
|
||||||
|
balance_pair_t temp = *this;
|
||||||
|
temp.quantity = temp.quantity.abs();
|
||||||
|
if (temp.cost)
|
||||||
|
temp.cost = temp.cost->abs();
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
optional<amount_t> amount(const optional<const commodity_t&>& commodity =
|
||||||
|
optional<const commodity_t&>()) const {
|
||||||
|
return quantity.amount(commodity);
|
||||||
|
}
|
||||||
|
optional<balance_t> value(const optional<moment_t>& moment =
|
||||||
|
optional<moment_t>()) const {
|
||||||
|
return quantity.value(moment);
|
||||||
|
}
|
||||||
|
|
||||||
|
balance_t
|
||||||
|
strip_annotations(const bool keep_price = amount_t::keep_price,
|
||||||
|
const bool keep_date = amount_t::keep_date,
|
||||||
|
const bool keep_tag = amount_t::keep_tag) const {
|
||||||
|
return quantity.strip_annotations(keep_price, keep_date, keep_tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
void print(std::ostream& out, const int first_width,
|
||||||
|
const int latter_width = -1) const {
|
||||||
|
quantity.print(out, first_width, latter_width);
|
||||||
|
}
|
||||||
|
|
||||||
|
balance_pair_t& add(const amount_t& amt,
|
||||||
|
const optional<amount_t>& a_cost = optional<amount_t>()) {
|
||||||
|
if (a_cost && ! cost)
|
||||||
|
cost = quantity;
|
||||||
|
quantity += amt;
|
||||||
|
if (cost)
|
||||||
|
*cost += a_cost ? *a_cost : amt;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool valid() {
|
||||||
|
return quantity.valid() && (! cost || cost->valid());
|
||||||
|
}
|
||||||
|
|
||||||
|
void in_place_reduce() {
|
||||||
|
quantity.in_place_reduce();
|
||||||
|
if (cost) cost->in_place_reduce();
|
||||||
|
}
|
||||||
|
balance_pair_t reduce() const {
|
||||||
|
balance_pair_t temp(*this);
|
||||||
|
temp.in_place_reduce();
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void in_place_round() {
|
||||||
|
quantity = quantity.round();
|
||||||
|
if (cost)
|
||||||
|
cost = cost->round();
|
||||||
|
}
|
||||||
|
balance_pair_t round() const {
|
||||||
|
balance_pair_t temp(*this);
|
||||||
|
temp.in_place_round();
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
balance_pair_t unround() const {
|
||||||
|
balance_pair_t temp(quantity.unround());
|
||||||
|
if (cost)
|
||||||
|
temp.cost = cost->unround();
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
friend std::ostream& operator<<(std::ostream& out,
|
||||||
|
const balance_pair_t& bal_pair);
|
||||||
|
};
|
||||||
|
|
||||||
|
inline std::ostream& operator<<(std::ostream& out,
|
||||||
|
const balance_pair_t& bal_pair) {
|
||||||
|
bal_pair.quantity.print(out, 12);
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace ledger
|
||||||
|
|
||||||
|
#endif // _BALPAIR_H
|
||||||
|
|
@ -32,8 +32,7 @@
|
||||||
#ifndef _VALUE_H
|
#ifndef _VALUE_H
|
||||||
#define _VALUE_H
|
#define _VALUE_H
|
||||||
|
|
||||||
#include "amount.h"
|
#include "balpair.h" // pulls in balance.h and amount.h
|
||||||
#include "balance.h"
|
|
||||||
|
|
||||||
namespace ledger {
|
namespace ledger {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,4 +19,6 @@ using namespace ledger;
|
||||||
#define assertMessage(x,y) CPPUNIT_ASSERT_MESSAGE(x,y)
|
#define assertMessage(x,y) CPPUNIT_ASSERT_MESSAGE(x,y)
|
||||||
#define assertThrow(x,y) CPPUNIT_ASSERT_THROW(x,y)
|
#define assertThrow(x,y) CPPUNIT_ASSERT_THROW(x,y)
|
||||||
|
|
||||||
|
#define internalAmount(x) amount_t::exact(x)
|
||||||
|
|
||||||
#endif /* _UNITTESTS_H */
|
#endif /* _UNITTESTS_H */
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
#include "t_amount.h"
|
#include "t_amount.h"
|
||||||
|
|
||||||
#define internalAmount(x) amount_t::exact(x)
|
|
||||||
|
|
||||||
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(AmountTestCase, "numerics");
|
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(AmountTestCase, "numerics");
|
||||||
|
|
||||||
void AmountTestCase::setUp()
|
void AmountTestCase::setUp()
|
||||||
|
|
@ -11,7 +9,8 @@ void AmountTestCase::setUp()
|
||||||
// Cause the display precision for dollars to be initialized to 2.
|
// Cause the display precision for dollars to be initialized to 2.
|
||||||
amount_t x1("$1.00");
|
amount_t x1("$1.00");
|
||||||
assertTrue(x1);
|
assertTrue(x1);
|
||||||
amount_t::stream_fullstrings = true; // makes error reports from UnitTests accurate
|
|
||||||
|
amount_t::stream_fullstrings = true; // make reports from UnitTests accurate
|
||||||
}
|
}
|
||||||
|
|
||||||
void AmountTestCase::tearDown()
|
void AmountTestCase::tearDown()
|
||||||
|
|
|
||||||
25
tests/numerics/t_balance.cc
Normal file
25
tests/numerics/t_balance.cc
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
#include "t_balance.h"
|
||||||
|
|
||||||
|
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(BalanceTestCase, "numerics");
|
||||||
|
|
||||||
|
void BalanceTestCase::setUp()
|
||||||
|
{
|
||||||
|
ledger::set_session_context(&session);
|
||||||
|
|
||||||
|
// Cause the display precision for dollars to be initialized to 2.
|
||||||
|
amount_t x1("$1.00");
|
||||||
|
assertTrue(x1);
|
||||||
|
|
||||||
|
amount_t::stream_fullstrings = true; // make reports from UnitTests accurate
|
||||||
|
}
|
||||||
|
|
||||||
|
void BalanceTestCase::tearDown()
|
||||||
|
{
|
||||||
|
amount_t::stream_fullstrings = false;
|
||||||
|
|
||||||
|
ledger::set_session_context();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BalanceTestCase::testConstructors()
|
||||||
|
{
|
||||||
|
}
|
||||||
30
tests/numerics/t_balance.h
Normal file
30
tests/numerics/t_balance.h
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
#ifndef _T_BALANCE_H
|
||||||
|
#define _T_BALANCE_H
|
||||||
|
|
||||||
|
#include "UnitTests.h"
|
||||||
|
|
||||||
|
class BalanceTestCase : public CPPUNIT_NS::TestCase
|
||||||
|
{
|
||||||
|
CPPUNIT_TEST_SUITE(BalanceTestCase);
|
||||||
|
|
||||||
|
CPPUNIT_TEST(testConstructors);
|
||||||
|
|
||||||
|
CPPUNIT_TEST_SUITE_END();
|
||||||
|
|
||||||
|
public:
|
||||||
|
ledger::session_t session;
|
||||||
|
|
||||||
|
BalanceTestCase() {}
|
||||||
|
virtual ~BalanceTestCase() {}
|
||||||
|
|
||||||
|
virtual void setUp();
|
||||||
|
virtual void tearDown();
|
||||||
|
|
||||||
|
void testConstructors();
|
||||||
|
|
||||||
|
private:
|
||||||
|
BalanceTestCase(const BalanceTestCase ©);
|
||||||
|
void operator=(const BalanceTestCase ©);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _T_BALANCE_H
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#include "t_times.h"
|
#include "t_times.h"
|
||||||
|
|
||||||
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(DateTimeTestCase, "numerics");
|
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(DateTimeTestCase, "utility");
|
||||||
|
|
||||||
void DateTimeTestCase::setUp() {}
|
void DateTimeTestCase::setUp() {}
|
||||||
void DateTimeTestCase::tearDown() {}
|
void DateTimeTestCase::tearDown() {}
|
||||||
10
tests/utility/t_utils.cc
Normal file
10
tests/utility/t_utils.cc
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#include "t_utils.h"
|
||||||
|
|
||||||
|
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(UtilitiesTestCase, "utility");
|
||||||
|
|
||||||
|
void UtilitiesTestCase::setUp() {}
|
||||||
|
void UtilitiesTestCase::tearDown() {}
|
||||||
|
|
||||||
|
void UtilitiesTestCase::testConstructors()
|
||||||
|
{
|
||||||
|
}
|
||||||
28
tests/utility/t_utils.h
Normal file
28
tests/utility/t_utils.h
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
#ifndef _T_UTILS_H
|
||||||
|
#define _T_UTILS_H
|
||||||
|
|
||||||
|
#include "UnitTests.h"
|
||||||
|
|
||||||
|
class UtilitiesTestCase : public CPPUNIT_NS::TestCase
|
||||||
|
{
|
||||||
|
CPPUNIT_TEST_SUITE(UtilitiesTestCase);
|
||||||
|
|
||||||
|
CPPUNIT_TEST(testConstructors);
|
||||||
|
|
||||||
|
CPPUNIT_TEST_SUITE_END();
|
||||||
|
|
||||||
|
public:
|
||||||
|
UtilitiesTestCase() {}
|
||||||
|
virtual ~UtilitiesTestCase() {}
|
||||||
|
|
||||||
|
virtual void setUp();
|
||||||
|
virtual void tearDown();
|
||||||
|
|
||||||
|
void testConstructors();
|
||||||
|
|
||||||
|
private:
|
||||||
|
UtilitiesTestCase(const UtilitiesTestCase ©);
|
||||||
|
void operator=(const UtilitiesTestCase ©);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _T_UTILS_H */
|
||||||
Loading…
Add table
Reference in a new issue