diff --git a/libgnucash/app-utils/gnc-optiondb.hpp b/libgnucash/app-utils/gnc-optiondb.hpp index 72dfe0ed0c..293dc0f638 100644 --- a/libgnucash/app-utils/gnc-optiondb.hpp +++ b/libgnucash/app-utils/gnc-optiondb.hpp @@ -63,6 +63,7 @@ private: std::function m_set_ui_value; }; +using GncOptionDBPtr = std::unique_ptr; /** * Create an empty option database. * @@ -70,33 +71,29 @@ private: * that for Guile. * @return A newly allocated GncOptionDB. Use delete to destroy it. */ -GncOptionDB *gnc_option_db_new(void); +GncOptionDBPtr gnc_option_db_new(void); -void gnc_register_string_option(GncOptionDB* db, const char* section, +void gnc_register_string_option(const GncOptionDBPtr& db, const char* section, const char* name, const char* key, const char* doc_string, std::string value); - -void gnc_register_string_option(GncOptionDB* db, const char* section, +void gnc_register_text_option(const GncOptionDBPtr& db, const char* section, const char* name, const char* key, const char* doc_string, std::string value); -void gnc_register_text_option(GncOptionDB* db, const char* section, - const char* name, const char* key, - const char* doc_string, std::string value); - -void gnc_register_budget_option(GncOptionDB* db, const char* section, +void gnc_register_budget_option(const GncOptionDBPtr& db, const char* section, const char* name, const char* key, const char* doc_string, GncBudget* value); -void gnc_register_commodity_option(GncOptionDB* db, const char* section, +void gnc_register_commodity_option(const GncOptionDBPtr& db, const char* section, const char* name, const char* key, const char* doc_string, gnc_commodity* value); -void gnc_register_currency_option(GncOptionDB* db, const char* section, +void gnc_register_currency_option(const GncOptionDBPtr& db, const char* section, const char* name, const char* key, const char* doc_string, gnc_commodity* value); + #endif //GNC_OPTIONDB_HPP_ diff --git a/libgnucash/app-utils/test/gtest-gnc-optiondb.cpp b/libgnucash/app-utils/test/gtest-gnc-optiondb.cpp index a09659fde7..e65629ee2b 100644 --- a/libgnucash/app-utils/test/gtest-gnc-optiondb.cpp +++ b/libgnucash/app-utils/test/gtest-gnc-optiondb.cpp @@ -24,44 +24,47 @@ #include #include -TEST(GncOptionDB, test_ctor) +class GncOptionDBTest : public ::testing::Test +{ +protected: + GncOptionDBTest() : m_db{gnc_option_db_new()} {} + + GncOptionDBPtr m_db; +}; + +TEST_F(GncOptionDBTest, test_ctor) { EXPECT_NO_THROW ({ GncOptionDB optiondb; }); } -TEST(GncOptionDB, test_register_option) +TEST_F(GncOptionDBTest, test_register_option) { - GncOptionDB optiondb; GncOption option1{"foo", "bar", "baz", "Phony Option", std::string{"waldo"}}; - optiondb.register_option("foo", std::move(option1)); - EXPECT_EQ(optiondb.num_sections(), 1); + m_db->register_option("foo", std::move(option1)); + EXPECT_EQ(m_db->num_sections(), 1); } -TEST(GncOptionDB, test_lookup_string_option) +TEST_F(GncOptionDBTest, test_lookup_string_option) { - GncOptionDB optiondb; GncOption option1{"foo", "bar", "baz", "Phony Option", std::string{"waldo"}}; - optiondb.register_option("foo", std::move(option1)); - EXPECT_STREQ("waldo", optiondb.lookup_string_option("foo", "bar").c_str()); + m_db->register_option("foo", std::move(option1)); + EXPECT_STREQ("waldo", m_db->lookup_string_option("foo", "bar").c_str()); } -TEST(GncOptionDB, test_unregister_option) +TEST_F(GncOptionDBTest, test_unregister_option) { - GncOptionDB optiondb; GncOption option1{"foo", "bar", "baz", "Phony Option", std::string{"waldo"}}; - optiondb.register_option("foo", std::move(option1)); - optiondb.unregister_option("foo", "bar"); - EXPECT_TRUE(optiondb.lookup_string_option("foo", "bar").empty()); + m_db->register_option("foo", std::move(option1)); + m_db->unregister_option("foo", "bar"); + EXPECT_TRUE(m_db->lookup_string_option("foo", "bar").empty()); } -TEST(GncOptionDB, test_register_string_option) +TEST_F(GncOptionDBTest, test_register_string_option) { - GncOptionDB* db = gnc_option_db_new(); - gnc_register_string_option(db, "foo", "bar", "baz", "Phony Option", + gnc_register_string_option(m_db, "foo", "bar", "baz", "Phony Option", std::string{"waldo"}); - EXPECT_STREQ("waldo", db->lookup_string_option("foo", "bar").c_str()); - delete db; + EXPECT_STREQ("waldo", m_db->lookup_string_option("foo", "bar").c_str()); }