Clean up the commodity/currency tests with a better fixture class.

pull/1191/head
John Ralls 7 years ago
parent 52d0ec5290
commit 6df516dfcd

@ -163,6 +163,48 @@ TEST_F(GncOptionTest, test_commodity_ctor)
gnc_commodity_destroy(hpe);
}
class GncOptionCommodityTest : public ::testing::Test
{
protected:
GncOptionCommodityTest() : m_session{gnc_get_current_session()},
m_book{gnc_get_current_book()},
m_table{gnc_commodity_table_new()}
{
/* We can't initialize the commodities with their values because we first must
* set the book's commodity table.
*/
qof_book_set_data(m_book, GNC_COMMODITY_TABLE, m_table);
m_eur = gnc_commodity_new(m_book, "Euro", "ISO4217", "EUR", NULL, 100);
gnc_commodity_table_insert(m_table, m_eur);
m_usd = gnc_commodity_new(m_book, "United States Dollar", "CURRENCY",
"USD", NULL, 100);
gnc_commodity_table_insert(m_table, m_usd);
m_aapl = gnc_commodity_new(m_book, "Apple", "NASDAQ", "AAPL", NULL, 1);
gnc_commodity_table_insert(m_table, m_aapl);
m_hpe = gnc_commodity_new(m_book, "Hewlett Packard", "NYSE", "HPE",
NULL, 1);
gnc_commodity_table_insert(m_table, m_hpe);
}
~GncOptionCommodityTest()
{
gnc_commodity_destroy(m_hpe);
gnc_commodity_destroy(m_aapl);
gnc_commodity_destroy(m_usd);
gnc_commodity_destroy(m_eur);
qof_book_set_data(m_book, GNC_COMMODITY_TABLE, nullptr);
gnc_commodity_table_destroy(m_table);
gnc_clear_current_session();
}
QofSession* m_session;
QofBook* m_book;
gnc_commodity_table * m_table;
gnc_commodity *m_eur;
gnc_commodity *m_usd;
gnc_commodity *m_aapl;
gnc_commodity *m_hpe;
};
static GncOption
make_currency_option (const char* section, const char* name,
const char* key, const char* doc_string,
@ -179,57 +221,37 @@ make_currency_option (const char* section, const char* name,
return option;
}
TEST_F(GncOptionTest, test_currency_ctor)
TEST_F(GncOptionCommodityTest, test_currency_ctor)
{
auto table = gnc_commodity_table_new();
qof_book_set_data(m_book, GNC_COMMODITY_TABLE, table);
auto hpe = gnc_commodity_new(m_book, "Hewlett Packard Enterprise, Inc.",
"NYSE", "HPE", NULL, 1);
EXPECT_THROW({
auto option = make_currency_option("foo", "bar", "baz",
"Phony Option", hpe, false);
"Phony Option", m_hpe, false);
}, std::invalid_argument);
gnc_commodity_destroy(hpe);
auto eur = gnc_commodity_new(m_book, "Euro", "ISO4217", "EUR", NULL, 100);
EXPECT_NO_THROW({
auto option = make_currency_option("foo", "bar", "baz",
"Phony Option", eur, true);
"Phony Option", m_eur, true);
});
gnc_commodity_destroy(eur);
auto usd = gnc_commodity_new(m_book, "United States Dollar",
"CURRENCY", "USD", NULL, 100);
EXPECT_NO_THROW({
auto option = make_currency_option("foo", "bar", "baz",
"Phony Option", usd, true);
"Phony Option", m_usd, true);
});
gnc_commodity_destroy(usd);
qof_book_set_data(m_book, GNC_COMMODITY_TABLE, nullptr);
gnc_commodity_table_destroy(table);
}
TEST_F(GncOptionTest, test_currency_setter)
TEST_F(GncOptionCommodityTest, test_currency_setter)
{
auto table = gnc_commodity_table_new();
qof_book_set_data(m_book, GNC_COMMODITY_TABLE, table);
auto hpe = gnc_commodity_new(m_book, "Hewlett Packard Enterprise, Inc.",
"NYSE", "HPE", NULL, 1);
auto eur = gnc_commodity_new(m_book, "Euro", "ISO4217", "EUR", NULL, 100);
auto option = make_currency_option("foo", "bar", "baz", "Phony Option", eur, true);
auto usd = gnc_commodity_new(m_book, "United States Dollar",
"CURRENCY", "USD", NULL, 100);
auto option = make_currency_option("foo", "bar", "baz", "Phony Option", m_eur, true);
EXPECT_NO_THROW({
option.set_value(QOF_INSTANCE(usd));
option.set_value(QOF_INSTANCE(m_usd));
});
EXPECT_PRED2(gnc_commodity_equal, usd, GNC_COMMODITY(option.get_value<QofInstance*>()));
EXPECT_PRED2(gnc_commodity_equal, m_usd,
GNC_COMMODITY(option.get_value<QofInstance*>()));
EXPECT_THROW({
option.set_value(QOF_INSTANCE(hpe));
option.set_value(QOF_INSTANCE(m_hpe));
}, std::invalid_argument);
EXPECT_PRED2(gnc_commodity_equal, usd, GNC_COMMODITY(option.get_value<QofInstance*>()));
gnc_commodity_destroy(hpe);
gnc_commodity_destroy(usd);
gnc_commodity_destroy(eur);
qof_book_set_data(m_book, GNC_COMMODITY_TABLE, nullptr);
gnc_commodity_table_destroy(table);
EXPECT_PRED2(gnc_commodity_equal, m_usd,
GNC_COMMODITY(option.get_value<QofInstance*>()));
}
}
TEST_F(GncOptionTest, test_qofinstance_out)

Loading…
Cancel
Save