1 /* Copyright (C) 2013-2020 Roland Lutz
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2 of the License, or
6 (at your option) any later version.
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software Foundation,
15 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
21 static void assert_objects_0(xorn_revision_t rev
)
23 xorn_object_t
*objects
;
26 assert(xorn_get_objects(rev
, &objects
, &count
) == 0);
31 static void assert_objects_2(xorn_revision_t rev
,
32 xorn_object_t ob0
, xorn_object_t ob1
)
34 xorn_object_t
*objects
;
37 assert(xorn_get_objects(rev
, &objects
, &count
) == 0);
38 assert(objects
!= NULL
);
40 assert(objects
[0] == ob0
);
41 assert(objects
[1] == ob1
);
45 static void assert_objects_3(
47 xorn_object_t ob0
, xorn_object_t ob1
, xorn_object_t ob2
)
49 xorn_object_t
*objects
;
52 assert(xorn_get_objects(rev
, &objects
, &count
) == 0);
53 assert(objects
!= NULL
);
55 assert(objects
[0] == ob0
);
56 assert(objects
[1] == ob1
);
57 assert(objects
[2] == ob2
);
63 xorn_revision_t rev0
, rev1
, rev2
, rev3
;
64 xorn_object_t ob0
, ob1a
, ob1b
;
67 xorn_revision_t rev2a
, rev2b
, rev2c
, rev2d
;
69 setup(&rev0
, &rev1
, &rev2
, &rev3
, &ob0
, &ob1a
, &ob1b
);
71 sel
= xorn_select_none();
73 rev2a
= xorn_new_revision(rev2
);
74 assert(rev2a
!= NULL
);
75 assert(xorn_delete_selected_objects(rev2a
, sel
, NULL
) == 0);
76 xorn_finalize_revision(rev2a
);
77 xorn_free_selection(sel
);
79 assert_objects_3(rev2a
, ob0
, ob1a
, ob1b
);
80 xorn_free_revision(rev2a
);
82 sel
= xorn_select_object(ob1a
);
84 rev2b
= xorn_new_revision(rev2
);
85 assert(rev2b
!= NULL
);
86 assert(xorn_delete_selected_objects(rev2b
, sel
, NULL
) == 0);
87 xorn_finalize_revision(rev2b
);
88 xorn_free_selection(sel
);
90 assert_objects_2(rev2b
, ob0
, ob1b
);
91 xorn_free_revision(rev2b
);
93 sel
= xorn_select_all(rev1
);
95 rev2c
= xorn_new_revision(rev2
);
96 assert(rev2c
!= NULL
);
97 assert(xorn_delete_selected_objects(rev2c
, sel
, NULL
) == 0);
98 xorn_finalize_revision(rev2c
);
99 xorn_free_selection(sel
);
101 assert_objects_2(rev2c
, ob1a
, ob1b
);
102 xorn_free_revision(rev2c
);
104 sel
= xorn_select_all(rev2
);
106 rev2d
= xorn_new_revision(rev2
);
107 assert(rev2d
!= NULL
);
108 assert(xorn_delete_selected_objects(rev2d
, sel
, NULL
) == 0);
109 xorn_finalize_revision(rev2d
);
110 xorn_free_selection(sel
);
112 assert_objects_0(rev2d
);
113 xorn_free_revision(rev2d
);
115 xorn_free_revision(rev3
);
116 xorn_free_revision(rev2
);
117 xorn_free_revision(rev1
);
118 xorn_free_revision(rev0
);