1 /* ADG - Automatic Drawing Generation
2 * Copyright (C) 2010,2011 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.
21 #include "test-internal.h"
25 _adg_test_hadjustment(void)
28 GtkAdjustment
*valid_adjustment
, *invalid_adjustment
, *hadjustment
;
30 layout
= ADG_GTK_LAYOUT(adg_gtk_layout_new());
31 valid_adjustment
= (GtkAdjustment
*) gtk_adjustment_new(0, 0, 0, 0, 0, 0);
32 invalid_adjustment
= adg_test_invalid_pointer();
34 g_object_ref(valid_adjustment
);
36 /* Using the public APIs */
37 g_test_message("The implementation must provide a fallback adjustment");
38 hadjustment
= adg_gtk_layout_get_hadjustment(layout
);
39 g_assert(GTK_IS_ADJUSTMENT(hadjustment
));
41 adg_gtk_layout_set_hadjustment(layout
, NULL
);
42 hadjustment
= adg_gtk_layout_get_hadjustment(layout
);
43 g_assert(GTK_IS_ADJUSTMENT(hadjustment
));
45 adg_gtk_layout_set_hadjustment(layout
, valid_adjustment
);
46 hadjustment
= adg_gtk_layout_get_hadjustment(layout
);
47 g_assert(hadjustment
== valid_adjustment
);
49 adg_gtk_layout_set_hadjustment(layout
, invalid_adjustment
);
50 hadjustment
= adg_gtk_layout_get_hadjustment(layout
);
51 g_assert(hadjustment
== valid_adjustment
);
53 adg_gtk_layout_set_hadjustment(layout
, NULL
);
54 hadjustment
= adg_gtk_layout_get_hadjustment(layout
);
55 g_assert(hadjustment
!= valid_adjustment
&& GTK_IS_ADJUSTMENT(hadjustment
));
57 /* Using GObject property methods */
58 g_object_set(layout
, "hadjustment", NULL
, NULL
);
59 g_object_get(layout
, "hadjustment", &hadjustment
, NULL
);
60 g_assert(GTK_IS_ADJUSTMENT(hadjustment
));
61 g_object_unref(hadjustment
);
63 g_object_set(layout
, "hadjustment", valid_adjustment
, NULL
);
64 g_object_get(layout
, "hadjustment", &hadjustment
, NULL
);
65 g_assert(hadjustment
== valid_adjustment
);
66 g_object_unref(hadjustment
);
68 g_object_set(layout
, "hadjustment", invalid_adjustment
, NULL
);
69 g_object_get(layout
, "hadjustment", &hadjustment
, NULL
);
70 g_assert(hadjustment
== valid_adjustment
);
71 g_object_unref(hadjustment
);
73 g_object_set(layout
, "hadjustment", NULL
, NULL
);
74 g_object_get(layout
, "hadjustment", &hadjustment
, NULL
);
75 g_assert(hadjustment
!= valid_adjustment
&& GTK_IS_ADJUSTMENT(hadjustment
));
76 g_object_unref(hadjustment
);
78 gtk_widget_destroy(GTK_WIDGET(layout
));
79 g_object_unref(valid_adjustment
);
83 _adg_test_vadjustment(void)
86 GtkAdjustment
*valid_adjustment
, *invalid_adjustment
, *vadjustment
;
88 layout
= ADG_GTK_LAYOUT(adg_gtk_layout_new());
89 valid_adjustment
= (GtkAdjustment
*) gtk_adjustment_new(0, 0, 0, 0, 0, 0);
90 invalid_adjustment
= adg_test_invalid_pointer();
92 g_object_ref(valid_adjustment
);
94 /* Using the public APIs */
95 g_test_message("The implementation must provide a fallback adjustment");
96 vadjustment
= adg_gtk_layout_get_vadjustment(layout
);
97 g_assert(GTK_IS_ADJUSTMENT(vadjustment
));
99 adg_gtk_layout_set_vadjustment(layout
, NULL
);
100 vadjustment
= adg_gtk_layout_get_vadjustment(layout
);
101 g_assert(GTK_IS_ADJUSTMENT(vadjustment
));
103 adg_gtk_layout_set_vadjustment(layout
, valid_adjustment
);
104 vadjustment
= adg_gtk_layout_get_vadjustment(layout
);
105 g_assert(vadjustment
== valid_adjustment
);
107 adg_gtk_layout_set_vadjustment(layout
, invalid_adjustment
);
108 vadjustment
= adg_gtk_layout_get_vadjustment(layout
);
109 g_assert(vadjustment
== valid_adjustment
);
111 adg_gtk_layout_set_vadjustment(layout
, NULL
);
112 vadjustment
= adg_gtk_layout_get_vadjustment(layout
);
113 g_assert(vadjustment
!= valid_adjustment
&& GTK_IS_ADJUSTMENT(vadjustment
));
115 /* Using GObject property methods */
116 g_object_set(layout
, "vadjustment", NULL
, NULL
);
117 g_object_get(layout
, "vadjustment", &vadjustment
, NULL
);
118 g_assert(GTK_IS_ADJUSTMENT(vadjustment
));
119 g_object_unref(vadjustment
);
121 g_object_set(layout
, "vadjustment", valid_adjustment
, NULL
);
122 g_object_get(layout
, "vadjustment", &vadjustment
, NULL
);
123 g_assert(vadjustment
== valid_adjustment
);
124 g_object_unref(vadjustment
);
126 g_object_set(layout
, "vadjustment", invalid_adjustment
, NULL
);
127 g_object_get(layout
, "vadjustment", &vadjustment
, NULL
);
128 g_assert(vadjustment
== valid_adjustment
);
129 g_object_unref(vadjustment
);
131 g_object_set(layout
, "vadjustment", NULL
, NULL
);
132 g_object_get(layout
, "vadjustment", &vadjustment
, NULL
);
133 g_assert(vadjustment
!= valid_adjustment
&& GTK_IS_ADJUSTMENT(vadjustment
));
134 g_object_unref(vadjustment
);
136 gtk_widget_destroy(GTK_WIDGET(layout
));
137 g_object_unref(valid_adjustment
);
142 main(int argc
, char *argv
[])
144 adg_test_init(&argc
, &argv
);
146 adg_test_add_func("/adg/gtk/layout/hadjustment", _adg_test_hadjustment
);
147 adg_test_add_func("/adg/gtk/layout/vadjustment", _adg_test_vadjustment
);