tests/check/: use the new macro
[platform/upstream/gstreamer.git] / tests / check / gst / gstmessage.c
1 /* GStreamer
2  *
3  * unit test for GstMessage
4  *
5  * Copyright (C) <2005> Wim Taymans <wim at fluendo dot com>
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Library General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Library General Public License for more details.
16  *
17  * You should have received a copy of the GNU Library General Public
18  * License along with this library; if not, write to the
19  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */
22
23 #include <gst/check/gstcheck.h>
24
25 static GQuark domain;
26
27 GST_START_TEST (test_parsing)
28 {
29   GstMessage *message;
30
31   domain = g_quark_from_string ("test");
32
33   /* GST_MESSAGE_EOS */
34   {
35     message = gst_message_new_eos (NULL);
36     fail_if (message == NULL);
37     fail_unless (GST_MESSAGE_TYPE (message) == GST_MESSAGE_EOS);
38     fail_unless (GST_MESSAGE_SRC (message) == NULL);
39     gst_message_unref (message);
40   }
41   /* GST_MESSAGE_ERROR */
42   {
43     GError *error = NULL;
44     gchar *debug;
45
46     error = g_error_new (domain, 10, "test error");
47     fail_if (error == NULL);
48     message = gst_message_new_error (NULL, error, "error string");
49     fail_if (message == NULL);
50     fail_unless (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ERROR);
51     fail_unless (GST_MESSAGE_SRC (message) == NULL);
52
53     g_error_free (error);
54     error = NULL;
55     debug = NULL;
56
57     gst_message_parse_error (message, &error, &debug);
58     fail_if (error == NULL);
59     fail_if (debug == NULL);
60     fail_unless (strcmp (error->message, "test error") == 0);
61     fail_unless (error->domain == domain);
62     fail_unless (error->code == 10);
63     fail_unless (strcmp (debug, "error string") == 0);
64
65     gst_message_unref (message);
66     g_error_free (error);
67     g_free (debug);
68   }
69   /* GST_MESSAGE_WARNING   */
70   {
71     GError *warning = NULL;
72     gchar *debug;
73
74     warning = g_error_new (domain, 10, "test warning");
75     fail_if (warning == NULL);
76     message = gst_message_new_warning (NULL, warning, "warning string");
77     fail_if (message == NULL);
78     fail_unless (GST_MESSAGE_TYPE (message) == GST_MESSAGE_WARNING);
79     fail_unless (GST_MESSAGE_SRC (message) == NULL);
80
81     g_error_free (warning);
82     warning = NULL;
83     debug = NULL;
84
85     gst_message_parse_warning (message, &warning, &debug);
86     fail_if (warning == NULL);
87     fail_if (debug == NULL);
88     fail_unless (strcmp (warning->message, "test warning") == 0);
89     fail_unless (warning->domain == domain);
90     fail_unless (warning->code == 10);
91     fail_unless (strcmp (debug, "warning string") == 0);
92
93     gst_message_unref (message);
94     g_error_free (warning);
95     g_free (debug);
96   }
97   /* GST_MESSAGE_INFO   */
98   {
99   }
100   /* GST_MESSAGE_TAG  */
101   {
102     GstTagList *tag;
103
104     /* FIXME, do some more tag adding */
105     tag = gst_tag_list_new ();
106     fail_if (tag == NULL);
107     message = gst_message_new_tag (NULL, tag);
108     fail_if (message == NULL);
109     fail_unless (GST_MESSAGE_TYPE (message) == GST_MESSAGE_TAG);
110     fail_unless (GST_MESSAGE_SRC (message) == NULL);
111     tag = NULL;
112     gst_message_parse_tag (message, &tag);
113     fail_if (tag == NULL);
114     /* FIXME, check the actual tags */
115     gst_message_unref (message);
116     gst_tag_list_free (tag);
117   }
118   /* GST_MESSAGE_BUFFERING   */
119   {
120   }
121   /* GST_MESSAGE_STATE_CHANGED   */
122   {
123     GstState oldstate, newstate, pending;
124
125     oldstate = GST_STATE_PAUSED;
126     newstate = GST_STATE_PLAYING;
127     pending = GST_STATE_VOID_PENDING;
128
129     message = gst_message_new_state_changed (NULL, oldstate, newstate, pending);
130     fail_if (message == NULL);
131     fail_unless (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STATE_CHANGED);
132     fail_unless (GST_MESSAGE_SRC (message) == NULL);
133
134     /* set some wrong values to check if the parse method overwrites them
135      * with the good values */
136     oldstate = GST_STATE_READY;
137     newstate = GST_STATE_READY;
138     pending = GST_STATE_READY;
139     gst_message_parse_state_changed (message, &oldstate, &newstate, &pending);
140     fail_unless (oldstate == GST_STATE_PAUSED);
141     fail_unless (newstate == GST_STATE_PLAYING);
142     fail_unless (pending == GST_STATE_VOID_PENDING);
143
144     gst_message_unref (message);
145   }
146   /* GST_MESSAGE_STEP_DONE   */
147   {
148   }
149   /* GST_MESSAGE_NEW_CLOCK  */
150   {
151   }
152   /* GST_MESSAGE_STRUCTURE_CHANGE  */
153   {
154   }
155   /* GST_MESSAGE_STREAM_STATUS  */
156   {
157   }
158   /* GST_MESSAGE_APPLICATION */
159   {
160     GstStructure *structure;
161     const GstStructure *struc;
162     gint some_int;
163     gdouble a_double;
164
165     structure = gst_structure_new ("test_struct",
166         "some_int", G_TYPE_INT, 10,
167         "a_double", G_TYPE_DOUBLE, (gdouble) 1.8, NULL);
168     fail_if (structure == NULL);
169     message = gst_message_new_application (NULL, structure);
170     fail_if (message == NULL);
171     struc = gst_message_get_structure (message);
172     fail_if (struc == NULL);
173     fail_unless (gst_structure_get_int (struc, "some_int", &some_int));
174     fail_unless (gst_structure_get_double (struc, "a_double", &a_double));
175     fail_unless (some_int == 10);
176     fail_unless (a_double == 1.8);
177
178     gst_message_unref (message);
179   }
180
181   /*
182      void            gst_message_parse_tag           (GstMessage *message, GstTagList **tag_list);
183      void            gst_message_parse_state_changed (GstMessage *message, GstState *old_state,
184      GstState *new_state);
185      void            gst_message_parse_error         (GstMessage *message, GError **gerror, gchar **debug);
186      void            gst_message_parse_warning       (GstMessage *message, GError **gerror, gchar **debug);
187    */
188
189
190
191 }
192
193 GST_END_TEST;
194
195 Suite *
196 gst_message_suite (void)
197 {
198   Suite *s = suite_create ("GstMessage");
199   TCase *tc_chain = tcase_create ("general");
200
201   suite_add_tcase (s, tc_chain);
202   tcase_add_test (tc_chain, test_parsing);
203
204   return s;
205 }
206
207 GST_CHECK_MAIN (gst_message);