Beispiel #1
0
int main(void)
{
	xorn_revision_t rev0, rev1, rev2, rev3;
	xorn_object_t ob0, ob1a, ob1b;

	xorn_revision_t rev4;

	setup(&rev0, &rev1, &rev2, &rev3, &ob0, &ob1a, &ob1b);

	rev4 = xorn_new_revision(rev3);
	assert(rev4 != NULL);

	assert(xornsch_add_line(rev4, NULL) == NULL);
	assert(xornsch_set_line_data(rev4, ob0, NULL) == -1);

	xorn_finalize_revision(rev4);

	xorn_free_revision(rev4);
	xorn_free_revision(rev3);
	xorn_free_revision(rev2);
	xorn_free_revision(rev1);
	xorn_free_revision(rev0);
	return 0;
}
Beispiel #2
0
int main(void)
{
	xorn_revision_t rev;
	struct xornsch_net net_data;
	struct xornsch_text text_data;
	xorn_object_t N, a, b;

	xorn_revision_t rev1;
	struct xornsch_line line_data;
	struct xornsch_component component_data;

	assert(rev = xorn_new_revision(NULL));

	memset(&net_data, 0, sizeof net_data);
	assert(N = xornsch_add_net(rev, &net_data));

	memset(&text_data, 0, sizeof text_data);
	assert(a = xornsch_add_text(rev, &text_data));
	assert(b = xornsch_add_text(rev, &text_data));

	common_checks(rev, N, a, b, N, a, b);

	/* can move objects */

	do_it(rev, N, _, _,  0, a, b, N, &check2, N, a, b);
	do_it(rev, N, _, a,  0, N, a, b, &check0, N, a, b);
	do_it(rev, N, _, b,  0, a, N, b, &check1, N, a, b);

	do_it(rev, a, _, _,  0, N, b, a, &check0, N, b, a);
	do_it(rev, a, _, N,  0, a, N, b, &check1, N, a, b);
	do_it(rev, a, _, b,  0, N, a, b, &check0, N, a, b);

	do_it(rev, b, _, N,  0, b, N, a, &check1, N, b, a);
	do_it(rev, b, _, a,  0, N, b, a, &check0, N, b, a);
	do_it(rev, b, _, _,  0, N, a, b, &check0, N, a, b);

	/* can embed a to N, but not before b */

	do_it(rev, a, N, _,  0, N, a, b, &check3, N, a, b);
	do_it(rev, a, N, b, -1, N, a, b, &check3, N, a, b);

	do_it(rev, b, _, N,  0, b, N, a, &check4, N, b, a);
	do_it(rev, b, _, a, -1, b, N, a, &check4, N, b, a);
	do_it(rev, b, _, _,  0, N, a, b, &check3, N, a, b);

	do_it(rev, a, _, b,  0, N, a, b, &check0, N, a, b);

	/* can embed b to N, but not before a */

	do_it(rev, b, N, _,  0, N, b, a, &check3, N, b, a);
	do_it(rev, b, N, a, -1, N, b, a, &check3, N, b, a);

	do_it(rev, a, _, N,  0, a, N, b, &check4, N, a, b);
	do_it(rev, a, _, b, -1, a, N, b, &check4, N, a, b);
	do_it(rev, a, _, _,  0, N, b, a, &check3, N, b, a);

	do_it(rev, b, _, _,  0, N, a, b, &check0, N, a, b);

	/* can embed both */

	do_it(rev, a, N, _,  0, N, a, b, &check3, N, a, b);
	do_it(rev, b, N, _,  0, N, a, b, &check5, N, a, b);

	do_it(rev, a, N, _,  0, N, b, a, &check5, N, b, a);
	do_it(rev, a, N, b,  0, N, a, b, &check5, N, a, b);
	do_it(rev, b, N, a,  0, N, b, a, &check5, N, b, a);
	do_it(rev, b, N, _,  0, N, a, b, &check5, N, a, b);

	do_it(rev, a, _, _,  0, N, b, a, &check3, N, b, a);
	do_it(rev, b, _, _,  0, N, a, b, &check0, N, a, b);

	xorn_finalize_revision(rev);

	common_checks(rev, N, a, b, N, a, b);

	check(rev, N, _, _, -1, N, a, b);
	check(rev, N, _, a, -1, N, a, b);
	check(rev, N, _, b, -1, N, a, b);

	check(rev, a, _, _, -1, N, a, b);
	check(rev, a, _, N, -1, N, a, b);
	check(rev, a, _, b, -1, N, a, b);
	check(rev, a, N, _, -1, N, a, b);

	check(rev, b, _, _, -1, N, a, b);
	check(rev, b, _, N, -1, N, a, b);
	check(rev, b, _, a, -1, N, a, b);
	check(rev, b, N, _, -1, N, a, b);

	assert(rev1 = xorn_new_revision(rev));

	/* can't attach text to line */

	memset(&line_data, 0, sizeof line_data);
	assert(xornsch_set_line_data(rev1, N, &line_data) == 0);
	do_it(rev1, a, N, _, -1, N, a, b, &check0, N, a, b);

	/* can attach text to component */

	memset(&component_data, 0, sizeof component_data);
	assert(xornsch_set_component_data(rev1, N, &component_data) == 0);
	do_it(rev1, a, N, _,  0, N, a, b, &check3, N, a, b);

	xorn_free_revision(rev1);
	xorn_free_revision(rev);
	return 0;
}
Beispiel #3
0
int main()
{
	xorn_revision_t rev;
	xorn_object_t ob0, ob1;
	struct xornsch_line line_data;
	struct xornsch_net net_data;
	struct xornsch_component component_data;
	struct xornsch_text text_data;

	memset(&line_data, 0, sizeof line_data);
	memset(&net_data, 0, sizeof net_data);
	memset(&component_data, 0, sizeof component_data);
	memset(&text_data, 0, sizeof text_data);

	assert(rev = xorn_new_revision(NULL));
	assert(ob0 = xornsch_add_line(rev, &line_data));
	assert(ob1 = xornsch_add_line(rev, &line_data));

	assert(xornsch_set_net_data(rev, ob0, &net_data) == 0);
	assert(xornsch_set_text_data(rev, ob1, &text_data) == 0);

	check_not_attached(rev, ob0, ob1);


	/* data can be set without the object being reordered */

	assert(xornsch_set_line_data(rev, ob0, &line_data) == 0);
	check_not_attached(rev, ob0, ob1);
	assert(xornsch_set_net_data(rev, ob0, &net_data) == 0);
	check_not_attached(rev, ob0, ob1);

	assert(xornsch_set_line_data(rev, ob1, &line_data) == 0);
	check_not_attached(rev, ob0, ob1);
	assert(xornsch_set_net_data(rev, ob1, &net_data) == 0);
	check_not_attached(rev, ob0, ob1);

	/* objects are re-added at the end */

	xorn_delete_object(rev, ob0);
	assert(xornsch_set_line_data(rev, ob0, &line_data) == 0);
	check_not_attached(rev, ob1, ob0);
	xorn_delete_object(rev, ob0);
	assert(xornsch_set_line_data(rev, ob0, &line_data) == 0);
	check_not_attached(rev, ob1, ob0);

	xorn_delete_object(rev, ob1);
	assert(xornsch_set_line_data(rev, ob1, &line_data) == 0);
	check_not_attached(rev, ob0, ob1);
	xorn_delete_object(rev, ob1);
	assert(xornsch_set_line_data(rev, ob1, &line_data) == 0);
	check_not_attached(rev, ob0, ob1);

	xorn_delete_object(rev, ob0);
	assert(xornsch_set_net_data(rev, ob0, &net_data) == 0);
	check_not_attached(rev, ob1, ob0);
	xorn_delete_object(rev, ob0);
	assert(xornsch_set_net_data(rev, ob0, &net_data) == 0);
	check_not_attached(rev, ob1, ob0);

	xorn_delete_object(rev, ob1);
	assert(xornsch_set_net_data(rev, ob1, &net_data) == 0);
	check_not_attached(rev, ob0, ob1);
	xorn_delete_object(rev, ob1);
	assert(xornsch_set_net_data(rev, ob1, &net_data) == 0);
	check_not_attached(rev, ob0, ob1);


	/* can change ob0 to any type while no object is attached */

	assert(xornsch_set_line_data(rev, ob0, &line_data) == 0);
	check_not_attached(rev, ob0, ob1);
	assert(xornsch_set_component_data(rev, ob0, &component_data) == 0);
	check_not_attached(rev, ob0, ob1);
	assert(xornsch_set_text_data(rev, ob0, &text_data) == 0);
	check_not_attached(rev, ob0, ob1);
	assert(xornsch_set_net_data(rev, ob0, &net_data) == 0);
	check_not_attached(rev, ob0, ob1);

	/* can change type of ob1 while not attached */

	assert(xornsch_set_line_data(rev, ob1, &line_data) == 0);
	check_not_attached(rev, ob0, ob1);
	assert(xornsch_set_net_data(rev, ob1, &net_data) == 0);
	check_not_attached(rev, ob0, ob1);
	assert(xornsch_set_component_data(rev, ob1, &component_data) == 0);
	check_not_attached(rev, ob0, ob1);
	assert(xornsch_set_text_data(rev, ob1, &text_data) == 0);
	check_not_attached(rev, ob0, ob1);


	assert(xorn_relocate_object(rev, ob1, ob0, NULL) == 0);
	check_attached(rev, ob0, ob1);


	/* can't change ob0 to line or text while an object is attached */

	assert(xornsch_set_line_data(rev, ob0, &line_data) == -1);
	check_attached(rev, ob0, ob1);
	assert(xornsch_set_net_data(rev, ob0, &net_data) == 0);
	check_attached(rev, ob0, ob1);
	assert(xornsch_set_component_data(rev, ob0, &component_data) == 0);
	check_attached(rev, ob0, ob1);
	assert(xornsch_set_text_data(rev, ob0, &text_data) == -1);
	check_attached(rev, ob0, ob1);

	/* can't change type of ob1 while attached */

	assert(xornsch_set_line_data(rev, ob1, &line_data) == -1);
	check_attached(rev, ob0, ob1);
	assert(xornsch_set_net_data(rev, ob1, &net_data) == -1);
	check_attached(rev, ob0, ob1);
	assert(xornsch_set_component_data(rev, ob1, &component_data) == -1);
	check_attached(rev, ob0, ob1);
	assert(xornsch_set_text_data(rev, ob1, &text_data) == 0);
	check_attached(rev, ob0, ob1);


	xorn_free_revision(rev);
	return 0;
}