2001-11-17 01:17:06 +00:00
|
|
|
#include <glib.h>
|
|
|
|
|
#include <guile/gh.h>
|
|
|
|
|
|
|
|
|
|
#include "guid.h"
|
|
|
|
|
#include "gnc-module.h"
|
|
|
|
|
#include "gnc-engine-util.h"
|
|
|
|
|
|
|
|
|
|
#include "gncBusiness.h"
|
|
|
|
|
#include "gncJob.h"
|
|
|
|
|
#include "gncJobP.h"
|
|
|
|
|
#include "test-stuff.h"
|
|
|
|
|
|
|
|
|
|
static int count = 0;
|
|
|
|
|
|
|
|
|
|
static void
|
2001-11-25 05:34:34 +00:00
|
|
|
test_string_fcn (GNCBook *book, const char *message,
|
2001-11-17 01:17:06 +00:00
|
|
|
void (*set) (GncJob *, const char *str),
|
|
|
|
|
const char * (*get)(GncJob *));
|
|
|
|
|
|
|
|
|
|
static void
|
2001-11-25 05:34:34 +00:00
|
|
|
test_numeric_fcn (GNCBook *book, const char *message,
|
2001-11-17 01:17:06 +00:00
|
|
|
void (*set) (GncJob *, gnc_numeric),
|
|
|
|
|
gnc_numeric (*get)(GncJob *));
|
|
|
|
|
|
|
|
|
|
static void
|
2001-11-25 05:34:34 +00:00
|
|
|
test_bool_fcn (GNCBook *book, const char *message,
|
2001-11-17 01:17:06 +00:00
|
|
|
void (*set) (GncJob *, gboolean),
|
|
|
|
|
gboolean (*get) (GncJob *));
|
|
|
|
|
|
|
|
|
|
static void
|
2001-11-25 05:34:34 +00:00
|
|
|
test_gint_fcn (GNCBook *book, const char *message,
|
2001-11-17 01:17:06 +00:00
|
|
|
void (*set) (GncJob *, gint),
|
|
|
|
|
gint (*get) (GncJob *));
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
test_job (void)
|
|
|
|
|
{
|
2001-11-25 05:34:34 +00:00
|
|
|
GNCBook *book;
|
2001-11-17 01:17:06 +00:00
|
|
|
GncJob *job;
|
|
|
|
|
|
2001-11-25 05:34:34 +00:00
|
|
|
book = gnc_book_new ();
|
|
|
|
|
gncBusinessCreateBook (book);
|
2001-11-17 01:17:06 +00:00
|
|
|
|
|
|
|
|
/* Test creation/destruction */
|
|
|
|
|
{
|
|
|
|
|
do_test (gncJobCreate (NULL) == NULL, "job create NULL");
|
2001-11-25 05:34:34 +00:00
|
|
|
job = gncJobCreate (book);
|
2001-11-17 01:17:06 +00:00
|
|
|
do_test (job != NULL, "job create");
|
2001-11-25 05:34:34 +00:00
|
|
|
do_test (gncJobGetBook (job) == book,
|
|
|
|
|
"getbook");
|
2001-11-17 01:17:06 +00:00
|
|
|
|
|
|
|
|
gncJobDestroy (job);
|
|
|
|
|
success ("create/destroy");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Test setting/getting routines; does the active flag get set right? */
|
|
|
|
|
{
|
|
|
|
|
GUID guid;
|
|
|
|
|
|
2001-11-25 05:34:34 +00:00
|
|
|
test_string_fcn (book, "Id", gncJobSetID, gncJobGetID);
|
|
|
|
|
test_string_fcn (book, "Name", gncJobSetName, gncJobGetName);
|
|
|
|
|
test_string_fcn (book, "Desc", gncJobSetDesc, gncJobGetDesc);
|
2001-11-17 01:17:06 +00:00
|
|
|
|
2001-11-25 05:34:34 +00:00
|
|
|
test_bool_fcn (book, "Active", gncJobSetActive, gncJobGetActive);
|
2001-11-17 01:17:06 +00:00
|
|
|
|
|
|
|
|
guid_new (&guid);
|
2001-11-25 05:34:34 +00:00
|
|
|
job = gncJobCreate (book); count++;
|
2001-11-17 01:17:06 +00:00
|
|
|
gncJobSetGUID (job, &guid);
|
|
|
|
|
do_test (guid_equal (&guid, gncJobGetGUID (job)), "guid compare");
|
|
|
|
|
}
|
|
|
|
|
#if 0
|
|
|
|
|
{
|
|
|
|
|
GList *list;
|
|
|
|
|
|
2001-11-25 05:34:34 +00:00
|
|
|
list = gncBusinessGetList (book, GNC_JOB_MODULE_NAME, TRUE);
|
2001-11-17 01:17:06 +00:00
|
|
|
do_test (list != NULL, "getList all");
|
|
|
|
|
do_test (g_list_length (list) == count, "correct length: all");
|
|
|
|
|
g_list_free (list);
|
|
|
|
|
|
2001-11-25 05:34:34 +00:00
|
|
|
list = gncBusinessGetList (book, GNC_JOB_MODULE_NAME, FALSE);
|
2001-11-17 01:17:06 +00:00
|
|
|
do_test (list != NULL, "getList active");
|
|
|
|
|
do_test (g_list_length (list) == 1, "correct length: active");
|
|
|
|
|
g_list_free (list);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
const char *str = get_random_string();
|
|
|
|
|
const char *res;
|
|
|
|
|
|
|
|
|
|
gncJobSetName (job, str);
|
2001-11-25 05:34:34 +00:00
|
|
|
res = gncBusinessPrintable (GNC_JOB_MODULE_NAME, job);
|
2001-11-17 01:17:06 +00:00
|
|
|
do_test (res != NULL, "Printable NULL?");
|
|
|
|
|
do_test (safe_strcmp (str, res) == 0, "Printable equals");
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
GList *list;
|
2001-11-25 05:34:34 +00:00
|
|
|
GncCustomer *cust = gncCustomerCreate (book);
|
2001-11-17 01:17:06 +00:00
|
|
|
|
|
|
|
|
do_test (gncCustomerGetJoblist (cust, TRUE) == NULL, "empty list at start");
|
|
|
|
|
gncJobSetCustomer (job, cust);
|
|
|
|
|
list = gncCustomerGetJoblist (cust, FALSE);
|
|
|
|
|
do_test (list != NULL, "added to cust");
|
|
|
|
|
do_test (g_list_length (list) == 1, "correct joblist length");
|
|
|
|
|
do_test (list->data == job, "verify job in list");
|
|
|
|
|
gncJobSetActive (job, FALSE);
|
|
|
|
|
list = gncCustomerGetJoblist (cust, FALSE);
|
|
|
|
|
do_test (list == NULL, "no active jobs");
|
|
|
|
|
list = gncCustomerGetJoblist (cust, TRUE);
|
|
|
|
|
do_test (list != NULL, "all jobs");
|
|
|
|
|
gncJobDestroy (job);
|
|
|
|
|
list = gncCustomerGetJoblist (cust, TRUE);
|
|
|
|
|
do_test (list == NULL, "no more jobs");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
2001-11-25 05:34:34 +00:00
|
|
|
test_string_fcn (GNCBook *book, const char *message,
|
2001-11-17 01:17:06 +00:00
|
|
|
void (*set) (GncJob *, const char *str),
|
|
|
|
|
const char * (*get)(GncJob *))
|
|
|
|
|
{
|
2001-11-25 05:34:34 +00:00
|
|
|
GncJob *job = gncJobCreate (book);
|
2001-11-17 01:17:06 +00:00
|
|
|
char const *str = get_random_string ();
|
|
|
|
|
|
|
|
|
|
do_test (!gncJobIsDirty (job), "test if start dirty");
|
|
|
|
|
set (job, str);
|
|
|
|
|
do_test (gncJobIsDirty (job), "test dirty later");
|
|
|
|
|
do_test (safe_strcmp (get (job), str) == 0, message);
|
|
|
|
|
gncJobSetActive (job, FALSE); count++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
2001-11-25 05:34:34 +00:00
|
|
|
test_numeric_fcn (GNCBook *book, const char *message,
|
2001-11-17 01:17:06 +00:00
|
|
|
void (*set) (GncJob *, gnc_numeric),
|
|
|
|
|
gnc_numeric (*get)(GncJob *))
|
|
|
|
|
{
|
2001-11-25 05:34:34 +00:00
|
|
|
GncJob *job = gncJobCreate (book);
|
2001-11-17 01:17:06 +00:00
|
|
|
gnc_numeric num = gnc_numeric_create (17, 1);
|
|
|
|
|
|
|
|
|
|
do_test (!gncJobIsDirty (job), "test if start dirty");
|
|
|
|
|
set (job, num);
|
|
|
|
|
do_test (gncJobIsDirty (job), "test dirty later");
|
|
|
|
|
do_test (gnc_numeric_equal (get (job), num), message);
|
|
|
|
|
gncJobSetActive (job, FALSE); count++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
2001-11-25 05:34:34 +00:00
|
|
|
test_bool_fcn (GNCBook *book, const char *message,
|
2001-11-17 01:17:06 +00:00
|
|
|
void (*set) (GncJob *, gboolean),
|
|
|
|
|
gboolean (*get) (GncJob *))
|
|
|
|
|
{
|
2001-11-25 05:34:34 +00:00
|
|
|
GncJob *job = gncJobCreate (book);
|
2001-11-17 01:17:06 +00:00
|
|
|
gboolean num = get_random_boolean ();
|
|
|
|
|
|
|
|
|
|
do_test (!gncJobIsDirty (job), "test if start dirty");
|
|
|
|
|
set (job, FALSE);
|
|
|
|
|
set (job, TRUE);
|
|
|
|
|
set (job, num);
|
|
|
|
|
do_test (gncJobIsDirty (job), "test dirty later");
|
|
|
|
|
do_test (get (job) == num, message);
|
|
|
|
|
gncJobSetActive (job, FALSE); count++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
2001-11-25 05:34:34 +00:00
|
|
|
test_gint_fcn (GNCBook *book, const char *message,
|
2001-11-17 01:17:06 +00:00
|
|
|
void (*set) (GncJob *, gint),
|
|
|
|
|
gint (*get) (GncJob *))
|
|
|
|
|
{
|
2001-11-25 05:34:34 +00:00
|
|
|
GncJob *job = gncJobCreate (book);
|
2001-11-17 01:17:06 +00:00
|
|
|
gint num = 17;
|
|
|
|
|
|
|
|
|
|
do_test (!gncJobIsDirty (job), "test if start dirty");
|
|
|
|
|
set (job, num);
|
|
|
|
|
do_test (gncJobIsDirty (job), "test dirty later");
|
|
|
|
|
do_test (get (job) == num, message);
|
|
|
|
|
gncJobSetActive (job, FALSE); count++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
main_helper (int argc, char **argv)
|
|
|
|
|
{
|
|
|
|
|
gnc_module_load("gnucash/business-core", 0);
|
|
|
|
|
test_job();
|
|
|
|
|
print_test_results();
|
|
|
|
|
exit(get_rv());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
main (int argc, char **argv)
|
|
|
|
|
{
|
|
|
|
|
gh_enter (argc, argv, main_helper);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|