26 #include <glib/gprintf.h>
29 #include "test-stuff.h"
31 #define OBJ_NAME "somename"
32 #define OBJ_AMOUNT "anamount"
33 #define OBJ_DATE "nottoday"
34 #define OBJ_GUID "unique"
35 #define OBJ_DISCOUNT "hefty"
36 #define OBJ_VERSION "early"
37 #define OBJ_MINOR "tiny"
38 #define OBJ_ACTIVE "ofcourse"
39 #define OBJ_FLAG "tiny_flag"
40 #define OBJ_EVENT_NAME "test-event-object"
41 #define OBJ_EVENT_DESC "test object for events"
45 static gboolean debug = FALSE;
50 static guint test, foo;
71 g_return_val_if_fail (book, NULL);
72 e = g_new0 (event_obj, 1);
75 e->discount = get_random_double ();
76 e->active = get_random_boolean ();
77 e->version = get_random_int_in_range (1, 10000);
78 e->minor = get_random_int_in_range (100000, 99999999);
79 e->flag = get_random_character ();
80 e->Name = get_random_string ();
81 e->Amount = get_random_qof_numeric ();
87 event_setFlag (event_obj * e, gchar f)
94 event_getFlag (event_obj * e)
96 g_return_val_if_fail (e,
'n');
101 event_setMinor (event_obj * e, gint64 h)
103 g_return_if_fail (e != NULL);
108 event_getMinor (event_obj * e)
110 g_return_val_if_fail (e, 0);
115 event_setVersion (event_obj * e, gint32 h)
117 g_return_if_fail (e);
122 event_getVersion (event_obj * e)
130 event_setActive (event_obj * e, gboolean h)
138 event_getActive (event_obj * e)
146 event_setDiscount (event_obj * e,
double h)
154 event_getDiscount (event_obj * e)
162 event_setDate (event_obj * e,
QofTime *h)
170 event_getDate (event_obj * e)
178 event_setName (event_obj * e, gchar * h)
182 e->Name = strdup (h);
186 event_getName (event_obj * e)
202 event_getAmount (event_obj * e)
211 .e_type = OBJ_EVENT_NAME,
212 .type_label = OBJ_EVENT_DESC,
213 .create = (gpointer) event_create,
220 .version_cmp = (gint (*)(gpointer, gpointer))
225 event_objRegister (
void)
230 {OBJ_AMOUNT, QOF_TYPE_NUMERIC, (
QofAccessFunc) event_getAmount,
234 {OBJ_DISCOUNT, QOF_TYPE_DOUBLE, (
QofAccessFunc) event_getDiscount,
236 {OBJ_ACTIVE, QOF_TYPE_BOOLEAN, (
QofAccessFunc) event_getActive,
238 {OBJ_VERSION, QOF_TYPE_INT32, (
QofAccessFunc) event_getVersion,
248 {NULL, NULL, NULL, NULL, NULL},
256 typedef struct event_context_s
262 gboolean destroy_used;
270 gpointer handler_data,
271 gpointer user_data __attribute__ ((unused)))
273 event_context *context;
275 context = (event_context *) handler_data;
276 do_test ((ent != NULL),
"Null ent in test");
277 do_test ((context != NULL),
"Null context");
290 do_test ((context->entity_original != NULL),
291 "No original entity");
293 "wrong event sent: test (QOF_EVENT_MODIFY)");
298 do_test ((context->entity_original != NULL),
299 "No original entity");
301 "wrong event sent: test (QOF_EVENT_DESTROY)");
302 do_test ((context->destroy_used),
303 "destroy sent without being called");
310 do_test ((context->entity_original != NULL),
311 "No original entity: test");
314 case QOF_EVENT_REMOVE:
316 do_test ((context->entity_original != NULL),
317 "No original entity: test");
322 do_test ((context->entity_original != NULL),
323 "No original entity: test");
331 gpointer handler_data,
332 gpointer user_data __attribute__ ((unused)))
334 event_context *context;
336 context = (event_context *) handler_data;
337 do_test ((context != NULL),
"Null context");
338 do_test ((ent != NULL),
"Null entity for foo");
355 do_test ((context->entity_original != NULL),
356 "No original entity");
358 "wrong event sent: foo (QOF_EVENT_DESTROY)");
359 do_test ((context->destroy_used),
360 "destroy sent without being called");
369 case QOF_EVENT_REMOVE:
381 create_data (
QofSession * original, event_context * context)
386 start = qof_session_get_book (original);
388 do_test ((NULL != &e->inst),
"instance init");
390 switch (context->counter)
394 do_test ((e != NULL),
"empty check");
401 do_test ((context->old_foo_id == foo),
"forward foo");
402 do_test ((context->old_test_id == test),
"forward test");
403 context->entity_original = (
QofEntity *) e;
406 do_test ((NULL != &e1->inst),
"temporary instance init");
407 context->entity_modified = (
QofEntity *) e1;
411 event_setName (e, event_getName (e1));
414 context->destroy_used = TRUE;
421 context->destroy_used = FALSE;
423 context->entity_modified = NULL;
424 context->param = NULL;
433 do_test ((context->old_foo_id < foo),
"reverse foo");
434 do_test ((context->old_test_id < test),
"reverse test");
438 context->entity_modified = (
QofEntity *) e1;
440 context->destroy_used = TRUE;
445 context->destroy_used = FALSE;
447 context->entity_original = NULL;
448 context->entity_modified = NULL;
452 context->old_foo_id = foo;
453 context->old_test_id = test;
458 context->entity_original = (
QofEntity *) e;
459 do_test ((NULL != &e2->inst),
"second instance init");
460 context->entity_modified = (
QofEntity *) e2;
466 context->destroy_used = TRUE;
471 context->destroy_used = FALSE;
473 context->entity_modified = NULL;
479 context->destroy_used = TRUE;
484 context->destroy_used = FALSE;
486 context->entity_original = NULL;
496 event_context context;
500 event_objRegister ();
501 original = qof_session_new ();
507 context.entity_original = NULL;
508 context.entity_modified = NULL;
509 context.destroy_used = FALSE;
510 context.param = NULL;
517 context.old_test_id = test;
518 context.old_foo_id = foo;
519 for (count = 0; count < 25; count++)
521 context.counter = (count % 5);
522 create_data (original, &context);
524 print_test_results ();