gtest-gnc-quotes.cpp (gnucash-5.0.tar.bz2) | : | gtest-gnc-quotes.cpp (gnucash-5.1.tar.bz2) | ||
---|---|---|---|---|
skipping to change at line 93 | skipping to change at line 93 | |||
return {1, m_quotes, m_errors}; | return {1, m_quotes, m_errors}; | |||
} | } | |||
class GncQuotesTest : public ::testing::Test | class GncQuotesTest : public ::testing::Test | |||
{ | { | |||
protected: | protected: | |||
GncQuotesTest() : m_session{gnc_get_current_session()}, | GncQuotesTest() : m_session{gnc_get_current_session()}, | |||
m_book{qof_session_get_book(gnc_get_current_session())} | m_book{qof_session_get_book(gnc_get_current_session())} | |||
{ | { | |||
qof_init(); | qof_init(); | |||
gnc_commodity_table_register(); | ||||
gnc_pricedb_register(); | /* By setting an empty commodity table on the book before registering | |||
* the commodity_table type we avoid adding the default commodities */ | ||||
auto comm_table{gnc_commodity_table_new()}; | auto comm_table{gnc_commodity_table_new()}; | |||
qof_book_set_data(m_book, GNC_COMMODITY_TABLE, comm_table); | qof_book_set_data(m_book, GNC_COMMODITY_TABLE, comm_table); | |||
gnc_commodity_table_register(); | ||||
gnc_pricedb_register(); | ||||
auto eur = gnc_commodity_new(m_book, "Euro", "ISO4217", "EUR", NULL, 100 ); | auto eur = gnc_commodity_new(m_book, "Euro", "ISO4217", "EUR", NULL, 100 ); | |||
auto source{gnc_quote_source_lookup_by_internal("currency")}; | auto source{gnc_quote_source_lookup_by_internal("currency")}; | |||
gnc_commodity_begin_edit(eur); | gnc_commodity_begin_edit(eur); | |||
gnc_commodity_set_quote_flag(eur, TRUE); | gnc_commodity_set_quote_flag(eur, TRUE); | |||
gnc_commodity_set_quote_source(eur, source); | gnc_commodity_set_quote_source(eur, source); | |||
gnc_commodity_commit_edit(eur); | gnc_commodity_commit_edit(eur); | |||
gnc_commodity_table_insert(comm_table, eur); | gnc_commodity_table_insert(comm_table, eur); | |||
auto usd = gnc_commodity_new(m_book, "United States Dollar", "CURRENCY", | auto usd = gnc_commodity_new(m_book, "United States Dollar", "CURRENCY", | |||
"USD", NULL, 100); | "USD", NULL, 100); | |||
gnc_commodity_table_insert(comm_table, usd); | gnc_commodity_table_insert(comm_table, usd); | |||
source = gnc_quote_source_lookup_by_internal("yahoo_json"); | source = gnc_quote_source_lookup_by_internal("yahoo_json"); | |||
auto aapl = gnc_commodity_new(m_book, "Apple", "NASDAQ", "AAPL", NULL, 1 ); | auto aapl = gnc_commodity_new(m_book, "Apple", "NASDAQ", "AAPL", NULL, 1 ); | |||
gnc_commodity_begin_edit(aapl); | gnc_commodity_begin_edit(aapl); | |||
gnc_commodity_set_quote_flag(aapl, TRUE); | gnc_commodity_set_quote_flag(aapl, TRUE); | |||
gnc_commodity_set_quote_source(aapl, source); | gnc_commodity_set_quote_source(aapl, source); | |||
gnc_commodity_commit_edit(aapl); | gnc_commodity_commit_edit(aapl); | |||
gnc_commodity_table_insert(comm_table, aapl); | gnc_commodity_table_insert(comm_table, aapl); | |||
auto hpe = gnc_commodity_new(m_book, "Hewlett Packard", "NYSE", "HPE", | auto hpe = gnc_commodity_new(m_book, "Hewlett Packard", "NYSE", "HPE", N | |||
NULL, 1); | ULL, 1); | |||
gnc_commodity_begin_edit(hpe); | gnc_commodity_begin_edit(hpe); | |||
gnc_commodity_set_quote_flag(hpe, TRUE); | gnc_commodity_set_quote_flag(hpe, TRUE); | |||
gnc_commodity_set_quote_source(hpe, source); | gnc_commodity_set_quote_source(hpe, source); | |||
gnc_commodity_commit_edit(hpe); | gnc_commodity_commit_edit(hpe); | |||
gnc_commodity_table_insert(comm_table, hpe); | gnc_commodity_table_insert(comm_table, hpe); | |||
auto fkcm = gnc_commodity_new(m_book, "Fake Company", "NASDAQ", "FKCM", NULL, 1); | auto fkcm = gnc_commodity_new(m_book, "Fake Company", "NASDAQ", "FKCM", NULL, 1); | |||
gnc_commodity_begin_edit(fkcm); | gnc_commodity_begin_edit(fkcm); | |||
gnc_commodity_set_quote_flag(fkcm, TRUE); | gnc_commodity_set_quote_flag(fkcm, TRUE); | |||
gnc_commodity_set_quote_source(fkcm, source); | gnc_commodity_set_quote_source(fkcm, source); | |||
gnc_commodity_commit_edit(fkcm); | gnc_commodity_commit_edit(fkcm); | |||
gnc_commodity_table_insert(comm_table, fkcm); | gnc_commodity_table_insert(comm_table, fkcm); | |||
gnc_quote_source_set_fq_installed("TestSuite", g_list_prepend(nullptr, ( | GList *sources = g_list_prepend(nullptr, (void*)"yahoo_json"); | |||
void*)"yahoo_json")); | gnc_quote_source_set_fq_installed("TestSuite", sources); | |||
g_list_free(sources); | ||||
} | } | |||
~GncQuotesTest() { | ~GncQuotesTest() { | |||
gnc_clear_current_session(); | gnc_clear_current_session(); | |||
qof_close(); | ||||
} | } | |||
QofSession* m_session; | QofSession* m_session; | |||
QofBook* m_book; | QofBook* m_book; | |||
}; | }; | |||
TEST_F(GncQuotesTest, quote_sources) | TEST_F(GncQuotesTest, quote_sources) | |||
{ | { | |||
auto qs_cur{gnc_quote_source_lookup_by_internal("currency")}; | auto qs_cur{gnc_quote_source_lookup_by_internal("currency")}; | |||
auto qs_yahoo{gnc_quote_source_lookup_by_internal("yahoo_json")}; | auto qs_yahoo{gnc_quote_source_lookup_by_internal("yahoo_json")}; | |||
skipping to change at line 272 | skipping to change at line 278 | |||
auto price{gnc_pricedb_lookup_latest(pricedb, hpe, usd)}; | auto price{gnc_pricedb_lookup_latest(pricedb, hpe, usd)}; | |||
auto datetime{static_cast<time64>(GncDateTime("20220901160000"))}; | auto datetime{static_cast<time64>(GncDateTime("20220901160000"))}; | |||
EXPECT_EQ(usd, gnc_price_get_currency(price)); | EXPECT_EQ(usd, gnc_price_get_currency(price)); | |||
EXPECT_EQ(datetime, gnc_price_get_time64(price)); | EXPECT_EQ(datetime, gnc_price_get_time64(price)); | |||
EXPECT_EQ(PRICE_SOURCE_FQ, gnc_price_get_source(price)); | EXPECT_EQ(PRICE_SOURCE_FQ, gnc_price_get_source(price)); | |||
EXPECT_TRUE(gnc_numeric_equal(GncNumeric{1337, 100}, | EXPECT_TRUE(gnc_numeric_equal(GncNumeric{1337, 100}, | |||
gnc_price_get_value(price))); | gnc_price_get_value(price))); | |||
EXPECT_STREQ("Finance::Quote", gnc_price_get_source_string(price)); | EXPECT_STREQ("Finance::Quote", gnc_price_get_source_string(price)); | |||
EXPECT_STREQ("last", gnc_price_get_typestr(price)); | EXPECT_STREQ("last", gnc_price_get_typestr(price)); | |||
gnc_price_unref(price); | ||||
} | } | |||
TEST_F(GncQuotesTest, fetch_one_currency) | TEST_F(GncQuotesTest, fetch_one_currency) | |||
{ | { | |||
StrVec quote_vec{ | StrVec quote_vec{ | |||
"{" | "{" | |||
"\"EUR\":{\"symbol\":\"EUR\",\"currency\":\"USD\",\"success\":\"1\",\"i nverted\":0,\"last\":1.0004}" | "\"EUR\":{\"symbol\":\"EUR\",\"currency\":\"USD\",\"success\":\"1\",\"i nverted\":0,\"last\":1.0004}" | |||
"}" | "}" | |||
}; | }; | |||
StrVec err_vec; | StrVec err_vec; | |||
skipping to change at line 302 | skipping to change at line 309 | |||
auto datetime{static_cast<time64>(GncDateTime())}; | auto datetime{static_cast<time64>(GncDateTime())}; | |||
EXPECT_EQ(usd, gnc_price_get_currency(price)); | EXPECT_EQ(usd, gnc_price_get_currency(price)); | |||
EXPECT_EQ(datetime, gnc_price_get_time64(price)); | EXPECT_EQ(datetime, gnc_price_get_time64(price)); | |||
EXPECT_EQ(PRICE_SOURCE_FQ, gnc_price_get_source(price)); | EXPECT_EQ(PRICE_SOURCE_FQ, gnc_price_get_source(price)); | |||
EXPECT_EQ(10004, gnc_price_get_value(price).num); | EXPECT_EQ(10004, gnc_price_get_value(price).num); | |||
EXPECT_TRUE(gnc_numeric_equal(GncNumeric{10004, 10000}, | EXPECT_TRUE(gnc_numeric_equal(GncNumeric{10004, 10000}, | |||
gnc_price_get_value(price))); | gnc_price_get_value(price))); | |||
EXPECT_STREQ("Finance::Quote", gnc_price_get_source_string(price)); | EXPECT_STREQ("Finance::Quote", gnc_price_get_source_string(price)); | |||
EXPECT_STREQ("last", gnc_price_get_typestr(price)); | EXPECT_STREQ("last", gnc_price_get_typestr(price)); | |||
gnc_price_unref(price); | ||||
} | } | |||
TEST_F(GncQuotesTest, no_currency) | TEST_F(GncQuotesTest, no_currency) | |||
{ | { | |||
StrVec quote_vec{ | StrVec quote_vec{ | |||
"{" | "{" | |||
"\"HPE\":{\"date\":\"09/01/2022\",\"last\":13.37,\"success\":1}" | "\"HPE\":{\"date\":\"09/01/2022\",\"last\":13.37,\"success\":1}" | |||
"}" | "}" | |||
}; | }; | |||
StrVec err_vec; | StrVec err_vec; | |||
skipping to change at line 368 | skipping to change at line 376 | |||
auto price{gnc_pricedb_lookup_latest(pricedb, hpe, usd)}; | auto price{gnc_pricedb_lookup_latest(pricedb, hpe, usd)}; | |||
auto datetime{static_cast<time64>(GncDateTime())}; | auto datetime{static_cast<time64>(GncDateTime())}; | |||
EXPECT_EQ(usd, gnc_price_get_currency(price)); | EXPECT_EQ(usd, gnc_price_get_currency(price)); | |||
EXPECT_EQ(datetime, gnc_price_get_time64(price)); | EXPECT_EQ(datetime, gnc_price_get_time64(price)); | |||
EXPECT_EQ(PRICE_SOURCE_FQ, gnc_price_get_source(price)); | EXPECT_EQ(PRICE_SOURCE_FQ, gnc_price_get_source(price)); | |||
EXPECT_TRUE(gnc_numeric_equal(GncNumeric{1337, 100}, | EXPECT_TRUE(gnc_numeric_equal(GncNumeric{1337, 100}, | |||
gnc_price_get_value(price))); | gnc_price_get_value(price))); | |||
EXPECT_STREQ("Finance::Quote", gnc_price_get_source_string(price)); | EXPECT_STREQ("Finance::Quote", gnc_price_get_source_string(price)); | |||
EXPECT_STREQ("last", gnc_price_get_typestr(price)); | EXPECT_STREQ("last", gnc_price_get_typestr(price)); | |||
gnc_price_unref(price); | ||||
} | } | |||
TEST_F(GncQuotesTest, test_version) | TEST_F(GncQuotesTest, test_version) | |||
{ | { | |||
StrVec quote_vec, err_vec; | StrVec quote_vec, err_vec; | |||
GncQuotesImpl quotes(m_book, std::make_unique<GncMockQuoteSource>(std::move( quote_vec), std::move(err_vec))); | GncQuotesImpl quotes(m_book, std::make_unique<GncMockQuoteSource>(std::move( quote_vec), std::move(err_vec))); | |||
EXPECT_STREQ("9.99", quotes.version().c_str()); | EXPECT_STREQ("9.99", quotes.version().c_str()); | |||
} | } | |||
TEST_F(GncQuotesTest, test_failure_invalid_json) | TEST_F(GncQuotesTest, test_failure_invalid_json) | |||
End of changes. 9 change blocks. | ||||
8 lines changed or deleted | 18 lines changed or added |