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