mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
More work on test infrastructure.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@5443 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
5e97ad6ea9
commit
85f1067f02
@ -16,7 +16,7 @@ diff -u test-file-1 test-file-2 || EXIT_VALUE=1
|
|||||||
|
|
||||||
if test $EXIT_VALUE != 0; then exit $EXIT_VALUE; fi
|
if test $EXIT_VALUE != 0; then exit $EXIT_VALUE; fi
|
||||||
|
|
||||||
./db-control.sh destroy
|
#./db-control.sh destroy
|
||||||
rm -f test-file-*
|
rm -f test-file-*
|
||||||
|
|
||||||
exit $EXIT_VALUE
|
exit $EXIT_VALUE
|
||||||
|
@ -102,7 +102,13 @@ guile_main (int argc, char **argv)
|
|||||||
gnc_module_system_init ();
|
gnc_module_system_init ();
|
||||||
gnc_module_load ("gnucash/engine", 0);
|
gnc_module_load ("gnucash/engine", 0);
|
||||||
|
|
||||||
random_glist_strings_only (TRUE);
|
glist_exclude_type (KVP_TYPE_BINARY);
|
||||||
|
glist_exclude_type (KVP_TYPE_GLIST);
|
||||||
|
/* The random double generator is making values
|
||||||
|
* that postgres doesn't like. */
|
||||||
|
glist_exclude_type (KVP_TYPE_DOUBLE);
|
||||||
|
set_max_kvp_depth (3);
|
||||||
|
set_max_kvp_frame_elements (3);
|
||||||
|
|
||||||
xaccLogDisable ();
|
xaccLogDisable ();
|
||||||
|
|
||||||
@ -115,7 +121,7 @@ guile_main (int argc, char **argv)
|
|||||||
int
|
int
|
||||||
main (int argc, char ** argv)
|
main (int argc, char ** argv)
|
||||||
{
|
{
|
||||||
/* getchar (); */
|
getchar ();
|
||||||
|
|
||||||
gh_enter (argc, argv, guile_main);
|
gh_enter (argc, argv, guile_main);
|
||||||
|
|
||||||
|
@ -19,8 +19,56 @@
|
|||||||
static gboolean add_comms_to_engine = TRUE;
|
static gboolean add_comms_to_engine = TRUE;
|
||||||
static gboolean glist_strings_only = FALSE;
|
static gboolean glist_strings_only = FALSE;
|
||||||
|
|
||||||
|
static GHashTable *exclude_kvp_types = NULL;
|
||||||
|
static gint kvp_max_depth = G_MAXINT;
|
||||||
|
static gint kvp_frame_max_elements = 10;
|
||||||
|
|
||||||
|
|
||||||
|
static kvp_value* get_random_kvp_value_depth (int type, gint depth);
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
|
|
||||||
|
void
|
||||||
|
set_max_kvp_depth (gint max_kvp_depth)
|
||||||
|
{
|
||||||
|
kvp_max_depth = MAX (max_kvp_depth, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
set_max_kvp_frame_elements (gint max_kvp_frame_elements)
|
||||||
|
{
|
||||||
|
kvp_frame_max_elements = MAX (max_kvp_frame_elements, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
glist_exclude_type (kvp_value_t kvp_type)
|
||||||
|
{
|
||||||
|
gint *key;
|
||||||
|
|
||||||
|
if (!exclude_kvp_types)
|
||||||
|
exclude_kvp_types = g_hash_table_new (g_int_hash, g_int_equal);
|
||||||
|
|
||||||
|
key = g_new (gint, 1);
|
||||||
|
*key = kvp_type;
|
||||||
|
|
||||||
|
g_hash_table_insert (exclude_kvp_types, key, exclude_kvp_types);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
glist_type_excluded (kvp_value_t kvp_type)
|
||||||
|
{
|
||||||
|
gint key = kvp_type;
|
||||||
|
|
||||||
|
if (!exclude_kvp_types)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (g_hash_table_lookup (exclude_kvp_types, &key))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_random_commodities_to_engine (gboolean add)
|
add_random_commodities_to_engine (gboolean add)
|
||||||
{
|
{
|
||||||
@ -144,25 +192,35 @@ get_random_guid(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
GList*
|
static GList*
|
||||||
get_random_glist(void)
|
get_random_glist_depth (gint depth)
|
||||||
{
|
{
|
||||||
GList *ret = NULL;
|
GList *ret = NULL;
|
||||||
int i;
|
|
||||||
int count = get_random_int_in_range(1, 5);
|
int count = get_random_int_in_range(1, 5);
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (depth >= kvp_max_depth)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
kvp_value_t kvpt;
|
kvp_value_t kvpt;
|
||||||
|
|
||||||
kvpt = glist_strings_only ? KVP_TYPE_STRING : -2;
|
kvpt = glist_strings_only ? KVP_TYPE_STRING : -2;
|
||||||
|
|
||||||
ret = g_list_prepend(ret, get_random_kvp_value (kvpt));
|
ret = g_list_prepend(ret,
|
||||||
|
get_random_kvp_value_depth (kvpt, depth + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GList*
|
||||||
|
get_random_glist(void)
|
||||||
|
{
|
||||||
|
return get_random_glist_depth (0);
|
||||||
|
}
|
||||||
|
|
||||||
bin_data*
|
bin_data*
|
||||||
get_random_binary_data(void)
|
get_random_binary_data(void)
|
||||||
{
|
{
|
||||||
@ -182,12 +240,15 @@ get_random_binary_data(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
kvp_frame*
|
static kvp_frame*
|
||||||
get_random_kvp_frame(void)
|
get_random_kvp_frame_depth (gint depth)
|
||||||
{
|
{
|
||||||
kvp_frame *ret;
|
kvp_frame *ret;
|
||||||
int vals_to_add;
|
int vals_to_add;
|
||||||
|
|
||||||
|
if (depth >= kvp_max_depth)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
ret = kvp_frame_new();
|
ret = kvp_frame_new();
|
||||||
|
|
||||||
vals_to_add = get_random_int_in_range(1,10);
|
vals_to_add = get_random_int_in_range(1,10);
|
||||||
@ -198,23 +259,29 @@ get_random_kvp_frame(void)
|
|||||||
kvp_value *val;
|
kvp_value *val;
|
||||||
|
|
||||||
key = get_random_string();
|
key = get_random_string();
|
||||||
val = get_random_kvp_value(-1);
|
val = get_random_kvp_value_depth (-1, depth + 1);
|
||||||
|
|
||||||
if(!key)
|
if(!key)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
kvp_frame_set_slot_nc(ret, key, val);
|
kvp_frame_set_slot_nc(ret, key, val);
|
||||||
|
|
||||||
g_free(key);
|
g_free(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
kvp_value*
|
kvp_frame*
|
||||||
get_random_kvp_value(int type)
|
get_random_kvp_frame (void)
|
||||||
|
{
|
||||||
|
return get_random_kvp_frame_depth (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static kvp_value*
|
||||||
|
get_random_kvp_value_depth (int type, gint depth)
|
||||||
{
|
{
|
||||||
int datype = type;
|
int datype = type;
|
||||||
|
|
||||||
@ -227,7 +294,16 @@ get_random_kvp_value(int type)
|
|||||||
{
|
{
|
||||||
datype = get_random_int_in_range(KVP_TYPE_GINT64, KVP_TYPE_FRAME);
|
datype = get_random_int_in_range(KVP_TYPE_GINT64, KVP_TYPE_FRAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (datype == KVP_TYPE_FRAME && depth >= kvp_max_depth)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (datype == KVP_TYPE_GLIST && depth >= kvp_max_depth)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (glist_type_excluded (datype))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
switch(datype)
|
switch(datype)
|
||||||
{
|
{
|
||||||
case KVP_TYPE_GINT64:
|
case KVP_TYPE_GINT64:
|
||||||
@ -282,14 +358,14 @@ get_random_kvp_value(int type)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case KVP_TYPE_GLIST:
|
case KVP_TYPE_GLIST:
|
||||||
return kvp_value_new_glist_nc(get_random_glist());
|
return kvp_value_new_glist_nc(get_random_glist_depth (depth + 1));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KVP_TYPE_FRAME:
|
case KVP_TYPE_FRAME:
|
||||||
{
|
{
|
||||||
kvp_frame *tmp_frame;
|
kvp_frame *tmp_frame;
|
||||||
kvp_value *ret;
|
kvp_value *ret;
|
||||||
tmp_frame = get_random_kvp_frame();
|
tmp_frame = get_random_kvp_frame_depth(depth + 1);
|
||||||
ret = kvp_value_new_frame(tmp_frame);
|
ret = kvp_value_new_frame(tmp_frame);
|
||||||
kvp_frame_delete(tmp_frame);
|
kvp_frame_delete(tmp_frame);
|
||||||
return ret;
|
return ret;
|
||||||
@ -302,6 +378,12 @@ get_random_kvp_value(int type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kvp_value *
|
||||||
|
get_random_kvp_value(int type)
|
||||||
|
{
|
||||||
|
return get_random_kvp_value_depth (type, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_account_random_string(Account* act,
|
set_account_random_string(Account* act,
|
||||||
void(*func)(Account *act, const gchar*str))
|
void(*func)(Account *act, const gchar*str))
|
||||||
|
@ -17,12 +17,11 @@
|
|||||||
Timespec* get_random_timespec(void);
|
Timespec* get_random_timespec(void);
|
||||||
kvp_value* get_random_kvp_value(int type);
|
kvp_value* get_random_kvp_value(int type);
|
||||||
|
|
||||||
struct _bin_data
|
typedef struct
|
||||||
{
|
{
|
||||||
guchar *data;
|
guchar *data;
|
||||||
int len;
|
int len;
|
||||||
};
|
} bin_data;
|
||||||
typedef struct _bin_data bin_data;
|
|
||||||
|
|
||||||
bin_data* get_random_binary_data(void);
|
bin_data* get_random_binary_data(void);
|
||||||
|
|
||||||
@ -32,6 +31,9 @@ GUID* get_random_guid(void);
|
|||||||
GList* get_random_glist(void);
|
GList* get_random_glist(void);
|
||||||
|
|
||||||
void random_glist_strings_only (gboolean strings_only);
|
void random_glist_strings_only (gboolean strings_only);
|
||||||
|
void glist_exclude_type (kvp_value_t kvp_type);
|
||||||
|
void set_max_kvp_depth (gint max_kvp_depth);
|
||||||
|
void set_max_kvp_frame_elements (gint max_kvp_frame_elements);
|
||||||
|
|
||||||
GNCPrice * get_random_price(void);
|
GNCPrice * get_random_price(void);
|
||||||
void make_random_pricedb (GNCPriceDB *pdb);
|
void make_random_pricedb (GNCPriceDB *pdb);
|
||||||
|
Loading…
Reference in New Issue
Block a user