1 /*
2 * Copyright (C) 2010 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
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.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by
17 * Mikkel Kamstrup Erlandsen <mikkel.kamstrup@canonical.com>
18 *
19 */
20
21 #include <glib.h>
22 #include <glib-object.h>
23 #include <dee.h>
24
25 typedef struct
26 {
27 DeeModel *model;
28 } Fixture;
29
30 static void setup (Fixture *fix, gconstpointer data);
31 static void teardown (Fixture *fix, gconstpointer data);
32
33 static void
setup(Fixture * fix,gconstpointer data)34 setup (Fixture *fix, gconstpointer data)
35 {
36 fix->model = dee_sequence_model_new ();
37 dee_model_set_schema (fix->model, "s", "i", "s", "u", NULL);
38
39 dee_model_append (fix->model,
40 "Hello world",
41 27,
42 "Three Danish characters... æøå?",
43 68);
44 }
45
46 static void
teardown(Fixture * fix,gconstpointer data)47 teardown (Fixture *fix, gconstpointer data)
48 {
49 g_object_unref (fix->model);
50 fix->model = NULL;
51 }
52
53 static void
test_string0(Fixture * fix,gconstpointer data)54 test_string0 (Fixture *fix, gconstpointer data)
55 {
56 DeeModelReader reader;
57 gchar *val;
58
59 dee_model_reader_new_for_string_column (0, &reader);
60 val = dee_model_reader_read (&reader, fix->model,
61 dee_model_get_first_iter (fix->model));
62
63 g_assert_cmpstr ("Hello world", ==, val);
64 g_free (val);
65 }
66
67 static void
test_string2(Fixture * fix,gconstpointer data)68 test_string2 (Fixture *fix, gconstpointer data)
69 {
70 DeeModelReader reader;
71 gchar *val;
72
73 dee_model_reader_new_for_string_column (2, &reader);
74 val = dee_model_reader_read (&reader, fix->model,
75 dee_model_get_first_iter (fix->model));
76
77 g_assert_cmpstr ("Three Danish characters... æøå?", ==, val);
78 g_free (val);
79 }
80
81 static void
test_int(Fixture * fix,gconstpointer data)82 test_int (Fixture *fix, gconstpointer data)
83 {
84 DeeModelReader reader;
85 gchar *val;
86
87 dee_model_reader_new_for_int32_column (1, &reader);
88 val = dee_model_reader_read (&reader, fix->model,
89 dee_model_get_first_iter (fix->model));
90
91 g_assert_cmpstr ("27", ==, val);
92 g_free (val);
93 }
94
95 static void
test_uint(Fixture * fix,gconstpointer data)96 test_uint (Fixture *fix, gconstpointer data)
97 {
98 DeeModelReader reader;
99 gchar *val;
100
101 dee_model_reader_new_for_uint32_column (3, &reader);
102 val = dee_model_reader_read (&reader, fix->model,
103 dee_model_get_first_iter (fix->model));
104
105 g_assert_cmpstr ("68", ==, val);
106 g_free (val);
107 }
108
109 void
test_model_readers_create_suite(void)110 test_model_readers_create_suite (void)
111 {
112 #define DOMAIN "/Index/ModelReaders"
113
114 g_test_add (DOMAIN"/String0", Fixture, 0,
115 setup, test_string0, teardown);
116 g_test_add (DOMAIN"/String2", Fixture, 0,
117 setup, test_string2, teardown);
118 g_test_add (DOMAIN"/Int", Fixture, 0,
119 setup, test_int, teardown);
120 g_test_add (DOMAIN"/UInt", Fixture, 0,
121 setup, test_uint, teardown);
122 }
123