void AccountBalanceTest::MixedTimeBalance() { Account account; account.AddTransaction(t_Transaction_ptr(new Transaction(100, 1))); CPPUNIT_ASSERT_DOUBLES_EQUAL(1, account.StrikeBalance(), 0.01); account.AddTransaction(t_Transaction_ptr(new Transaction(1000, 1))); CPPUNIT_ASSERT_DOUBLES_EQUAL(2, account.StrikeBalance(), 0.01); account.AddTransaction(t_Transaction_ptr(new Transaction(2000, 1))); CPPUNIT_ASSERT_DOUBLES_EQUAL(3, account.StrikeBalance(), 0.01); account.AddTransaction(t_Transaction_ptr(new Transaction(500, 1))); CPPUNIT_ASSERT_DOUBLES_EQUAL(4, account.StrikeBalance(), 0.01); account.AddTransaction(t_Transaction_ptr(new Transaction(1, 1))); CPPUNIT_ASSERT_DOUBLES_EQUAL(5, account.StrikeBalance(), 0.01); account.AddTransaction(t_Transaction_ptr(new Transaction(3000, 1))); CPPUNIT_ASSERT_DOUBLES_EQUAL(6, account.StrikeBalance(), 0.01); account.AddTransaction(t_Transaction_ptr(new Transaction(6, 1))); CPPUNIT_ASSERT_DOUBLES_EQUAL(7, account.StrikeBalance(), 0.01); account.AddTransaction(t_Transaction_ptr(new Transaction(4500, 1))); CPPUNIT_ASSERT_DOUBLES_EQUAL(8, account.StrikeBalance(), 0.01); account.AddTransaction(t_Transaction_ptr(new Transaction(1, 1))); CPPUNIT_ASSERT_DOUBLES_EQUAL(9, account.StrikeBalance(), 0.01); account.AddTransaction(t_Transaction_ptr(new Transaction(3001, 1))); CPPUNIT_ASSERT_DOUBLES_EQUAL(10, account.StrikeBalance(), 0.01); }
void AccountBalanceTest::LinearBalance() { Account account; account.AddTransaction(t_Transaction_ptr(new Transaction(0, 1))); CPPUNIT_ASSERT_DOUBLES_EQUAL(1, account.StrikeBalance(), 0.01); account.AddTransaction(t_Transaction_ptr(new Transaction(0, 3))); CPPUNIT_ASSERT_DOUBLES_EQUAL(4, account.StrikeBalance(), 0.01); account.AddTransaction(t_Transaction_ptr(new Transaction(50, -45.1f))); CPPUNIT_ASSERT_DOUBLES_EQUAL(-41.10, account.StrikeBalance(), 0.01); account.AddTransaction(t_Transaction_ptr(new Transaction(52, 457.5))); CPPUNIT_ASSERT_DOUBLES_EQUAL(416.40, account.StrikeBalance(), 0.01); }
void AccountBalanceTest::DuplicatedTransaction() { Account account; t_Transaction_ptr pTransaction(new Transaction(1, 2)); account.AddTransaction(pTransaction); account.AddTransaction(pTransaction); CPPUNIT_ASSERT(pTransaction->GetParent() != pTransaction); CPPUNIT_ASSERT_DOUBLES_EQUAL(2, account.StrikeBalance(), 0.01); }