static void assert_attached_objects_2( xorn_revision_t rev, xorn_object_t attached_to, xorn_object_t ob0, xorn_object_t ob1) { xorn_object_t *objects; size_t count; xorn_selection_t sel; assert(xorn_get_objects_attached_to( rev, attached_to, NULL, &count) == 0); assert(count == 2); count = -1; assert(xorn_get_objects_attached_to( rev, attached_to, &objects, &count) == 0); assert(objects != NULL); assert(count == 2); assert(objects[0] == ob0); assert(objects[1] == ob1); free(objects); assert(sel = xorn_select_attached_to(rev, attached_to)); assert(xorn_get_selected_objects(rev, sel, &objects, &count) == 0); assert(objects != NULL); assert(count == 2); assert((objects[0] == ob0 && objects[1] == ob1) || (objects[0] == ob1 && objects[1] == ob0)); free(objects); xorn_free_selection(sel); }
static PyObject *select_attached_to( PyObject *self, PyObject *args, PyObject *kwds) { PyObject *rev_arg = NULL, *ob_arg = NULL; static char *kwlist[] = { "rev", "ob", NULL }; if (!PyArg_ParseTupleAndKeywords( args, kwds, "O!O:select_attached_to", kwlist, &RevisionType, &rev_arg, &ob_arg)) return NULL; if (ob_arg != Py_None && !PyObject_TypeCheck(ob_arg, &ObjectType)) { char buf[BUFSIZ]; snprintf(buf, BUFSIZ, "select_attached_to() argument 2 " "must be %.50s or None, not %.50s", ObjectType.tp_name, ob_arg->ob_type->tp_name); PyErr_SetString(PyExc_TypeError, buf); return NULL; } if (ob_arg != Py_None && !xorn_object_exists_in_revision(((Revision *)rev_arg)->rev, ((Object *)ob_arg)->ob)) { PyErr_SetString(PyExc_KeyError, "Object does not exist"); return NULL; } xorn_selection_t sel = xorn_select_attached_to( ((Revision *)rev_arg)->rev, ob_arg == Py_None ? NULL : ((Object *)ob_arg)->ob); return sel ? build_selection(sel) : PyErr_NoMemory(); }
static void assert_attached_objects_f( xorn_revision_t rev, xorn_object_t attached_to) { xorn_object_t *objects; size_t count; assert(xorn_get_objects_attached_to( rev, attached_to, &objects, &count) == -1); assert(xorn_select_attached_to(rev, attached_to) == NULL); }
static void assert_attached_objects_0( xorn_revision_t rev, xorn_object_t attached_to) { xorn_object_t *objects; size_t count; xorn_selection_t sel; assert(xorn_get_objects_attached_to( rev, attached_to, NULL, &count) == 0); assert(count == 0); count = -1; assert(xorn_get_objects_attached_to( rev, attached_to, &objects, &count) == 0); assert(count == 0); free(objects); assert(sel = xorn_select_attached_to(rev, attached_to)); assert(xorn_get_selected_objects(rev, sel, &objects, &count) == 0); assert(count == 0); free(objects); xorn_free_selection(sel); }
int main(void) { xorn_revision_t src, dest; struct xornsch_net net_data; struct xornsch_text text_data; xorn_object_t net0, net1, text0, text1, copy; xorn_selection_t sel, copies; assert(src = xorn_new_revision(NULL)); memset(&net_data, 0, sizeof net_data); net_data.color = 1; assert(net0 = xornsch_add_net(src, &net_data, NULL)); net_data.color = 2; assert(net1 = xornsch_add_net(src, &net_data, NULL)); memset(&text_data, 0, sizeof text_data); text_data.color = 3; assert(text0 = xornsch_add_text(src, &text_data, NULL)); text_data.color = 4; assert(text1 = xornsch_add_text(src, &text_data, NULL)); assert(xorn_relocate_object(src, text1, net1, NULL, NULL) == 0); xorn_finalize_revision(src); /* text1 is attached to net1, text0 is not attached */ assert(dest = xorn_new_revision(NULL)); assert(copy = xorn_copy_object(dest, src, net0, NULL)); assert_this_net(dest, copy, 1); xorn_free_revision(dest); assert(dest = xorn_new_revision(NULL)); assert(copy = xorn_copy_object(dest, src, net1, NULL)); assert_this_net_with_text(dest, copy, 2, 4); xorn_free_revision(dest); assert(dest = xorn_new_revision(NULL)); assert(sel = xorn_select_object(net0)); assert(copies = xorn_copy_objects(dest, src, sel, NULL)); assert_this_net(dest, get_only_selected_object(dest, copies), 1); xorn_free_selection(copies); xorn_free_selection(sel); xorn_free_revision(dest); assert(dest = xorn_new_revision(NULL)); assert(sel = xorn_select_object(net1)); assert(copies = xorn_copy_objects(dest, src, sel, NULL)); assert_this_net_with_text( dest, get_only_selected_object(dest, copies), 2, 4); xorn_free_selection(copies); xorn_free_selection(sel); xorn_free_revision(dest); assert(dest = xorn_new_revision(NULL)); assert(sel = xorn_select_attached_to(src, NULL)); assert(copies = xorn_copy_objects(dest, src, sel, NULL)); assert_four(dest, copies, 1, 2, 3, 4); xorn_free_selection(copies); xorn_free_selection(sel); xorn_free_revision(dest); xorn_free_revision(src); return 0; }