gnucash maint: [utest-Budget] test data retention when modifying budget num_periods
Christopher Lam
clam at code.gnucash.org
Sun Jan 16 20:34:41 EST 2022
Updated via https://github.com/Gnucash/gnucash/commit/ef8d812d (commit)
from https://github.com/Gnucash/gnucash/commit/b8602409 (commit)
commit ef8d812d3fb14e3b63e3f584598738a12ce2bc7f
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Mon Jan 17 09:20:30 2022 +0800
[utest-Budget] test data retention when modifying budget num_periods
diff --git a/libgnucash/engine/test/utest-Budget.c b/libgnucash/engine/test/utest-Budget.c
index cd4bab39b..7e8a2d94a 100644
--- a/libgnucash/engine/test/utest-Budget.c
+++ b/libgnucash/engine/test/utest-Budget.c
@@ -70,6 +70,42 @@ test_gnc_set_budget_num_periods()
qof_book_destroy(book);
}
+/* the following test checks whether period values are retained when
+ the budget num_periods is reduced, then increased again */
+static void
+test_gnc_set_budget_num_periods_data_retention ()
+{
+ QofBook *book = qof_book_new();
+ GncBudget* budget = gnc_budget_new(book);
+ Account *acc = gnc_account_create_root(book);
+ gchar *note;
+
+ /* initially has 20 periods */
+ gnc_budget_set_num_periods(budget, 20);
+
+ /* create value at period 16 */
+ gnc_budget_set_account_period_value(budget, acc, 15, gnc_numeric_create(100,1));
+ g_assert (gnc_budget_is_account_period_value_set(budget, acc, 15));
+
+ /* create note at period 12 */
+ gnc_budget_set_account_period_note(budget, acc, 11, "undefined");
+ g_assert_cmpstr (gnc_budget_get_account_period_note (budget, acc, 11), ==,
+ "undefined");
+
+ /* reduce, and increase */
+ gnc_budget_set_num_periods(budget, 10);
+ gnc_budget_set_num_periods(budget, 20);
+
+ /* value and note are retained */
+ g_assert (gnc_budget_is_account_period_value_set(budget, acc, 15));
+ note = gnc_budget_get_account_period_note (budget, acc, 11);
+ g_assert_cmpstr (note, ==, "undefined");
+ g_free (note);
+
+ gnc_budget_destroy(budget);
+ qof_book_destroy(book);
+}
+
static void
test_gnc_set_budget_recurrence()
{
@@ -163,6 +199,7 @@ test_suite_budget(void)
GNC_TEST_ADD_FUNC(suitename, "gnc_budget_set_name()", test_gnc_set_budget_name);
GNC_TEST_ADD_FUNC(suitename, "gnc_budget_set_description()", test_gnc_set_budget_description);
GNC_TEST_ADD_FUNC(suitename, "gnc_budget_set_num_periods()", test_gnc_set_budget_num_periods);
+ GNC_TEST_ADD_FUNC(suitename, "gnc_budget_set_num_periods_data_retention()", test_gnc_set_budget_num_periods_data_retention);
GNC_TEST_ADD_FUNC(suitename, "gnc_budget_set_recurrence()", test_gnc_set_budget_recurrence);
GNC_TEST_ADD_FUNC(suitename, "gnc_budget_set_account_period_value()", test_gnc_set_budget_account_period_value);
Summary of changes:
libgnucash/engine/test/utest-Budget.c | 37 +++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
More information about the gnucash-changes
mailing list