1 /* ADG - Automatic Drawing Generation
2 * Copyright (C) 2007-2019 Nicola Fontana <ntd at entidi.it>
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
26 _adg_property_axis_dress(void)
28 AdgProjection
*projection
;
29 AdgDress valid_dress_1
, valid_dress_2
, incompatible_dress
;
32 projection
= adg_projection_new(ADG_PROJECTION_SCHEME_FIRST_ANGLE
);
33 valid_dress_1
= ADG_DRESS_LINE_GRID
;
34 valid_dress_2
= ADG_DRESS_LINE_FRAME
;
35 incompatible_dress
= ADG_DRESS_COLOR_STROKE
;
37 /* Using the public APIs */
38 adg_projection_set_axis_dress(projection
, valid_dress_1
);
39 axis_dress
= adg_projection_get_axis_dress(projection
);
40 g_assert_cmpint(axis_dress
, ==, valid_dress_1
);
42 adg_projection_set_axis_dress(projection
, incompatible_dress
);
43 axis_dress
= adg_projection_get_axis_dress(projection
);
44 g_assert_cmpint(axis_dress
, ==, valid_dress_1
);
46 adg_projection_set_axis_dress(projection
, valid_dress_2
);
47 axis_dress
= adg_projection_get_axis_dress(projection
);
48 g_assert_cmpint(axis_dress
, ==, valid_dress_2
);
50 /* Using GObject property methods */
51 g_object_set(projection
, "axis-dress", valid_dress_1
, NULL
);
52 g_object_get(projection
, "axis-dress", &axis_dress
, NULL
);
53 g_assert_cmpint(axis_dress
, ==, valid_dress_1
);
55 g_object_set(projection
, "axis-dress", incompatible_dress
, NULL
);
56 g_object_get(projection
, "axis-dress", &axis_dress
, NULL
);
57 g_assert_cmpint(axis_dress
, ==, valid_dress_1
);
59 g_object_set(projection
, "axis-dress", valid_dress_2
, NULL
);
60 g_object_get(projection
, "axis-dress", &axis_dress
, NULL
);
61 g_assert_cmpint(axis_dress
, ==, valid_dress_2
);
63 adg_entity_destroy(ADG_ENTITY(projection
));
67 _adg_property_scheme(void)
69 AdgProjection
*projection
;
70 AdgProjectionScheme valid_scheme_1
, valid_scheme_2
, invalid_scheme
;
71 AdgProjectionScheme scheme
;
73 projection
= adg_projection_new(G_MAXINT
);
74 valid_scheme_1
= ADG_PROJECTION_SCHEME_THIRD_ANGLE
;
75 valid_scheme_2
= ADG_PROJECTION_SCHEME_UNDEFINED
;
76 invalid_scheme
= G_MININT
;
78 /* Using the public APIs */
79 adg_projection_set_scheme(projection
, valid_scheme_1
);
80 scheme
= adg_projection_get_scheme(projection
);
81 g_assert_cmpint(scheme
, ==, valid_scheme_1
);
83 adg_projection_set_scheme(projection
, invalid_scheme
);
84 scheme
= adg_projection_get_scheme(projection
);
85 g_assert_cmpint(scheme
, ==, valid_scheme_1
);
87 adg_projection_set_scheme(projection
, valid_scheme_2
);
88 scheme
= adg_projection_get_scheme(projection
);
89 g_assert_cmpint(scheme
, ==, valid_scheme_2
);
91 /* Using GObject property methods */
92 g_object_set(projection
, "scheme", valid_scheme_1
, NULL
);
93 g_object_get(projection
, "scheme", &scheme
, NULL
);
94 g_assert_cmpint(scheme
, ==, valid_scheme_1
);
96 g_object_set(projection
, "scheme", invalid_scheme
, NULL
);
97 g_object_get(projection
, "scheme", &scheme
, NULL
);
98 g_assert_cmpint(scheme
, ==, valid_scheme_1
);
100 g_object_set(projection
, "scheme", valid_scheme_2
, NULL
);
101 g_object_get(projection
, "scheme", &scheme
, NULL
);
102 g_assert_cmpint(scheme
, ==, valid_scheme_2
);
104 adg_entity_destroy(ADG_ENTITY(projection
));
108 _adg_property_symbol_dress(void)
110 AdgProjection
*projection
;
111 AdgDress valid_dress_1
, valid_dress_2
, incompatible_dress
;
112 AdgDress symbol_dress
;
114 projection
= adg_projection_new(ADG_PROJECTION_SCHEME_UNDEFINED
);
115 valid_dress_1
= ADG_DRESS_LINE
;
116 valid_dress_2
= ADG_DRESS_LINE_STROKE
;
117 incompatible_dress
= ADG_DRESS_COLOR_FILL
;
119 /* Using the public APIs */
120 adg_projection_set_symbol_dress(projection
, valid_dress_1
);
121 symbol_dress
= adg_projection_get_symbol_dress(projection
);
122 g_assert_cmpint(symbol_dress
, ==, valid_dress_1
);
124 adg_projection_set_symbol_dress(projection
, incompatible_dress
);
125 symbol_dress
= adg_projection_get_symbol_dress(projection
);
126 g_assert_cmpint(symbol_dress
, ==, valid_dress_1
);
128 adg_projection_set_symbol_dress(projection
, valid_dress_2
);
129 symbol_dress
= adg_projection_get_symbol_dress(projection
);
130 g_assert_cmpint(symbol_dress
, ==, valid_dress_2
);
132 /* Using GObject property methods */
133 g_object_set(projection
, "symbol-dress", valid_dress_1
, NULL
);
134 g_object_get(projection
, "symbol-dress", &symbol_dress
, NULL
);
135 g_assert_cmpint(symbol_dress
, ==, valid_dress_1
);
137 g_object_set(projection
, "symbol-dress", incompatible_dress
, NULL
);
138 g_object_get(projection
, "symbol-dress", &symbol_dress
, NULL
);
139 g_assert_cmpint(symbol_dress
, ==, valid_dress_1
);
141 g_object_set(projection
, "symbol-dress", valid_dress_2
, NULL
);
142 g_object_get(projection
, "symbol-dress", &symbol_dress
, NULL
);
143 g_assert_cmpint(symbol_dress
, ==, valid_dress_2
);
145 adg_entity_destroy(ADG_ENTITY(projection
));
150 main(int argc
, char *argv
[])
152 adg_test_init(&argc
, &argv
);
154 adg_test_add_object_checks("/adg/projection/type/object", ADG_TYPE_PROJECTION
);
155 adg_test_add_entity_checks("/adg/projection/type/entity", ADG_TYPE_PROJECTION
);
157 adg_test_add_global_space_checks("/adg/projection/behavior/global-space",
158 adg_projection_new(ADG_PROJECTION_SCHEME_FIRST_ANGLE
));
159 adg_test_add_local_space_checks("/adg/projection/behavior/local-space",
160 adg_projection_new(ADG_PROJECTION_SCHEME_THIRD_ANGLE
));
162 g_test_add_func("/adg/projection/property/axis-dress", _adg_property_axis_dress
);
163 g_test_add_func("/adg/projection/property/scheme", _adg_property_scheme
);
164 g_test_add_func("/adg/projection/property/symbol-dress", _adg_property_symbol_dress
);