Exemplo n.º 1
0
int main(void)
{
	xorn_revision_t rev;
	struct xornsch_text data;
	xorn_object_t ob;
	char *s;

	rev = xorn_new_revision(NULL);
	memset(&data, 0, sizeof data);

	data.text.s = "Hello";
	data.text.len = 5;
	ob = xornsch_add_text(rev, &data);

	data.text.s = "World";
	data.text.len = 5;
	xornsch_set_text_data(rev, ob, &data);

	s = strdup("!");
	data.text.s = s;
	data.text.len = 1;
	xornsch_set_text_data(rev, ob, &data);
	free(s);

	xorn_free_revision(rev);
	return 0;
}
Exemplo n.º 2
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;
}