QOF  0.8.8
test-event.c
1 /***************************************************************************
2  * test-event.c
3  *
4  * Sat Feb 11 11:00:02 2006
5  * Copyright 2006 Neil Williams
6  * linux@codehelp.co.uk
7  ****************************************************************************/
8 /*
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor
22  * Boston, MA 02110-1301, USA
23  */
24 
25 #include <glib.h>
26 #include <glib/gprintf.h>
27 #include "qof.h"
28 #include "test-engine-stuff.h"
29 #include "test-stuff.h"
30 
31 #define OBJ_NAME "somename"
32 #define OBJ_AMOUNT "anamount"
33 #define OBJ_DATE "nottoday"
34 #define OBJ_GUID "unique"
35 #define OBJ_DISCOUNT "hefty"
36 #define OBJ_VERSION "early"
37 #define OBJ_MINOR "tiny"
38 #define OBJ_ACTIVE "ofcourse"
39 #define OBJ_FLAG "tiny_flag"
40 #define OBJ_EVENT_NAME "test-event-object"
41 #define OBJ_EVENT_DESC "test object for events"
42 
43 /* set to TRUE to get QSF XML output
44  * requires QSF available (i.e. make install) */
45 static gboolean debug = FALSE;
46 
47 /* deliberately make these global to the file to pick up
48 errors where developers access handlers directly. This practice
49 will be deprecated in qofevent. */
50 static guint test, foo;
51 
52 /* simple object structure */
53 typedef struct e_obj
54 {
55  QofInstance inst;
56  gchar *Name;
57  gchar flag;
58  QofNumeric Amount;
59  QofTime *date;
60  gdouble discount; /* cheap pun, I know. */
61  gboolean active;
62  gint32 version;
63  gint64 minor;
64 } event_obj;
65 
66 static event_obj *
67 event_create (QofBook * book)
68 {
69  event_obj *e;
70 
71  g_return_val_if_fail (book, NULL);
72  e = g_new0 (event_obj, 1);
73  qof_instance_init (&e->inst, OBJ_EVENT_NAME, book);
74  e->date = qof_time_get_current ();
75  e->discount = get_random_double ();
76  e->active = get_random_boolean ();
77  e->version = get_random_int_in_range (1, 10000);
78  e->minor = get_random_int_in_range (100000, 99999999);
79  e->flag = get_random_character ();
80  e->Name = get_random_string ();
81  e->Amount = get_random_qof_numeric ();
82  qof_event_gen (&e->inst.entity, QOF_EVENT_CREATE, NULL);
83  return e;
84 }
85 
86 static void
87 event_setFlag (event_obj * e, gchar f)
88 {
89  g_return_if_fail (e);
90  e->flag = f;
91 }
92 
93 static gchar
94 event_getFlag (event_obj * e)
95 {
96  g_return_val_if_fail (e, 'n');
97  return e->flag;
98 }
99 
100 static void
101 event_setMinor (event_obj * e, gint64 h)
102 {
103  g_return_if_fail (e != NULL);
104  e->minor = h;
105 }
106 
107 static gint64
108 event_getMinor (event_obj * e)
109 {
110  g_return_val_if_fail (e, 0);
111  return e->minor;
112 }
113 
114 static void
115 event_setVersion (event_obj * e, gint32 h)
116 {
117  g_return_if_fail (e);
118  e->version = h;
119 }
120 
121 static gint32
122 event_getVersion (event_obj * e)
123 {
124  if (!e)
125  return 0;
126  return e->version;
127 }
128 
129 static void
130 event_setActive (event_obj * e, gboolean h)
131 {
132  if (!e)
133  return;
134  e->active = h;
135 }
136 
137 static gboolean
138 event_getActive (event_obj * e)
139 {
140  if (!e)
141  return FALSE;
142  return e->active;
143 }
144 
145 static void
146 event_setDiscount (event_obj * e, double h)
147 {
148  if (!e)
149  return;
150  e->discount = h;
151 }
152 
153 static double
154 event_getDiscount (event_obj * e)
155 {
156  if (!e)
157  return 0;
158  return e->discount;
159 }
160 
161 static void
162 event_setDate (event_obj * e, QofTime *h)
163 {
164  if (!e)
165  return;
166  e->date = h;
167 }
168 
169 static QofTime*
170 event_getDate (event_obj * e)
171 {
172  if (!e)
173  return NULL;
174  return e->date;
175 }
176 
177 static void
178 event_setName (event_obj * e, gchar * h)
179 {
180  if (!e || !h)
181  return;
182  e->Name = strdup (h);
183 }
184 
185 static gchar *
186 event_getName (event_obj * e)
187 {
188  if (!e)
189  return NULL;
190  return e->Name;
191 }
192 
193 static void
194 event_setAmount (event_obj * e, QofNumeric h)
195 {
196  if (!e)
197  return;
198  e->Amount = h;
199 }
200 
201 static QofNumeric
202 event_getAmount (event_obj * e)
203 {
204  if (!e)
205  return qof_numeric_zero ();
206  return e->Amount;
207 }
208 
209 static QofObject event_object_def = {
210  .interface_version = QOF_OBJECT_VERSION,
211  .e_type = OBJ_EVENT_NAME,
212  .type_label = OBJ_EVENT_DESC,
213  .create = (gpointer) event_create,
214  .book_begin = NULL,
215  .book_end = NULL,
216  .is_dirty = NULL,
217  .mark_clean = NULL,
218  .foreach = qof_collection_foreach,
219  .printable = NULL,
220  .version_cmp = (gint (*)(gpointer, gpointer))
222 };
223 
224 static gboolean
225 event_objRegister (void)
226 {
227  static QofParam params[] = {