diff --git a/include/core/database.h b/include/core/database.h index 63c84916..0510e8d5 100644 --- a/include/core/database.h +++ b/include/core/database.h @@ -77,6 +77,16 @@ struct database { const struct db_ops *db_ops; /* The database's operations vector. */ }; +#define DB_INIT(fname, autosave, ops) \ + { \ + .db_size = 0, \ + .db_autosave = autosave, \ + .db_file = FILE_INIT(fname, 0), \ + .db_entries = g_ptr_array_new(), \ + .db_keys = g_hash_table_new(g_str_hash, g_str_equal), \ + .db_ops = ops, \ + } + /* * Initialize a database using filepath as a location on disk to store data diff --git a/tests/core/database.c b/tests/core/database.c index 2edc748b..cfec0b30 100644 --- a/tests/core/database.c +++ b/tests/core/database.c @@ -106,9 +106,7 @@ static void test_db_entry() static void test_init() { - struct database db; - - db_init(&db, "init.db", false, &int_ops); + struct database db = DB_INIT("init.db", false, &int_ops); /* Check initial sizes. */ test_equal(db.db_entries->len, 0); @@ -126,9 +124,9 @@ static void test_init() static void test_stress(unsigned int N) { + struct database db = DB_INIT("stress.db", false, &int_ops);; struct db_entry *dbe, *next; struct int_entry rmv; - struct database db; GPtrArray *ptrs; unsigned int i; gchar *key; @@ -137,7 +135,6 @@ static void test_stress(unsigned int N) rmv.ie_dbe.dbe_index = 0; test_free_count = 0; test_setup_count = 0; - db_init(&db, "stress.db", false, &int_ops); ptrs = g_ptr_array_new(); /* db_insert() */ @@ -240,14 +237,12 @@ static void test_stress_100K() { test_stress(100000); } static void test_save_load() { + struct database db1 = DB_INIT("save_load.db", true, &int_ops); + struct database db2 = DB_INIT("save_load.db", false, &int_ops); struct db_entry *dbe, *next; const unsigned int N = 10; - struct database db1, db2; unsigned int i; - db_init(&db1, "save_load.db", true, &int_ops); - db_init(&db2, "save_load.db", false, &int_ops); - /* 10 items should "autosave" when inserted */ for (i = 0; i < N; i++) db_insert(&db1, &__int_alloc(i)->ie_dbe);