diff options
Diffstat (limited to 'tests/check/libs/navigation.c')
-rw-r--r-- | tests/check/libs/navigation.c | 351 |
1 files changed, 0 insertions, 351 deletions
diff --git a/tests/check/libs/navigation.c b/tests/check/libs/navigation.c deleted file mode 100644 index 4712947b..00000000 --- a/tests/check/libs/navigation.c +++ /dev/null @@ -1,351 +0,0 @@ -/* GStreamer - * - * unit tests for the navigation interface library - * - * Copyright (C) 2009 Jan Schmidt <thaytan@noraisin.net> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <gst/check/gstcheck.h> - -#include <gst/interfaces/navigation.h> - -#include <string.h> - -#define TEST_ELEMENT_TYPE (test_element_get_type()) - -typedef struct TestElement TestElement; -typedef struct TestElementClass TestElementClass; - -struct TestElement -{ - GstElement parent; - - GstNavigationEventType sent_type; - const gchar *sent_key; - gdouble sent_x, sent_y; - gint sent_button; - GstNavigationCommand sent_command; -}; - -struct TestElementClass -{ - GstElementClass parent_class; -}; - -static void init_interface (GType type); -static void gst_implements_interface_init (GstImplementsInterfaceClass * klass); -static void nav_send_event (GstNavigation * navigation, - GstStructure * structure); - -GST_BOILERPLATE_FULL (TestElement, test_element, GstElement, GST_TYPE_ELEMENT, - init_interface); - -static void -test_element_navigation_interface_init (GstNavigationInterface * klass) -{ - klass->send_event = nav_send_event; -} - -static void -init_interface (GType type) -{ - static const GInterfaceInfo navigation_iface_info = { - (GInterfaceInitFunc) test_element_navigation_interface_init, - NULL, - NULL, - }; - static const GInterfaceInfo implements_iface_info = { - (GInterfaceInitFunc) gst_implements_interface_init, - NULL, - NULL, - }; - - g_type_add_interface_static (type, GST_TYPE_IMPLEMENTS_INTERFACE, - &implements_iface_info); - g_type_add_interface_static (type, GST_TYPE_NAVIGATION, - &navigation_iface_info); -} - -static void -test_element_base_init (gpointer klass) -{ -} - -static void -test_element_class_init (TestElementClass * klass) -{ -} - -static gboolean -test_element_interface_supported (GstImplementsInterface * ifacE, - GType interface_type) -{ - if (interface_type == GST_TYPE_NAVIGATION) - return TRUE; - - return FALSE; -} - -static void -gst_implements_interface_init (GstImplementsInterfaceClass * klass) -{ - klass->supported = test_element_interface_supported; -} - -static void -test_element_init (TestElement * this, TestElementClass * klass) -{ -} - -static void -nav_send_event (GstNavigation * navigation, GstStructure * structure) -{ - GstEvent *event = gst_event_new_navigation (structure); - GstNavigationEventType etype = gst_navigation_event_get_type (event); - TestElement *self = (TestElement *) (navigation); - - fail_if (etype == GST_NAVIGATION_EVENT_INVALID, - "Received navigation event could not be parsed"); - fail_unless (etype == self->sent_type, - "Received navigation event did not match sent"); - - switch (etype) { - case GST_NAVIGATION_EVENT_KEY_PRESS: - case GST_NAVIGATION_EVENT_KEY_RELEASE:{ - const gchar *key; - fail_unless (gst_navigation_event_parse_key_event (event, &key)); - fail_unless (strcmp (key, self->sent_key) == 0); - break; - } - case GST_NAVIGATION_EVENT_MOUSE_BUTTON_PRESS: - case GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE:{ - gint button; - gdouble x, y; - fail_unless (gst_navigation_event_parse_mouse_button_event (event, - &button, &x, &y)); - fail_unless (button == self->sent_button); - fail_unless (x == self->sent_x); - fail_unless (y == self->sent_y); - break; - } - case GST_NAVIGATION_EVENT_MOUSE_MOVE:{ - gdouble x, y; - fail_unless (gst_navigation_event_parse_mouse_move_event (event, &x, &y)); - fail_unless (x == self->sent_x); - fail_unless (y == self->sent_y); - break; - } - case GST_NAVIGATION_EVENT_COMMAND:{ - GstNavigationCommand cmd; - fail_unless (gst_navigation_event_parse_command (event, &cmd)); - fail_unless (cmd == self->sent_command); - } - default: - break; - } - - gst_event_unref (event); -} - -GST_START_TEST (test_events) -{ - /* Create an empty GstElement that has a GstNavigation interface and then - * send some navigation events and validate them */ - TestElement *test_element = - (TestElement *) g_object_new (TEST_ELEMENT_TYPE, NULL); - GstNavigationCommand cmds[] = { - GST_NAVIGATION_COMMAND_MENU1, GST_NAVIGATION_COMMAND_MENU2, - GST_NAVIGATION_COMMAND_MENU3, GST_NAVIGATION_COMMAND_MENU4, - GST_NAVIGATION_COMMAND_MENU5, GST_NAVIGATION_COMMAND_MENU6, - GST_NAVIGATION_COMMAND_MENU7, GST_NAVIGATION_COMMAND_LEFT, - GST_NAVIGATION_COMMAND_RIGHT, GST_NAVIGATION_COMMAND_UP, - GST_NAVIGATION_COMMAND_DOWN, GST_NAVIGATION_COMMAND_ACTIVATE, - GST_NAVIGATION_COMMAND_PREV_ANGLE, GST_NAVIGATION_COMMAND_NEXT_ANGLE - }; - gint i; - - test_element->sent_type = GST_NAVIGATION_EVENT_KEY_PRESS; - test_element->sent_key = "1"; - gst_navigation_send_key_event (GST_NAVIGATION (test_element), "key-press", - "1"); - - test_element->sent_type = GST_NAVIGATION_EVENT_KEY_RELEASE; - test_element->sent_key = "2"; - gst_navigation_send_key_event (GST_NAVIGATION (test_element), "key-release", - "2"); - - test_element->sent_type = GST_NAVIGATION_EVENT_MOUSE_MOVE; - test_element->sent_x = 50; - test_element->sent_y = 100; - gst_navigation_send_mouse_event (GST_NAVIGATION (test_element), "mouse-move", - 0, 50, 100); - - test_element->sent_type = GST_NAVIGATION_EVENT_MOUSE_BUTTON_PRESS; - test_element->sent_x = 10; - test_element->sent_y = 20; - test_element->sent_button = 1; - gst_navigation_send_mouse_event (GST_NAVIGATION (test_element), - "mouse-button-press", 1, 10, 20); - - for (i = 0; i < G_N_ELEMENTS (cmds); i++) { - test_element->sent_type = GST_NAVIGATION_EVENT_COMMAND; - test_element->sent_command = cmds[i]; - gst_navigation_send_command (GST_NAVIGATION (test_element), cmds[i]); - } - - gst_object_unref (test_element); -} - -GST_END_TEST; - -GST_START_TEST (test_messages) -{ - GstMessage *m; - /* GST_NAVIGATION_MESSAGE_MOUSE_OVER */ - { - gboolean active; - m = gst_navigation_message_new_mouse_over (NULL, TRUE); - fail_if (m == NULL); - fail_unless (gst_navigation_message_get_type (m) == - GST_NAVIGATION_MESSAGE_MOUSE_OVER); - fail_unless (GST_MESSAGE_SRC (m) == NULL); - fail_unless (gst_navigation_message_parse_mouse_over (m, &active)); - fail_unless (active == TRUE); - gst_message_unref (m); - - m = gst_navigation_message_new_mouse_over (NULL, FALSE); - fail_if (m == NULL); - fail_unless (GST_MESSAGE_SRC (m) == NULL); - fail_unless (gst_navigation_message_get_type (m) == - GST_NAVIGATION_MESSAGE_MOUSE_OVER); - fail_unless (gst_navigation_message_parse_mouse_over (m, &active)); - fail_unless (active == FALSE); - gst_message_unref (m); - } - - /* GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED */ - { - m = gst_navigation_message_new_commands_changed (NULL); - fail_if (m == NULL); - fail_unless (GST_MESSAGE_SRC (m) == NULL); - fail_unless (gst_navigation_message_get_type (m) == - GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED); - gst_message_unref (m); - } - - /* GST_NAVIGATION_MESSAGE_ANGLES_CHANGED */ - { - guint angle, angles; - m = gst_navigation_message_new_angles_changed (NULL, 1, 5); - fail_if (m == NULL); - fail_unless (GST_MESSAGE_SRC (m) == NULL); - fail_unless (gst_navigation_message_get_type (m) == - GST_NAVIGATION_MESSAGE_ANGLES_CHANGED); - fail_unless (gst_navigation_message_parse_angles_changed (m, &angle, - &angles)); - fail_unless (angle == 1); - fail_unless (angles == 5); - gst_message_unref (m); - } -} - -GST_END_TEST; - -GST_START_TEST (test_queries) -{ - GstQuery *q; - - /* GST_NAVIGATION_QUERY_COMMANDS */ - { - guint n; - GstNavigationCommand cmd; - - q = gst_navigation_query_new_commands (); - fail_unless (q != NULL); - fail_unless (gst_navigation_query_get_type (q) == - GST_NAVIGATION_QUERY_COMMANDS); - gst_navigation_query_set_commands (q, 3, GST_NAVIGATION_COMMAND_LEFT, - GST_NAVIGATION_COMMAND_MENU1, GST_NAVIGATION_COMMAND_MENU5); - fail_unless (gst_navigation_query_parse_commands_length (q, &n)); - fail_unless (n == 3); - fail_unless (gst_navigation_query_parse_commands_nth (q, 1, &cmd)); - fail_unless (cmd == GST_NAVIGATION_COMMAND_MENU1); - - fail_unless (gst_navigation_query_parse_commands_length (q, NULL)); - fail_unless (gst_navigation_query_parse_commands_nth (q, 2, NULL)); - - gst_query_unref (q); - } - - /* GST_NAVIGATION_QUERY_ANGLES */ - { - guint angle, angles; - q = gst_navigation_query_new_angles (); - fail_unless (q != NULL); - fail_unless (gst_navigation_query_get_type (q) == - GST_NAVIGATION_QUERY_ANGLES); - gst_navigation_query_set_angles (q, 4, 8); - fail_unless (gst_navigation_query_parse_angles (q, &angle, &angles)); - fail_unless (angle == 4); - fail_unless (angles == 8); - - fail_unless (gst_navigation_query_parse_angles (q, NULL, &angles)); - fail_unless (gst_navigation_query_parse_angles (q, &angle, NULL)); - fail_unless (gst_navigation_query_parse_angles (q, NULL, NULL)); - - gst_query_unref (q); - } - -} - -GST_END_TEST; - -static Suite * -navigation_suite (void) -{ - Suite *s = suite_create ("navigation interface"); - TCase *tc_chain = tcase_create ("notifications"); - - suite_add_tcase (s, tc_chain); - tcase_add_test (tc_chain, test_events); - tcase_add_test (tc_chain, test_messages); - tcase_add_test (tc_chain, test_queries); - - return s; -} - -int -main (int argc, char **argv) -{ - int nf; - - Suite *s = navigation_suite (); - SRunner *sr = srunner_create (s); - - gst_check_init (&argc, &argv); - - srunner_run_all (sr, CK_NORMAL); - nf = srunner_ntests_failed (sr); - srunner_free (sr); - - return nf; -} |