summaryrefslogtreecommitdiff
path: root/test/unit
diff options
context:
space:
mode:
authortripun <tripun@gmail.com>2014-08-18 00:44:50 +0530
committertripun <tripun@gmail.com>2014-08-18 00:44:50 +0530
commit90f2ca8049b483d6641cc3c86879b3aa88b9f431 (patch)
treebf4752e38cdce768448f30344bc8b4804eafdc9d /test/unit
parent1834ba568a8d743684e75f29fc644e5342b22b7f (diff)
downloadfork-ledger-90f2ca8049b483d6641cc3c86879b3aa88b9f431.tar.gz
fork-ledger-90f2ca8049b483d6641cc3c86879b3aa88b9f431.tar.bz2
fork-ledger-90f2ca8049b483d6641cc3c86879b3aa88b9f431.zip
add Multiplication unit test for value
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/t_value.cc79
1 files changed, 79 insertions, 0 deletions
diff --git a/test/unit/t_value.cc b/test/unit/t_value.cc
index d884730e..a662f786 100644
--- a/test/unit/t_value.cc
+++ b/test/unit/t_value.cc
@@ -362,5 +362,84 @@ BOOST_AUTO_TEST_CASE(testSubtraction)
BOOST_CHECK(v20.valid());
}
+BOOST_AUTO_TEST_CASE(testMultiplication)
+{
+ struct tm localtime;
+ strptime("10 February 2010 00:00:00", "%d %b %Y %H:%M:%S", &localtime);
+ time_t time_var = mktime(&localtime);
+
+ value_t v1;
+ value_t v2(true);
+ value_t v3(boost::posix_time::from_time_t(time_var));
+ value_t v4(date_t(parse_date("2014/08/14")));
+ value_t v5(2L);
+ value_t v6(2UL);
+ value_t v7(1.00);
+ value_t v8(amount_t("4 GBP"));
+ value_t v9(balance_t("4 GBP"));
+ value_t v10(mask_t("regex"));
+ value_t v11(new value_t::sequence_t());
+ value_t v12(string("$1"));
+ value_t v13("2 CAD");
+ value_t v14("comment", true);
+ value_t v15(string("comment"), true);
+ value_t v16(amount_t("2"));
+
+ v14 *= value_t(2L);
+ BOOST_CHECK_EQUAL(v14, value_t(string("commentcomment"), true));
+
+ v5 *= value_t(2L);
+ BOOST_CHECK_EQUAL(v5, value_t(4L));
+ v5 *= value_t(amount_t("2"));
+ BOOST_CHECK_EQUAL(v5, value_t(amount_t("8")));
+
+ v16 *= value_t(2L);
+ v16 *= value_t(amount_t("2"));
+ BOOST_CHECK_EQUAL(v5, v16);
+
+ v8 *= v9;
+ BOOST_CHECK_EQUAL(v8, value_t("16 GBP"));
+
+ value_t v17(v9);
+ v9 *= value_t(2L);
+ BOOST_CHECK_EQUAL(v9, value_t("8 GBP"));
+ v17 += value_t(2L);
+ v17 *= value_t(2L);
+ value_t v18("8 GBP");
+ v18 += value_t(4L);
+ BOOST_CHECK_EQUAL(v17, v18);
+
+ value_t v20(new value_t::sequence_t());
+ v11.push_back(value_t(2L));
+ v11.push_back(value_t("4 GBP"));
+ v20.push_back(value_t(2L));
+ v20 += value_t("4 GBP");
+ v20.push_back(value_t(2L));
+ v20 += value_t("4 GBP");
+ v11 *= value_t(2L);
+ BOOST_CHECK_EQUAL(v11, v20);
+
+ BOOST_CHECK_THROW(v10 += v8, value_error);
+ BOOST_CHECK(v1.valid());
+ BOOST_CHECK(v2.valid());
+ BOOST_CHECK(v3.valid());
+ BOOST_CHECK(v4.valid());
+ BOOST_CHECK(v5.valid());
+ BOOST_CHECK(v6.valid());
+ BOOST_CHECK(v7.valid());
+ BOOST_CHECK(v8.valid());
+ BOOST_CHECK(v9.valid());
+ BOOST_CHECK(v10.valid());
+ BOOST_CHECK(v11.valid());
+ BOOST_CHECK(v12.valid());
+ BOOST_CHECK(v13.valid());
+ BOOST_CHECK(v14.valid());
+ BOOST_CHECK(v15.valid());
+ BOOST_CHECK(v16.valid());
+ BOOST_CHECK(v17.valid());
+ BOOST_CHECK(v18.valid());
+ BOOST_CHECK(v20.valid());
+}
+
BOOST_AUTO_TEST_SUITE_END()