sl@0: /* Portion Copyright © 2008-09 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. */ sl@0: #include sl@0: #include sl@0: sl@0: #ifdef SYMBIAN sl@0: #include sl@0: #include "mrt2_glib2_test.h" sl@0: #endif /*SYMBIAN*/ sl@0: int error_test1_int; sl@0: char *error_test2_string; sl@0: gboolean error_test3_boolean; sl@0: sl@0: int arg_test1_int; sl@0: gchar *arg_test2_string; sl@0: gchar *arg_test3_filename; sl@0: sl@0: gchar *callback_test1_string; sl@0: gboolean callback_test2_int; sl@0: sl@0: gchar *callback_test_optional_string; sl@0: gboolean callback_test_optional_boolean; sl@0: sl@0: gchar **array_test1_array; sl@0: sl@0: gboolean ignore_test1_boolean; sl@0: gboolean ignore_test2_boolean; sl@0: gchar *ignore_test3_string; sl@0: sl@0: gchar ** sl@0: split_string (const char *str, int *argc) sl@0: { sl@0: gchar **argv; sl@0: int len; sl@0: sl@0: argv = g_strsplit (str, " ", 0); sl@0: sl@0: for (len = 0; argv[len] != NULL; len++); sl@0: sl@0: if (argc) sl@0: *argc = len; sl@0: sl@0: return argv; sl@0: } sl@0: sl@0: gchar * sl@0: join_stringv (int argc, char **argv) sl@0: { sl@0: int i; sl@0: GString *str; sl@0: sl@0: str = g_string_new (NULL); sl@0: sl@0: for (i = 0; i < argc; i++) sl@0: { sl@0: g_string_append (str, argv[i]); sl@0: sl@0: if (i < argc - 1) sl@0: g_string_append_c (str, ' '); sl@0: } sl@0: sl@0: return g_string_free (str, FALSE); sl@0: } sl@0: sl@0: /* Performs a shallow copy */ sl@0: char ** sl@0: copy_stringv (char **argv, int argc) sl@0: { sl@0: return g_memdup (argv, sizeof (char *) * (argc + 1)); sl@0: } sl@0: sl@0: sl@0: static gboolean sl@0: error_test1_pre_parse (GOptionContext *context, sl@0: GOptionGroup *group, sl@0: gpointer data, sl@0: GError **error) sl@0: { sl@0: g_assert (error_test1_int == 0x12345678); sl@0: sl@0: return TRUE; sl@0: } sl@0: sl@0: static gboolean sl@0: error_test1_post_parse (GOptionContext *context, sl@0: GOptionGroup *group, sl@0: gpointer data, sl@0: GError **error) sl@0: { sl@0: g_assert (error_test1_int == 20); sl@0: sl@0: /* Set an error in the post hook */ sl@0: g_set_error (error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, ""); sl@0: sl@0: return FALSE; sl@0: } sl@0: sl@0: void sl@0: error_test1 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: GOptionGroup *main_group; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, 0, G_OPTION_ARG_INT, &error_test1_int, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_INT; sl@0: entries[0].arg_data = (gpointer)&error_test1_int; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Set pre and post parse hooks */ sl@0: main_group = g_option_context_get_main_group (context); sl@0: g_option_group_set_parse_hooks (main_group, sl@0: error_test1_pre_parse, error_test1_post_parse); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test 20", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval == FALSE); sl@0: sl@0: /* On failure, values should be reset */ sl@0: g_assert (error_test1_int == 0x12345678); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: sl@0: } sl@0: sl@0: static gboolean sl@0: error_test2_pre_parse (GOptionContext *context, sl@0: GOptionGroup *group, sl@0: gpointer data, sl@0: GError **error) sl@0: { sl@0: g_assert (strcmp (error_test2_string, "foo") == 0); sl@0: sl@0: return TRUE; sl@0: } sl@0: sl@0: static gboolean sl@0: error_test2_post_parse (GOptionContext *context, sl@0: GOptionGroup *group, sl@0: gpointer data, sl@0: GError **error) sl@0: { sl@0: g_assert (strcmp (error_test2_string, "bar") == 0); sl@0: sl@0: /* Set an error in the post hook */ sl@0: g_set_error (error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, ""); sl@0: sl@0: return FALSE; sl@0: } sl@0: sl@0: void sl@0: error_test2 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: GOptionGroup *main_group; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, 0, G_OPTION_ARG_STRING, &error_test2_string, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_STRING; sl@0: entries[0].arg_data = (gpointer)&error_test2_string; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Set pre and post parse hooks */ sl@0: main_group = g_option_context_get_main_group (context); sl@0: g_option_group_set_parse_hooks (main_group, sl@0: error_test2_pre_parse, error_test2_post_parse); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test bar", &argc); sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: sl@0: g_error_free (error); sl@0: g_assert (retval == FALSE); sl@0: sl@0: g_assert (strcmp (error_test2_string, "foo") == 0); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: static gboolean sl@0: error_test3_pre_parse (GOptionContext *context, sl@0: GOptionGroup *group, sl@0: gpointer data, sl@0: GError **error) sl@0: { sl@0: g_assert (!error_test3_boolean); sl@0: sl@0: return TRUE; sl@0: } sl@0: sl@0: static gboolean sl@0: error_test3_post_parse (GOptionContext *context, sl@0: GOptionGroup *group, sl@0: gpointer data, sl@0: GError **error) sl@0: { sl@0: g_assert (error_test3_boolean); sl@0: sl@0: /* Set an error in the post hook */ sl@0: g_set_error (error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, ""); sl@0: sl@0: return FALSE; sl@0: } sl@0: sl@0: void sl@0: error_test3 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: GOptionGroup *main_group; sl@0: sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, 0, G_OPTION_ARG_NONE, &error_test3_boolean, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&error_test3_boolean; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Set pre and post parse hooks */ sl@0: main_group = g_option_context_get_main_group (context); sl@0: g_option_group_set_parse_hooks (main_group, sl@0: error_test3_pre_parse, error_test3_post_parse); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test", &argc); sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: sl@0: g_error_free (error); sl@0: g_assert (retval == FALSE); sl@0: sl@0: g_assert (!error_test3_boolean); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: arg_test1 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, 0, G_OPTION_ARG_INT, &arg_test1_int, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_INT; sl@0: entries[0].arg_data = (gpointer)&arg_test1_int; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test 20 --test 30", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Last arg specified is the one that should be stored */ sl@0: g_assert (arg_test1_int == 30); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: arg_test2 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, 0, G_OPTION_ARG_STRING, &arg_test2_string, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_STRING; sl@0: entries[0].arg_data = (gpointer)&arg_test2_string; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test foo --test bar", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Last arg specified is the one that should be stored */ sl@0: g_assert (strcmp (arg_test2_string, "bar") == 0); sl@0: sl@0: g_free (arg_test2_string); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: arg_test3 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, 0, G_OPTION_ARG_FILENAME, &arg_test3_filename, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_FILENAME; sl@0: entries[0].arg_data = (gpointer)&arg_test3_filename; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test foo.txt", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Last arg specified is the one that should be stored */ sl@0: g_assert (strcmp (arg_test3_filename, "foo.txt") == 0); sl@0: sl@0: g_free (arg_test3_filename); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: static gboolean sl@0: callback_parse1 (const gchar *option_name, const gchar *value, sl@0: gpointer data, GError **error) sl@0: { sl@0: callback_test1_string = g_strdup (value); sl@0: return TRUE; sl@0: } sl@0: sl@0: void sl@0: callback_test1 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, 0, G_OPTION_ARG_CALLBACK, callback_parse1, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_CALLBACK; sl@0: entries[0].arg_data = (gpointer)callback_parse1; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test foo.txt", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: g_assert (strcmp (callback_test1_string, "foo.txt") == 0); sl@0: sl@0: g_free (callback_test1_string); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: static gboolean sl@0: callback_parse2 (const gchar *option_name, const gchar *value, sl@0: gpointer data, GError **error) sl@0: { sl@0: callback_test2_int++; sl@0: return TRUE; sl@0: } sl@0: sl@0: void sl@0: callback_test2 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, callback_parse2, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = G_OPTION_FLAG_NO_ARG; sl@0: entries[0].arg = G_OPTION_ARG_CALLBACK; sl@0: entries[0].arg_data = (gpointer)callback_parse2; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test --test", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: g_assert (callback_test2_int == 2); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: static gboolean sl@0: callback_parse_optional (const gchar *option_name, const gchar *value, sl@0: gpointer data, GError **error) sl@0: { sl@0: callback_test_optional_boolean = TRUE; sl@0: if (value) sl@0: callback_test_optional_string = g_strdup (value); sl@0: else sl@0: callback_test_optional_string = NULL; sl@0: return TRUE; sl@0: } sl@0: sl@0: void sl@0: callback_test_optional_1 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, sl@0: callback_parse_optional, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = G_OPTION_FLAG_OPTIONAL_ARG; sl@0: entries[0].arg = G_OPTION_ARG_CALLBACK; sl@0: entries[0].arg_data = (gpointer)callback_parse_optional; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test foo.txt", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: g_assert (strcmp (callback_test_optional_string, "foo.txt") == 0); sl@0: sl@0: g_assert (callback_test_optional_boolean); sl@0: sl@0: g_free (callback_test_optional_string); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: callback_test_optional_2 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, sl@0: callback_parse_optional, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = G_OPTION_FLAG_OPTIONAL_ARG; sl@0: entries[0].arg = G_OPTION_ARG_CALLBACK; sl@0: entries[0].arg_data = (gpointer)callback_parse_optional; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: g_assert (callback_test_optional_string == NULL); sl@0: sl@0: g_assert (callback_test_optional_boolean); sl@0: sl@0: g_free (callback_test_optional_string); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: callback_test_optional_3 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 't', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, sl@0: callback_parse_optional, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 't'; sl@0: entries[0].flags = G_OPTION_FLAG_OPTIONAL_ARG; sl@0: entries[0].arg = G_OPTION_ARG_CALLBACK; sl@0: entries[0].arg_data = (gpointer)callback_parse_optional; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program -t foo.txt", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: g_assert (strcmp (callback_test_optional_string, "foo.txt") == 0); sl@0: sl@0: g_assert (callback_test_optional_boolean); sl@0: sl@0: g_free (callback_test_optional_string); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: sl@0: void sl@0: callback_test_optional_4 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 't', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, sl@0: callback_parse_optional, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 't'; sl@0: entries[0].flags = G_OPTION_FLAG_OPTIONAL_ARG; sl@0: entries[0].arg = G_OPTION_ARG_CALLBACK; sl@0: entries[0].arg_data = (gpointer)callback_parse_optional; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program -t", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: g_assert (callback_test_optional_string == NULL); sl@0: sl@0: g_assert (callback_test_optional_boolean); sl@0: sl@0: g_free (callback_test_optional_string); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: callback_test_optional_5 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean dummy; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "dummy", 'd', 0, G_OPTION_ARG_NONE, &dummy, NULL }, sl@0: { "test", 't', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, sl@0: callback_parse_optional, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [3]; sl@0: sl@0: entries[0].long_name = "dummy"; sl@0: entries[0].short_name = 'd'; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&dummy; sl@0: entries[0].description = NULL; sl@0: sl@0: entries[1].long_name = "test"; sl@0: entries[1].short_name = 't'; sl@0: entries[1].flags = G_OPTION_FLAG_OPTIONAL_ARG; sl@0: entries[1].arg = G_OPTION_ARG_CALLBACK; sl@0: entries[1].arg_data = (gpointer)callback_parse_optional; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: sl@0: sl@0: entries[2].long_name = NULL; sl@0: entries[2].short_name = 0; sl@0: entries[2].arg_data = NULL; sl@0: entries[2].description = NULL; sl@0: entries[2].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test --dummy", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: g_assert (callback_test_optional_string == NULL); sl@0: sl@0: g_assert (callback_test_optional_boolean); sl@0: sl@0: g_free (callback_test_optional_string); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: callback_test_optional_6 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean dummy; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "dummy", 'd', 0, G_OPTION_ARG_NONE, &dummy, NULL }, sl@0: { "test", 't', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, sl@0: callback_parse_optional, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [3]; sl@0: sl@0: entries[0].long_name = "dummy"; sl@0: entries[0].short_name = 'd'; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&dummy; sl@0: entries[0].description = NULL; sl@0: sl@0: entries[1].long_name = "test"; sl@0: entries[1].short_name = 't'; sl@0: entries[1].flags = G_OPTION_FLAG_OPTIONAL_ARG; sl@0: entries[1].arg = G_OPTION_ARG_CALLBACK; sl@0: entries[1].arg_data = (gpointer)callback_parse_optional; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: sl@0: sl@0: entries[2].long_name = NULL; sl@0: entries[2].short_name = 0; sl@0: entries[2].arg_data = NULL; sl@0: entries[2].description = NULL; sl@0: entries[2].arg_description = NULL; sl@0: #endif sl@0: sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program -t -d", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: g_assert (callback_test_optional_string == NULL); sl@0: sl@0: g_assert (callback_test_optional_boolean); sl@0: sl@0: g_free (callback_test_optional_string); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: callback_test_optional_7 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean dummy; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "dummy", 'd', 0, G_OPTION_ARG_NONE, &dummy, NULL }, sl@0: { "test", 't', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, sl@0: callback_parse_optional, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [3]; sl@0: sl@0: entries[0].long_name = "dummy"; sl@0: entries[0].short_name = 'd'; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&dummy; sl@0: entries[0].description = NULL; sl@0: sl@0: entries[1].long_name = "test"; sl@0: entries[1].short_name = 't'; sl@0: entries[1].flags = G_OPTION_FLAG_OPTIONAL_ARG; sl@0: entries[1].arg = G_OPTION_ARG_CALLBACK; sl@0: entries[1].arg_data = (gpointer)callback_parse_optional; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: sl@0: sl@0: entries[2].long_name = NULL; sl@0: entries[2].short_name = 0; sl@0: entries[2].arg_data = NULL; sl@0: entries[2].description = NULL; sl@0: entries[2].arg_description = NULL; sl@0: #endif sl@0: sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program -td", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: g_assert (callback_test_optional_string == NULL); sl@0: sl@0: g_assert (callback_test_optional_boolean); sl@0: sl@0: g_free (callback_test_optional_string); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: callback_test_optional_8 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean dummy; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "dummy", 'd', 0, G_OPTION_ARG_NONE, &dummy, NULL }, sl@0: { "test", 't', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, sl@0: callback_parse_optional, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [3]; sl@0: sl@0: entries[0].long_name = "dummy"; sl@0: entries[0].short_name = 'd'; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&dummy; sl@0: entries[0].description = NULL; sl@0: sl@0: entries[1].long_name = "test"; sl@0: entries[1].short_name = 't'; sl@0: entries[1].flags = G_OPTION_FLAG_OPTIONAL_ARG; sl@0: entries[1].arg = G_OPTION_ARG_CALLBACK; sl@0: entries[1].arg_data = (gpointer)callback_parse_optional; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: sl@0: sl@0: entries[2].long_name = NULL; sl@0: entries[2].short_name = 0; sl@0: entries[2].arg_data = NULL; sl@0: entries[2].description = NULL; sl@0: entries[2].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program -dt foo.txt", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: g_assert (callback_test_optional_string); sl@0: sl@0: g_assert (callback_test_optional_boolean); sl@0: sl@0: g_free (callback_test_optional_string); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: ignore_test1 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv, **argv_copy; sl@0: int argc; sl@0: gchar *arg; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&ignore_test1_boolean; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_set_ignore_unknown_options (context, TRUE); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test --hello", &argc); sl@0: argv_copy = copy_stringv (argv, argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: arg = join_stringv (argc, argv); sl@0: g_assert (strcmp (arg, "program --hello") == 0); sl@0: sl@0: g_free (arg); sl@0: g_strfreev (argv_copy); sl@0: g_free (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: ignore_test2 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: gchar *arg; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 't', 0, G_OPTION_ARG_NONE, &ignore_test2_boolean, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 't'; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&ignore_test2_boolean; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_set_ignore_unknown_options (context, TRUE); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program -test", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: arg = join_stringv (argc, argv); sl@0: g_assert (strcmp (arg, "program -es") == 0); sl@0: sl@0: g_free (arg); sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: ignore_test3 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv, **argv_copy; sl@0: int argc; sl@0: gchar *arg; sl@0: #ifndef SYMBAIN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, 0, G_OPTION_ARG_STRING, &ignore_test3_string, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_STRING; sl@0: entries[0].arg_data = (gpointer)&ignore_test3_string; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_set_ignore_unknown_options (context, TRUE); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test foo --hello", &argc); sl@0: argv_copy = copy_stringv (argv, argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: arg = join_stringv (argc, argv); sl@0: g_assert (strcmp (arg, "program --hello") == 0); sl@0: sl@0: g_assert (strcmp (ignore_test3_string, "foo") == 0); sl@0: g_free (ignore_test3_string); sl@0: sl@0: g_free (arg); sl@0: g_strfreev (argv_copy); sl@0: g_free (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: array_test1 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 0, 0, G_OPTION_ARG_STRING_ARRAY, &array_test1_array, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_STRING_ARRAY; sl@0: entries[0].arg_data = (gpointer)&array_test1_array; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test foo --test bar", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: g_assert (strcmp (array_test1_array[0], "foo") == 0); sl@0: g_assert (strcmp (array_test1_array[1], "bar") == 0); sl@0: g_assert (array_test1_array[2] == NULL); sl@0: sl@0: g_strfreev (array_test1_array); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: add_test1 (void) sl@0: { sl@0: GOptionContext *context; sl@0: sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries1 [] = sl@0: { { "test1", 0, 0, G_OPTION_ARG_STRING_ARRAY, NULL, NULL, NULL }, sl@0: { NULL } }; sl@0: GOptionEntry entries2 [] = sl@0: { { "test2", 0, 0, G_OPTION_ARG_STRING_ARRAY, NULL, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries1 [2]; sl@0: GOptionEntry entries2 [2]; sl@0: sl@0: entries1[0].long_name = "test1"; sl@0: entries1[0].short_name = 0; sl@0: entries1[0].flags = 0; sl@0: entries1[0].arg = G_OPTION_ARG_STRING_ARRAY; sl@0: entries1[0].arg_data = NULL; sl@0: entries1[0].description = NULL; sl@0: entries1[0].arg_description = NULL; sl@0: sl@0: entries1[1].long_name = NULL; sl@0: entries1[1].short_name = 0; sl@0: entries1[1].arg_data = NULL; sl@0: entries1[1].description = NULL; sl@0: entries1[1].arg_description = NULL; sl@0: sl@0: sl@0: entries2[0].long_name = "test2"; sl@0: entries2[0].short_name = 0; sl@0: entries2[0].flags = 0; sl@0: entries2[0].arg = G_OPTION_ARG_STRING_ARRAY; sl@0: entries2[0].arg_data = NULL; sl@0: entries2[0].description = NULL; sl@0: entries2[0].arg_description = NULL; sl@0: sl@0: entries2[1].long_name = NULL; sl@0: entries2[1].short_name = 0; sl@0: entries2[1].arg_data = NULL; sl@0: entries2[1].description = NULL; sl@0: entries2[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries1, NULL); sl@0: g_option_context_add_main_entries (context, entries2, NULL); sl@0: sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: empty_test1 (void) sl@0: { sl@0: GOptionContext *context; sl@0: GOptionEntry entries [] = sl@0: { { NULL } }; sl@0: sl@0: g_set_prgname (NULL); sl@0: sl@0: context = g_option_context_new (NULL); sl@0: sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: g_option_context_parse (context, NULL, NULL, NULL); sl@0: sl@0: g_assert (strcmp (g_get_prgname (), "") == 0); sl@0: sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: empty_test2 (void) sl@0: { sl@0: GOptionContext *context; sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_parse (context, NULL, NULL, NULL); sl@0: sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: empty_test3 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gint argc; sl@0: gchar **argv; sl@0: sl@0: argc = 0; sl@0: argv = NULL; sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_parse (context, &argc, &argv, NULL); sl@0: sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: /* check that non-option arguments are left in argv by default */ sl@0: void sl@0: rest_test1 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = { sl@0: { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL }, sl@0: { NULL } sl@0: }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&ignore_test1_boolean; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program foo --test bar", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: g_assert (ignore_test1_boolean); sl@0: g_assert (strcmp (argv[0], "program") == 0); sl@0: g_assert (strcmp (argv[1], "foo") == 0); sl@0: g_assert (strcmp (argv[2], "bar") == 0); sl@0: g_assert (argv[3] == NULL); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: /* check that -- works */ sl@0: void sl@0: rest_test2 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = { sl@0: { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL }, sl@0: { NULL } sl@0: }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&ignore_test1_boolean; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program foo --test -- -bar", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: g_assert (ignore_test1_boolean); sl@0: g_assert (strcmp (argv[0], "program") == 0); sl@0: g_assert (strcmp (argv[1], "foo") == 0); sl@0: g_assert (strcmp (argv[2], "--") == 0); sl@0: g_assert (strcmp (argv[3], "-bar") == 0); sl@0: g_assert (argv[4] == NULL); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: /* check that -- stripping works */ sl@0: void sl@0: rest_test2a (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = { sl@0: { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL }, sl@0: { NULL } sl@0: }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&ignore_test1_boolean; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program foo --test -- bar", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: g_assert (ignore_test1_boolean); sl@0: g_assert (strcmp (argv[0], "program") == 0); sl@0: g_assert (strcmp (argv[1], "foo") == 0); sl@0: g_assert (strcmp (argv[2], "bar") == 0); sl@0: g_assert (argv[3] == NULL); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: rest_test2b (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = { sl@0: { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL }, sl@0: { NULL } sl@0: }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&ignore_test1_boolean; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_set_ignore_unknown_options (context, TRUE); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program foo --test -bar --", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: g_assert (ignore_test1_boolean); sl@0: g_assert (strcmp (argv[0], "program") == 0); sl@0: g_assert (strcmp (argv[1], "foo") == 0); sl@0: g_assert (strcmp (argv[2], "-bar") == 0); sl@0: g_assert (argv[3] == NULL); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: rest_test2c (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = { sl@0: { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL }, sl@0: { NULL } sl@0: }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&ignore_test1_boolean; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test foo -- bar", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: g_assert (ignore_test1_boolean); sl@0: g_assert (strcmp (argv[0], "program") == 0); sl@0: g_assert (strcmp (argv[1], "foo") == 0); sl@0: g_assert (strcmp (argv[2], "bar") == 0); sl@0: g_assert (argv[3] == NULL); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: rest_test2d (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = { sl@0: { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL }, sl@0: { NULL } sl@0: }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&ignore_test1_boolean; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test -- -bar", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: g_assert (ignore_test1_boolean); sl@0: g_assert (strcmp (argv[0], "program") == 0); sl@0: g_assert (strcmp (argv[1], "--") == 0); sl@0: g_assert (strcmp (argv[2], "-bar") == 0); sl@0: g_assert (argv[3] == NULL); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: sl@0: /* check that G_OPTION_REMAINING collects non-option arguments */ sl@0: void sl@0: rest_test3 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = { sl@0: { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL }, sl@0: { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &array_test1_array, NULL, NULL }, sl@0: { NULL } sl@0: }; sl@0: #else sl@0: GOptionEntry entries [3]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&ignore_test1_boolean; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: sl@0: entries[1].long_name = G_OPTION_REMAINING; sl@0: entries[1].short_name = 0; sl@0: entries[1].flags = 0; sl@0: entries[1].arg = G_OPTION_ARG_STRING_ARRAY; sl@0: entries[1].arg_data = (gpointer)&array_test1_array; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: sl@0: entries[2].long_name = NULL; sl@0: entries[2].short_name = 0; sl@0: entries[2].arg_data = NULL; sl@0: entries[2].description = NULL; sl@0: entries[2].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program foo --test bar", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: g_assert (ignore_test1_boolean); sl@0: g_assert (strcmp (array_test1_array[0], "foo") == 0); sl@0: g_assert (strcmp (array_test1_array[1], "bar") == 0); sl@0: g_assert (array_test1_array[2] == NULL); sl@0: sl@0: g_strfreev (array_test1_array); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: sl@0: /* check that G_OPTION_REMAINING and -- work together */ sl@0: void sl@0: rest_test4 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = { sl@0: { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL }, sl@0: { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &array_test1_array, NULL, NULL }, sl@0: { NULL } sl@0: }; sl@0: #else sl@0: GOptionEntry entries [3]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&ignore_test1_boolean; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: sl@0: entries[1].long_name = G_OPTION_REMAINING; sl@0: entries[1].short_name = 0; sl@0: entries[1].flags = 0; sl@0: entries[1].arg = G_OPTION_ARG_STRING_ARRAY; sl@0: entries[1].arg_data = (gpointer)&array_test1_array; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: sl@0: entries[2].long_name = NULL; sl@0: entries[2].short_name = 0; sl@0: entries[2].arg_data = NULL; sl@0: entries[2].description = NULL; sl@0: entries[2].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program foo --test -- -bar", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: g_assert (ignore_test1_boolean); sl@0: g_assert (strcmp (array_test1_array[0], "foo") == 0); sl@0: g_assert (strcmp (array_test1_array[1], "-bar") == 0); sl@0: g_assert (array_test1_array[2] == NULL); sl@0: sl@0: g_strfreev (array_test1_array); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: /* test that G_OPTION_REMAINING works with G_OPTION_ARG_FILENAME_ARRAY */ sl@0: void sl@0: rest_test5 (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = { sl@0: { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL }, sl@0: { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &array_test1_array, NULL, NULL }, sl@0: { NULL } sl@0: }; sl@0: #else sl@0: GOptionEntry entries [3]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 0; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_NONE; sl@0: entries[0].arg_data = (gpointer)&ignore_test1_boolean; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: sl@0: entries[1].long_name = G_OPTION_REMAINING; sl@0: entries[1].short_name = 0; sl@0: entries[1].flags = 0; sl@0: entries[1].arg = G_OPTION_ARG_FILENAME_ARRAY; sl@0: entries[1].arg_data = (gpointer)&array_test1_array; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: sl@0: entries[2].long_name = NULL; sl@0: entries[2].short_name = 0; sl@0: entries[2].arg_data = NULL; sl@0: entries[2].description = NULL; sl@0: entries[2].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program foo --test bar", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval); sl@0: sl@0: /* Check array */ sl@0: g_assert (ignore_test1_boolean); sl@0: g_assert (strcmp (array_test1_array[0], "foo") == 0); sl@0: g_assert (strcmp (array_test1_array[1], "bar") == 0); sl@0: g_assert (array_test1_array[2] == NULL); sl@0: sl@0: g_strfreev (array_test1_array); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: unknown_short_test (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = { { NULL } }; sl@0: #else sl@0: GOptionEntry entries [1]; sl@0: sl@0: entries[0].long_name = NULL; sl@0: entries[0].short_name = 0; sl@0: entries[0].arg_data = NULL; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program -0", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (!retval); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: /* test that lone dashes are treated as non-options */ sl@0: void lonely_dash_test (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: sl@0: context = g_option_context_new (NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program -", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: sl@0: g_assert (retval); sl@0: sl@0: g_assert (argv[1] && strcmp (argv[1], "-") == 0); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: void sl@0: missing_arg_test (void) sl@0: { sl@0: GOptionContext *context; sl@0: gboolean retval; sl@0: GError *error = NULL; sl@0: gchar **argv; sl@0: int argc; sl@0: gchar *arg = NULL; sl@0: #ifndef SYMBIAN sl@0: GOptionEntry entries [] = sl@0: { { "test", 't', 0, G_OPTION_ARG_STRING, &arg, NULL, NULL }, sl@0: { NULL } }; sl@0: #else sl@0: GOptionEntry entries [2]; sl@0: sl@0: entries[0].long_name = "test"; sl@0: entries[0].short_name = 't'; sl@0: entries[0].flags = 0; sl@0: entries[0].arg = G_OPTION_ARG_STRING; sl@0: entries[0].arg_data = (gpointer)&arg; sl@0: entries[0].description = NULL; sl@0: entries[0].arg_description = NULL; sl@0: sl@0: entries[1].long_name = NULL; sl@0: entries[1].short_name = 0; sl@0: entries[1].arg_data = NULL; sl@0: entries[1].description = NULL; sl@0: entries[1].arg_description = NULL; sl@0: #endif sl@0: sl@0: context = g_option_context_new (NULL); sl@0: g_option_context_add_main_entries (context, entries, NULL); sl@0: sl@0: /* Now try parsing */ sl@0: argv = split_string ("program --test", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval == FALSE); sl@0: g_clear_error (&error); sl@0: sl@0: g_strfreev (argv); sl@0: sl@0: /* Try parsing again */ sl@0: argv = split_string ("program --t", &argc); sl@0: sl@0: retval = g_option_context_parse (context, &argc, &argv, &error); sl@0: g_assert (retval == FALSE); sl@0: sl@0: g_strfreev (argv); sl@0: g_option_context_free (context); sl@0: } sl@0: sl@0: int sl@0: main (int argc, char **argv) sl@0: { sl@0: #ifdef SYMBIAN sl@0: g_log_set_handler (NULL, G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, &mrtLogHandler, NULL); sl@0: g_set_print_handler(mrtPrintHandler); sl@0: #endif /*SYMBIAN*/ sl@0: /* Test that restoration on failure works */ sl@0: error_test1_int = 0x12345678; sl@0: error_test1 (); sl@0: error_test2_string = "foo"; sl@0: error_test2 (); sl@0: error_test3_boolean = FALSE; sl@0: error_test3 (); sl@0: sl@0: /* Test that special argument parsing works */ sl@0: arg_test1 (); sl@0: arg_test2 (); sl@0: arg_test3 (); sl@0: sl@0: /* Test string arrays */ sl@0: array_test1 (); sl@0: sl@0: /* Test callback args */ sl@0: callback_test1 (); sl@0: callback_test2 (); sl@0: sl@0: /* Test optional arg flag for callback */ sl@0: callback_test_optional_1 (); sl@0: callback_test_optional_2 (); sl@0: callback_test_optional_3 (); sl@0: callback_test_optional_4 (); sl@0: callback_test_optional_5 (); sl@0: callback_test_optional_6 (); sl@0: callback_test_optional_7 (); sl@0: callback_test_optional_8 (); sl@0: sl@0: /* Test ignoring options */ sl@0: ignore_test1 (); sl@0: ignore_test2 (); sl@0: ignore_test3 (); sl@0: sl@0: add_test1 (); sl@0: sl@0: /* Test parsing empty args */ sl@0: empty_test1 (); sl@0: empty_test2 (); sl@0: empty_test3 (); sl@0: sl@0: /* Test handling of rest args */ sl@0: rest_test1 (); sl@0: rest_test2 (); sl@0: rest_test2a (); sl@0: rest_test2b (); sl@0: rest_test2c (); sl@0: rest_test2d (); sl@0: rest_test3 (); sl@0: rest_test4 (); sl@0: rest_test5 (); sl@0: sl@0: /* test for bug 166609 */ sl@0: unknown_short_test (); sl@0: sl@0: /* test for bug 168008 */ sl@0: lonely_dash_test (); sl@0: sl@0: /* test for bug 305576 */ sl@0: missing_arg_test (); sl@0: sl@0: #ifdef SYMBIAN sl@0: testResultXml("option-test"); sl@0: #endif /* EMULATOR */ sl@0: return 0; sl@0: }