[stock-txn-asst] Change structs to classes.

With private data members, replacing direct member access with
accessor functions and refactoring functionality away from the
Model, View, and Controller container classes to the classes
that own the members.

This removes the need for RTTI inspection as regular virtual
function dispatch accounts for differences in Entry classes.
This commit is contained in:
John Ralls 2023-08-31 11:41:29 -07:00
parent 58c4d5f0ca
commit 4ff0ac383a
2 changed files with 378 additions and 263 deletions

File diff suppressed because it is too large Load Diff

View File

@ -166,24 +166,22 @@ StockAssistantTest::StockAssistantTest() :
void
StockAssistantTest::instantiate_model(StockAssistantModel &model, const ASTTestCase &t)
{
model.m_transaction_date = gnc_dmy2time64 (t.dd, t.mm, t.yy);
model.set_transaction_date(gnc_dmy2time64 (t.dd, t.mm, t.yy));
model.maybe_reset_txn_types ();
auto fees_entry = dynamic_cast<StockTransactionFeesEntry*>(model.m_fees_entry.get());
auto stock_entry = dynamic_cast<StockTransactionStockEntry*>(model.m_stock_entry.get());
model.set_txn_type (t.type_idx);
model.m_transaction_description = t.desc;
stock_entry->set_amount(gnc_numeric_create (t.stock_amt, 1));
model.m_stock_entry->set_value(gnc_numeric_create (t.stock_val, 100));
model.m_cash_entry->set_value(gnc_numeric_create (t.cash_val, 100));
model.m_cash_entry->m_account = cash_account;
model.m_fees_entry->m_account = fees_account;
fees_entry->m_capitalize = t.capitalize;
model.m_fees_entry->set_value(gnc_numeric_create (t.fees_val, 100));
model.m_capgains_entry->m_account = capgains_account;
model.m_capgains_entry->set_value(gnc_numeric_create (t.capg_val, 100));
model.m_dividend_entry->m_account = dividend_account;
model.m_dividend_entry->set_value(gnc_numeric_create (t.divi_val, 100));
model.set_transaction_desc(t.desc);
model.stock_entry()->set_amount(gnc_numeric_create (t.stock_amt, 1));
model.stock_entry()->set_value(gnc_numeric_create (t.stock_val, 100));
model.cash_entry()->set_value(gnc_numeric_create (t.cash_val, 100));
model.cash_entry()->set_account(cash_account);
model.fees_entry()->set_account(fees_account);
model.fees_entry()->set_capitalize(t.capitalize);
model.fees_entry()->set_value(gnc_numeric_create (t.fees_val, 100));
model.capgains_entry()->set_account(capgains_account);
model.capgains_entry()->set_value(gnc_numeric_create (t.capg_val, 100));
model.dividend_entry()->set_account(dividend_account);
model.dividend_entry()->set_value(gnc_numeric_create (t.divi_val, 100));
}
class StockAssistantTestParameterized :
@ -204,7 +202,7 @@ protected:
TEST_F(StockAssistantTest, testFailureModes)
{
StockAssistantModel model (stock_account);
model.m_transaction_date = gnc_dmy2time64 (1, 1, 2022);
model.set_transaction_date(gnc_dmy2time64 (1, 1, 2022));
// resetting txn_types will work the first time
EXPECT_TRUE (model.maybe_reset_txn_types ());
@ -213,7 +211,7 @@ TEST_F(StockAssistantTest, testFailureModes)
EXPECT_FALSE (model.maybe_reset_txn_types ());
// set transaction-date to a different date.
model.m_transaction_date = gnc_dmy2time64 (1, 2, 2022);
model.set_transaction_date(gnc_dmy2time64 (1, 2, 2022));
// resetting txn_types will now work.
EXPECT_TRUE (model.maybe_reset_txn_types ());