void gncOwnerDestroy (GncOwner *owner) { if (!owner) return; switch (owner->type) { case GNC_OWNER_NONE : case GNC_OWNER_UNDEFINED : break; case GNC_OWNER_CUSTOMER : { gncCustomerDestroy(owner->owner.customer); break; } case GNC_OWNER_JOB : { gncJobDestroy(owner->owner.job); break; } case GNC_OWNER_VENDOR : { gncVendorDestroy(owner->owner.vendor); break; } case GNC_OWNER_EMPLOYEE : { gncEmployeeDestroy(owner->owner.employee); break; } } }
static gboolean vendor_guid_handler (xmlNodePtr node, gpointer vendor_pdata) { struct vendor_pdata* pdata = static_cast<decltype (pdata)> (vendor_pdata); GncGUID* guid; GncVendor* vendor; guid = dom_tree_to_guid (node); g_return_val_if_fail (guid, FALSE); vendor = gncVendorLookup (pdata->book, guid); if (vendor) { gncVendorDestroy (pdata->vendor); pdata->vendor = vendor; gncVendorBeginEdit (vendor); } else { gncVendorSetGUID (pdata->vendor, guid); } g_free (guid); return TRUE; }
static GncVendor* dom_tree_to_vendor (xmlNodePtr node, QofBook* book) { struct vendor_pdata vendor_pdata; gboolean successful; vendor_pdata.vendor = gncVendorCreate (book); vendor_pdata.book = book; gncVendorBeginEdit (vendor_pdata.vendor); successful = dom_tree_generic_parse (node, vendor_handlers_v2, &vendor_pdata); if (successful) gncVendorCommitEdit (vendor_pdata.vendor); else { PERR ("failed to parse vendor tree"); gncVendorDestroy (vendor_pdata.vendor); vendor_pdata.vendor = NULL; } return vendor_pdata.vendor; }
static void test_vendor (void) { QofBook *book; GncVendor *vendor; book = qof_book_new(); /* Test creation/destruction */ { do_test (gncVendorCreate (NULL) == NULL, "vendor create NULL"); vendor = gncVendorCreate (book); do_test (vendor != NULL, "vendor create"); do_test (qof_instance_get_book (QOF_INSTANCE(vendor)) == book, "getbook"); gncVendorBeginEdit (vendor); gncVendorDestroy (vendor); success ("create/destroy"); } /* Test setting/getting routines; does the active flag get set right? */ { GncGUID guid; test_string_fcn (book, "Id", gncVendorSetID, gncVendorGetID); test_string_fcn (book, "Name", gncVendorSetName, gncVendorGetName); test_string_fcn (book, "Notes", gncVendorSetNotes, gncVendorGetNotes); //test_string_fcn (book, "Terms", gncVendorSetTerms, gncVendorGetTerms); //test_bool_fcn (book, "TaxIncluded", gncVendorSetTaxIncluded, gncVendorGetTaxIncluded); test_bool_fcn (book, "Active", gncVendorSetActive, gncVendorGetActive); do_test (gncVendorGetAddr (vendor) != NULL, "Addr"); guid_new (&guid); vendor = gncVendorCreate (book); count++; gncVendorSetGUID (vendor, &guid); do_test (guid_equal (&guid, qof_instance_get_guid(QOF_INSTANCE(vendor))), "guid compare"); } { GList *list; list = gncBusinessGetList (book, GNC_ID_VENDOR, TRUE); do_test (list != NULL, "getList all"); do_test (g_list_length (list) == count, "correct length: all"); g_list_free (list); list = gncBusinessGetList (book, GNC_ID_VENDOR, FALSE); do_test (list != NULL, "getList active"); do_test (g_list_length (list) == 1, "correct length: active"); g_list_free (list); } { const char *str = get_random_string(); const char *res; gncVendorSetName (vendor, str); res = qof_object_printable (GNC_ID_VENDOR, vendor); do_test (res != NULL, "Printable NULL?"); do_test (g_strcmp0 (str, res) == 0, "Printable equals"); } qof_book_destroy (book); }