gnucash/libgnucash/engine/test/test-qof-string-cache.c
Richard Cohen 66c5e398ae Change g_assert() -> g_assert_true() in tests
g_assert() can be compiled out, so should not be used for tests

g_assert_true was removed
to fis https://bugs.gnucash.org/show_bug.cgi?id=792008 because
g_assert_true was introduced in glib-2.38 and at the time GnuCash required
only glib-2.26. GnuCash has required glib >= 2.40 since 8acbc41c6 so
g_assert_true can be restored.
2023-07-16 10:09:12 -07:00

85 lines
3.3 KiB
C

/********************************************************************
* test-qof-string-cache.c: GLib g_test test suite for string cache *
* functions *
* Copyright 2011 Christian Stimming *
* Copyright 2011 John Ralls <jralls@ceridwen.us> *
* Copyright 2012 Phil Longstaff <phil.longstaff@yahoo.ca> *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation; either version 2 of *
* the License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License*
* along with this program; if not, contact: *
* *
* Free Software Foundation Voice: +1-617-542-5942 *
* 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
* Boston, MA 02110-1301, USA gnu@gnu.org *
\********************************************************************/
#include <config.h>
#include <string.h>
#include <glib.h>
#include <unittest-support.h>
#include "qof.h"
static const gchar *suitename = "/qof/qof-string-cache";
void test_suite_qof_string_cache ( void );
typedef struct
{
} Fixture;
G_GNUC_UNUSED static void
setup( Fixture *fixture, gconstpointer pData )
{
qof_string_cache_init();
}
G_GNUC_UNUSED static void
teardown( Fixture *fixture, gconstpointer pData )
{
qof_string_cache_destroy();
}
static void
test_qof_string_cache( void )
{
/* Strings added to the cache should always return the same string address
* as long as the refcount > 0. */
gchar str[100];
const gchar* str1_1;
const gchar* str1_2;
const gchar* str1_3;
const gchar* str1_4;
strncpy(str, "str1", sizeof(str));
str1_1 = qof_string_cache_insert(str); /* Refcount = 1 */
g_assert_true(str1_1 != str);
str1_2 = qof_string_cache_insert(str); /* Refcount = 2 */
g_assert_true(str1_1 == str1_2);
qof_string_cache_remove(str); /* Refcount = 1 */
str1_3 = qof_string_cache_insert(str); /* Refcount = 2 */
g_assert_true(str1_1 == str1_3);
qof_string_cache_remove(str); /* Refcount = 1 */
qof_string_cache_remove(str); /* Refcount = 0 */
strncpy(str, "str2", sizeof(str));
qof_string_cache_insert(str); /* Refcount = 1 */
strncpy(str, "str1", sizeof(str));
str1_4 = qof_string_cache_insert(str); /* Refcount = 1 */
g_assert_true(str1_1 != str1_4);
}
void
test_suite_qof_string_cache ( void )
{
GNC_TEST_ADD_FUNC( suitename, "string-cache", test_qof_string_cache);
}