os/ossrv/glib/tsrc/BC/tests/option-test.c
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
/* Portion Copyright © 2008-09 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. */
sl@0
     2
#include <glib.h>
sl@0
     3
#include <string.h>
sl@0
     4
sl@0
     5
#ifdef SYMBIAN
sl@0
     6
#include <glib_global.h>
sl@0
     7
#include "mrt2_glib2_test.h"
sl@0
     8
#endif /*SYMBIAN*/
sl@0
     9
int error_test1_int;
sl@0
    10
char *error_test2_string;
sl@0
    11
gboolean error_test3_boolean;
sl@0
    12
sl@0
    13
int arg_test1_int;
sl@0
    14
gchar *arg_test2_string;
sl@0
    15
gchar *arg_test3_filename;
sl@0
    16
sl@0
    17
gchar *callback_test1_string;
sl@0
    18
gboolean callback_test2_int;
sl@0
    19
sl@0
    20
gchar *callback_test_optional_string;
sl@0
    21
gboolean callback_test_optional_boolean;
sl@0
    22
sl@0
    23
gchar **array_test1_array;
sl@0
    24
sl@0
    25
gboolean ignore_test1_boolean;
sl@0
    26
gboolean ignore_test2_boolean;
sl@0
    27
gchar *ignore_test3_string;
sl@0
    28
sl@0
    29
gchar **
sl@0
    30
split_string (const char *str, int *argc)
sl@0
    31
{
sl@0
    32
  gchar **argv;
sl@0
    33
  int len;
sl@0
    34
  
sl@0
    35
  argv = g_strsplit (str, " ", 0);
sl@0
    36
sl@0
    37
  for (len = 0; argv[len] != NULL; len++);
sl@0
    38
sl@0
    39
  if (argc)
sl@0
    40
    *argc = len;
sl@0
    41
    
sl@0
    42
  return argv;
sl@0
    43
}
sl@0
    44
sl@0
    45
gchar *
sl@0
    46
join_stringv (int argc, char **argv)
sl@0
    47
{
sl@0
    48
  int i;
sl@0
    49
  GString *str;
sl@0
    50
sl@0
    51
  str = g_string_new (NULL);
sl@0
    52
sl@0
    53
  for (i = 0; i < argc; i++)
sl@0
    54
    {
sl@0
    55
      g_string_append (str, argv[i]);
sl@0
    56
sl@0
    57
      if (i < argc - 1)
sl@0
    58
	g_string_append_c (str, ' ');
sl@0
    59
    }
sl@0
    60
sl@0
    61
  return g_string_free (str, FALSE);
sl@0
    62
}
sl@0
    63
sl@0
    64
/* Performs a shallow copy */
sl@0
    65
char **
sl@0
    66
copy_stringv (char **argv, int argc)
sl@0
    67
{
sl@0
    68
  return g_memdup (argv, sizeof (char *) * (argc + 1));
sl@0
    69
}
sl@0
    70
sl@0
    71
sl@0
    72
static gboolean
sl@0
    73
error_test1_pre_parse (GOptionContext *context,
sl@0
    74
		       GOptionGroup   *group,
sl@0
    75
		       gpointer	       data,
sl@0
    76
		       GError        **error)
sl@0
    77
{
sl@0
    78
  g_assert (error_test1_int == 0x12345678);
sl@0
    79
sl@0
    80
  return TRUE;
sl@0
    81
}
sl@0
    82
sl@0
    83
static gboolean
sl@0
    84
error_test1_post_parse (GOptionContext *context,
sl@0
    85
			GOptionGroup   *group,
sl@0
    86
			gpointer	  data,
sl@0
    87
			GError        **error)
sl@0
    88
{
sl@0
    89
  g_assert (error_test1_int == 20);
sl@0
    90
sl@0
    91
  /* Set an error in the post hook */
sl@0
    92
  g_set_error (error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "");
sl@0
    93
sl@0
    94
  return FALSE;
sl@0
    95
}
sl@0
    96
sl@0
    97
void
sl@0
    98
error_test1 (void)
sl@0
    99
{
sl@0
   100
  GOptionContext *context;
sl@0
   101
  gboolean retval;
sl@0
   102
  GError *error = NULL;
sl@0
   103
  gchar **argv;
sl@0
   104
  int argc;
sl@0
   105
  GOptionGroup *main_group;
sl@0
   106
#ifndef SYMBIAN
sl@0
   107
  GOptionEntry entries [] =
sl@0
   108
    { { "test", 0, 0, G_OPTION_ARG_INT, &error_test1_int, NULL, NULL },
sl@0
   109
      { NULL } };
sl@0
   110
#else    
sl@0
   111
sl@0
   112
  GOptionEntry entries [2];
sl@0
   113
 
sl@0
   114
  entries[0].long_name = "test";
sl@0
   115
  entries[0].short_name = 0;
sl@0
   116
  entries[0].flags = 0;
sl@0
   117
  entries[0].arg = G_OPTION_ARG_INT;
sl@0
   118
  entries[0].arg_data = (gpointer)&error_test1_int;
sl@0
   119
  entries[0].description =  NULL;
sl@0
   120
  entries[0].arg_description = NULL;
sl@0
   121
      
sl@0
   122
  entries[1].long_name = NULL;
sl@0
   123
  entries[1].short_name = 0;
sl@0
   124
  entries[1].arg_data = NULL;
sl@0
   125
  entries[1].description =  NULL;
sl@0
   126
  entries[1].arg_description = NULL;
sl@0
   127
#endif
sl@0
   128
  
sl@0
   129
  context = g_option_context_new (NULL);
sl@0
   130
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   131
sl@0
   132
  /* Set pre and post parse hooks */
sl@0
   133
  main_group = g_option_context_get_main_group (context);
sl@0
   134
  g_option_group_set_parse_hooks (main_group,
sl@0
   135
				  error_test1_pre_parse, error_test1_post_parse);
sl@0
   136
  
sl@0
   137
  /* Now try parsing */
sl@0
   138
  argv = split_string ("program --test 20", &argc);
sl@0
   139
sl@0
   140
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   141
  g_assert (retval == FALSE);
sl@0
   142
sl@0
   143
  /* On failure, values should be reset */
sl@0
   144
  g_assert (error_test1_int == 0x12345678);
sl@0
   145
  
sl@0
   146
  g_strfreev (argv);
sl@0
   147
  g_option_context_free (context);
sl@0
   148
  
sl@0
   149
}
sl@0
   150
sl@0
   151
static gboolean
sl@0
   152
error_test2_pre_parse (GOptionContext *context,
sl@0
   153
		       GOptionGroup   *group,
sl@0
   154
		       gpointer	  data,
sl@0
   155
		       GError        **error)
sl@0
   156
{
sl@0
   157
  g_assert (strcmp (error_test2_string, "foo") == 0);
sl@0
   158
sl@0
   159
  return TRUE;
sl@0
   160
}
sl@0
   161
sl@0
   162
static gboolean
sl@0
   163
error_test2_post_parse (GOptionContext *context,
sl@0
   164
			GOptionGroup   *group,
sl@0
   165
			gpointer	  data,
sl@0
   166
			GError        **error)
sl@0
   167
{
sl@0
   168
  g_assert (strcmp (error_test2_string, "bar") == 0);
sl@0
   169
sl@0
   170
  /* Set an error in the post hook */
sl@0
   171
  g_set_error (error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "");
sl@0
   172
sl@0
   173
  return FALSE;
sl@0
   174
}
sl@0
   175
sl@0
   176
void
sl@0
   177
error_test2 (void)
sl@0
   178
{
sl@0
   179
  GOptionContext *context;
sl@0
   180
  gboolean retval;
sl@0
   181
  GError *error = NULL;
sl@0
   182
  gchar **argv;
sl@0
   183
  int argc;
sl@0
   184
  GOptionGroup *main_group;
sl@0
   185
#ifndef SYMBIAN
sl@0
   186
  GOptionEntry entries [] =
sl@0
   187
    { { "test", 0, 0, G_OPTION_ARG_STRING, &error_test2_string, NULL, NULL },
sl@0
   188
      { NULL } };
sl@0
   189
#else      
sl@0
   190
  GOptionEntry entries [2];
sl@0
   191
  
sl@0
   192
  entries[0].long_name = "test";
sl@0
   193
  entries[0].short_name = 0;
sl@0
   194
  entries[0].flags = 0;
sl@0
   195
  entries[0].arg = G_OPTION_ARG_STRING;
sl@0
   196
  entries[0].arg_data = (gpointer)&error_test2_string;
sl@0
   197
  entries[0].description =  NULL;
sl@0
   198
  entries[0].arg_description = NULL;
sl@0
   199
      
sl@0
   200
  entries[1].long_name = NULL;
sl@0
   201
  entries[1].short_name = 0;
sl@0
   202
  entries[1].arg_data = NULL;
sl@0
   203
  entries[1].description =  NULL;
sl@0
   204
  entries[1].arg_description = NULL;
sl@0
   205
#endif  
sl@0
   206
sl@0
   207
sl@0
   208
  context = g_option_context_new (NULL);
sl@0
   209
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   210
sl@0
   211
  /* Set pre and post parse hooks */
sl@0
   212
  main_group = g_option_context_get_main_group (context);
sl@0
   213
  g_option_group_set_parse_hooks (main_group,
sl@0
   214
				  error_test2_pre_parse, error_test2_post_parse);
sl@0
   215
  
sl@0
   216
  /* Now try parsing */
sl@0
   217
  argv = split_string ("program --test bar", &argc);
sl@0
   218
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   219
sl@0
   220
  g_error_free (error);
sl@0
   221
  g_assert (retval == FALSE);
sl@0
   222
sl@0
   223
  g_assert (strcmp (error_test2_string, "foo") == 0);
sl@0
   224
  
sl@0
   225
  g_strfreev (argv);
sl@0
   226
  g_option_context_free (context);
sl@0
   227
}
sl@0
   228
sl@0
   229
static gboolean
sl@0
   230
error_test3_pre_parse (GOptionContext *context,
sl@0
   231
		       GOptionGroup   *group,
sl@0
   232
		       gpointer	  data,
sl@0
   233
		       GError        **error)
sl@0
   234
{
sl@0
   235
  g_assert (!error_test3_boolean);
sl@0
   236
sl@0
   237
  return TRUE;
sl@0
   238
}
sl@0
   239
sl@0
   240
static gboolean
sl@0
   241
error_test3_post_parse (GOptionContext *context,
sl@0
   242
			GOptionGroup   *group,
sl@0
   243
			gpointer	  data,
sl@0
   244
			GError        **error)
sl@0
   245
{
sl@0
   246
  g_assert (error_test3_boolean);
sl@0
   247
sl@0
   248
  /* Set an error in the post hook */
sl@0
   249
  g_set_error (error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "");
sl@0
   250
sl@0
   251
  return FALSE;
sl@0
   252
}
sl@0
   253
sl@0
   254
void
sl@0
   255
error_test3 (void)
sl@0
   256
{
sl@0
   257
  GOptionContext *context;
sl@0
   258
  gboolean retval;
sl@0
   259
  GError *error = NULL;
sl@0
   260
  gchar **argv;
sl@0
   261
  int argc;
sl@0
   262
  GOptionGroup *main_group;
sl@0
   263
 
sl@0
   264
#ifndef SYMBIAN 
sl@0
   265
  GOptionEntry entries [] =
sl@0
   266
    { { "test", 0, 0, G_OPTION_ARG_NONE, &error_test3_boolean, NULL, NULL },
sl@0
   267
      { NULL } };
sl@0
   268
#else      
sl@0
   269
  GOptionEntry entries [2];
sl@0
   270
  
sl@0
   271
  entries[0].long_name = "test";
sl@0
   272
  entries[0].short_name = 0;
sl@0
   273
  entries[0].flags = 0;
sl@0
   274
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
   275
  entries[0].arg_data = (gpointer)&error_test3_boolean;
sl@0
   276
  entries[0].description =  NULL;
sl@0
   277
  entries[0].arg_description = NULL;
sl@0
   278
      
sl@0
   279
  entries[1].long_name = NULL;
sl@0
   280
  entries[1].short_name = 0;
sl@0
   281
  entries[1].arg_data = NULL;
sl@0
   282
  entries[1].description =  NULL;
sl@0
   283
  entries[1].arg_description = NULL;
sl@0
   284
#endif
sl@0
   285
      
sl@0
   286
sl@0
   287
  context = g_option_context_new (NULL);
sl@0
   288
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   289
sl@0
   290
  /* Set pre and post parse hooks */
sl@0
   291
  main_group = g_option_context_get_main_group (context);
sl@0
   292
  g_option_group_set_parse_hooks (main_group,
sl@0
   293
				  error_test3_pre_parse, error_test3_post_parse);
sl@0
   294
  
sl@0
   295
  /* Now try parsing */
sl@0
   296
  argv = split_string ("program --test", &argc);
sl@0
   297
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   298
sl@0
   299
  g_error_free (error);
sl@0
   300
  g_assert (retval == FALSE);
sl@0
   301
sl@0
   302
  g_assert (!error_test3_boolean);
sl@0
   303
  
sl@0
   304
  g_strfreev (argv);
sl@0
   305
  g_option_context_free (context);
sl@0
   306
}
sl@0
   307
sl@0
   308
void
sl@0
   309
arg_test1 (void)
sl@0
   310
{
sl@0
   311
  GOptionContext *context;
sl@0
   312
  gboolean retval;
sl@0
   313
  GError *error = NULL;
sl@0
   314
  gchar **argv;
sl@0
   315
  int argc;
sl@0
   316
#ifndef SYMBIAN 
sl@0
   317
  GOptionEntry entries [] =
sl@0
   318
    { { "test", 0, 0, G_OPTION_ARG_INT, &arg_test1_int, NULL, NULL },
sl@0
   319
      { NULL } };
sl@0
   320
#else      
sl@0
   321
  GOptionEntry entries [2];
sl@0
   322
  
sl@0
   323
  entries[0].long_name = "test";
sl@0
   324
  entries[0].short_name = 0;
sl@0
   325
  entries[0].flags = 0;
sl@0
   326
  entries[0].arg = G_OPTION_ARG_INT;
sl@0
   327
  entries[0].arg_data = (gpointer)&arg_test1_int;
sl@0
   328
  entries[0].description =  NULL;
sl@0
   329
  entries[0].arg_description = NULL;
sl@0
   330
      
sl@0
   331
  entries[1].long_name = NULL;
sl@0
   332
  entries[1].short_name = 0;
sl@0
   333
  entries[1].arg_data = NULL;
sl@0
   334
  entries[1].description =  NULL;
sl@0
   335
  entries[1].arg_description = NULL;
sl@0
   336
#endif      
sl@0
   337
sl@0
   338
  context = g_option_context_new (NULL);
sl@0
   339
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   340
sl@0
   341
  /* Now try parsing */
sl@0
   342
  argv = split_string ("program --test 20 --test 30", &argc);
sl@0
   343
sl@0
   344
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   345
  g_assert (retval);
sl@0
   346
sl@0
   347
  /* Last arg specified is the one that should be stored */
sl@0
   348
  g_assert (arg_test1_int == 30);
sl@0
   349
sl@0
   350
  g_strfreev (argv);
sl@0
   351
  g_option_context_free (context);
sl@0
   352
}
sl@0
   353
sl@0
   354
void
sl@0
   355
arg_test2 (void)
sl@0
   356
{
sl@0
   357
  GOptionContext *context;
sl@0
   358
  gboolean retval;
sl@0
   359
  GError *error = NULL;
sl@0
   360
  gchar **argv;
sl@0
   361
  int argc;
sl@0
   362
#ifndef SYMBIAN  
sl@0
   363
  GOptionEntry entries [] =
sl@0
   364
    { { "test", 0, 0, G_OPTION_ARG_STRING, &arg_test2_string, NULL, NULL },
sl@0
   365
      { NULL } };
sl@0
   366
#else      
sl@0
   367
  GOptionEntry entries [2];
sl@0
   368
  
sl@0
   369
  entries[0].long_name = "test";
sl@0
   370
  entries[0].short_name = 0;
sl@0
   371
  entries[0].flags = 0;
sl@0
   372
  entries[0].arg = G_OPTION_ARG_STRING;
sl@0
   373
  entries[0].arg_data = (gpointer)&arg_test2_string;
sl@0
   374
  entries[0].description =  NULL;
sl@0
   375
  entries[0].arg_description = NULL;
sl@0
   376
      
sl@0
   377
  entries[1].long_name = NULL;
sl@0
   378
  entries[1].short_name = 0;
sl@0
   379
  entries[1].arg_data = NULL;
sl@0
   380
  entries[1].description =  NULL;
sl@0
   381
  entries[1].arg_description = NULL;
sl@0
   382
#endif      
sl@0
   383
  
sl@0
   384
  context = g_option_context_new (NULL);
sl@0
   385
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   386
sl@0
   387
  /* Now try parsing */
sl@0
   388
  argv = split_string ("program --test foo --test bar", &argc);
sl@0
   389
  
sl@0
   390
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   391
  g_assert (retval);
sl@0
   392
sl@0
   393
  /* Last arg specified is the one that should be stored */
sl@0
   394
  g_assert (strcmp (arg_test2_string, "bar") == 0);
sl@0
   395
sl@0
   396
  g_free (arg_test2_string);
sl@0
   397
  
sl@0
   398
  g_strfreev (argv);
sl@0
   399
  g_option_context_free (context);
sl@0
   400
}
sl@0
   401
sl@0
   402
void
sl@0
   403
arg_test3 (void)
sl@0
   404
{
sl@0
   405
  GOptionContext *context;
sl@0
   406
  gboolean retval;
sl@0
   407
  GError *error = NULL;
sl@0
   408
  gchar **argv;
sl@0
   409
  int argc;
sl@0
   410
#ifndef SYMBIAN  
sl@0
   411
  GOptionEntry entries [] =
sl@0
   412
    { { "test", 0, 0, G_OPTION_ARG_FILENAME, &arg_test3_filename, NULL, NULL },
sl@0
   413
      { NULL } };
sl@0
   414
#else      
sl@0
   415
  GOptionEntry entries [2];
sl@0
   416
  
sl@0
   417
  entries[0].long_name = "test";
sl@0
   418
  entries[0].short_name = 0;
sl@0
   419
  entries[0].flags = 0;
sl@0
   420
  entries[0].arg = G_OPTION_ARG_FILENAME;
sl@0
   421
  entries[0].arg_data = (gpointer)&arg_test3_filename;
sl@0
   422
  entries[0].description =  NULL;
sl@0
   423
  entries[0].arg_description = NULL;
sl@0
   424
      
sl@0
   425
  entries[1].long_name = NULL;
sl@0
   426
  entries[1].short_name = 0;
sl@0
   427
  entries[1].arg_data = NULL;
sl@0
   428
  entries[1].description =  NULL;
sl@0
   429
  entries[1].arg_description = NULL;
sl@0
   430
#endif      
sl@0
   431
  
sl@0
   432
  context = g_option_context_new (NULL);
sl@0
   433
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   434
sl@0
   435
  /* Now try parsing */
sl@0
   436
  argv = split_string ("program --test foo.txt", &argc);
sl@0
   437
  
sl@0
   438
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   439
  g_assert (retval);
sl@0
   440
sl@0
   441
  /* Last arg specified is the one that should be stored */
sl@0
   442
  g_assert (strcmp (arg_test3_filename, "foo.txt") == 0);
sl@0
   443
sl@0
   444
  g_free (arg_test3_filename);
sl@0
   445
  
sl@0
   446
  g_strfreev (argv);
sl@0
   447
  g_option_context_free (context);
sl@0
   448
}
sl@0
   449
sl@0
   450
static gboolean
sl@0
   451
callback_parse1 (const gchar *option_name, const gchar *value,
sl@0
   452
		 gpointer data, GError **error)
sl@0
   453
{
sl@0
   454
	callback_test1_string = g_strdup (value);
sl@0
   455
	return TRUE;
sl@0
   456
}
sl@0
   457
sl@0
   458
void
sl@0
   459
callback_test1 (void)
sl@0
   460
{
sl@0
   461
  GOptionContext *context;
sl@0
   462
  gboolean retval;
sl@0
   463
  GError *error = NULL;
sl@0
   464
  gchar **argv;
sl@0
   465
  int argc;
sl@0
   466
#ifndef SYMBIAN  
sl@0
   467
  GOptionEntry entries [] =
sl@0
   468
    { { "test", 0, 0, G_OPTION_ARG_CALLBACK, callback_parse1, NULL, NULL },
sl@0
   469
      { NULL } };
sl@0
   470
#else 
sl@0
   471
  GOptionEntry entries [2];
sl@0
   472
  
sl@0
   473
  entries[0].long_name = "test";
sl@0
   474
  entries[0].short_name = 0;
sl@0
   475
  entries[0].flags = 0;
sl@0
   476
  entries[0].arg = G_OPTION_ARG_CALLBACK;
sl@0
   477
  entries[0].arg_data = (gpointer)callback_parse1;
sl@0
   478
  entries[0].description =  NULL;
sl@0
   479
  entries[0].arg_description = NULL;
sl@0
   480
      
sl@0
   481
  entries[1].long_name = NULL;
sl@0
   482
  entries[1].short_name = 0;
sl@0
   483
  entries[1].arg_data = NULL;
sl@0
   484
  entries[1].description =  NULL;
sl@0
   485
  entries[1].arg_description = NULL;
sl@0
   486
#endif
sl@0
   487
sl@0
   488
  context = g_option_context_new (NULL);
sl@0
   489
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   490
sl@0
   491
  /* Now try parsing */
sl@0
   492
  argv = split_string ("program --test foo.txt", &argc);
sl@0
   493
  
sl@0
   494
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   495
  g_assert (retval);
sl@0
   496
sl@0
   497
  g_assert (strcmp (callback_test1_string, "foo.txt") == 0);
sl@0
   498
sl@0
   499
  g_free (callback_test1_string);
sl@0
   500
  
sl@0
   501
  g_strfreev (argv);
sl@0
   502
  g_option_context_free (context);
sl@0
   503
}
sl@0
   504
sl@0
   505
static gboolean
sl@0
   506
callback_parse2 (const gchar *option_name, const gchar *value,
sl@0
   507
		 gpointer data, GError **error)
sl@0
   508
{
sl@0
   509
	callback_test2_int++;
sl@0
   510
	return TRUE;
sl@0
   511
}
sl@0
   512
sl@0
   513
void
sl@0
   514
callback_test2 (void)
sl@0
   515
{
sl@0
   516
  GOptionContext *context;
sl@0
   517
  gboolean retval;
sl@0
   518
  GError *error = NULL;
sl@0
   519
  gchar **argv;
sl@0
   520
  int argc;
sl@0
   521
 
sl@0
   522
#ifndef SYMBIAN 
sl@0
   523
  GOptionEntry entries [] =
sl@0
   524
    { { "test", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, callback_parse2, NULL, NULL },
sl@0
   525
      { NULL } };
sl@0
   526
#else      
sl@0
   527
  GOptionEntry entries [2];
sl@0
   528
  
sl@0
   529
  entries[0].long_name = "test";
sl@0
   530
  entries[0].short_name = 0;
sl@0
   531
  entries[0].flags = G_OPTION_FLAG_NO_ARG;
sl@0
   532
  entries[0].arg = G_OPTION_ARG_CALLBACK;
sl@0
   533
  entries[0].arg_data = (gpointer)callback_parse2;
sl@0
   534
  entries[0].description =  NULL;
sl@0
   535
  entries[0].arg_description = NULL;
sl@0
   536
      
sl@0
   537
  entries[1].long_name = NULL;
sl@0
   538
  entries[1].short_name = 0;
sl@0
   539
  entries[1].arg_data = NULL;
sl@0
   540
  entries[1].description =  NULL;
sl@0
   541
  entries[1].arg_description = NULL;
sl@0
   542
#endif      
sl@0
   543
  
sl@0
   544
  context = g_option_context_new (NULL);
sl@0
   545
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   546
sl@0
   547
  /* Now try parsing */
sl@0
   548
  argv = split_string ("program --test --test", &argc);
sl@0
   549
  
sl@0
   550
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   551
  g_assert (retval);
sl@0
   552
sl@0
   553
  g_assert (callback_test2_int == 2);
sl@0
   554
  
sl@0
   555
  g_strfreev (argv);
sl@0
   556
  g_option_context_free (context);
sl@0
   557
}
sl@0
   558
sl@0
   559
static gboolean
sl@0
   560
callback_parse_optional (const gchar *option_name, const gchar *value,
sl@0
   561
		 gpointer data, GError **error)
sl@0
   562
{
sl@0
   563
	callback_test_optional_boolean = TRUE;
sl@0
   564
	if (value)
sl@0
   565
		callback_test_optional_string = g_strdup (value);
sl@0
   566
	else
sl@0
   567
		callback_test_optional_string = NULL;
sl@0
   568
	return TRUE;
sl@0
   569
}
sl@0
   570
sl@0
   571
void
sl@0
   572
callback_test_optional_1 (void)
sl@0
   573
{
sl@0
   574
  GOptionContext *context;
sl@0
   575
  gboolean retval;
sl@0
   576
  GError *error = NULL;
sl@0
   577
  gchar **argv;
sl@0
   578
  int argc;
sl@0
   579
#ifndef SYMBIAN
sl@0
   580
  GOptionEntry entries [] =
sl@0
   581
    { { "test", 0, G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, 
sl@0
   582
	callback_parse_optional, NULL, NULL },
sl@0
   583
      { NULL } };
sl@0
   584
#else      
sl@0
   585
  GOptionEntry entries [2];
sl@0
   586
  
sl@0
   587
  entries[0].long_name = "test";
sl@0
   588
  entries[0].short_name = 0;
sl@0
   589
  entries[0].flags = G_OPTION_FLAG_OPTIONAL_ARG;
sl@0
   590
  entries[0].arg = G_OPTION_ARG_CALLBACK;
sl@0
   591
  entries[0].arg_data = (gpointer)callback_parse_optional;
sl@0
   592
  entries[0].description =  NULL;
sl@0
   593
  entries[0].arg_description = NULL;
sl@0
   594
      
sl@0
   595
  entries[1].long_name = NULL;
sl@0
   596
  entries[1].short_name = 0;
sl@0
   597
  entries[1].arg_data = NULL;
sl@0
   598
  entries[1].description =  NULL;
sl@0
   599
  entries[1].arg_description = NULL;
sl@0
   600
#endif      
sl@0
   601
  
sl@0
   602
  context = g_option_context_new (NULL);
sl@0
   603
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   604
sl@0
   605
  /* Now try parsing */
sl@0
   606
  argv = split_string ("program --test foo.txt", &argc);
sl@0
   607
  
sl@0
   608
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   609
  g_assert (retval);
sl@0
   610
sl@0
   611
  g_assert (strcmp (callback_test_optional_string, "foo.txt") == 0);
sl@0
   612
  
sl@0
   613
  g_assert (callback_test_optional_boolean);
sl@0
   614
sl@0
   615
  g_free (callback_test_optional_string);
sl@0
   616
  
sl@0
   617
  g_strfreev (argv);
sl@0
   618
  g_option_context_free (context);
sl@0
   619
}
sl@0
   620
sl@0
   621
void
sl@0
   622
callback_test_optional_2 (void)
sl@0
   623
{
sl@0
   624
  GOptionContext *context;
sl@0
   625
  gboolean retval;
sl@0
   626
  GError *error = NULL;
sl@0
   627
  gchar **argv;
sl@0
   628
  int argc;
sl@0
   629
#ifndef SYMBIAN  
sl@0
   630
  GOptionEntry entries [] =
sl@0
   631
    { { "test", 0, G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, 
sl@0
   632
	callback_parse_optional, NULL, NULL },
sl@0
   633
      { NULL } };
sl@0
   634
#else      
sl@0
   635
  GOptionEntry entries [2];
sl@0
   636
  
sl@0
   637
  entries[0].long_name = "test";
sl@0
   638
  entries[0].short_name = 0;
sl@0
   639
  entries[0].flags = G_OPTION_FLAG_OPTIONAL_ARG;
sl@0
   640
  entries[0].arg = G_OPTION_ARG_CALLBACK;
sl@0
   641
  entries[0].arg_data = (gpointer)callback_parse_optional;
sl@0
   642
  entries[0].description =  NULL;
sl@0
   643
  entries[0].arg_description = NULL;
sl@0
   644
      
sl@0
   645
  entries[1].long_name = NULL;
sl@0
   646
  entries[1].short_name = 0;
sl@0
   647
  entries[1].arg_data = NULL;
sl@0
   648
  entries[1].description =  NULL;
sl@0
   649
  entries[1].arg_description = NULL;
sl@0
   650
#endif      
sl@0
   651
  
sl@0
   652
  context = g_option_context_new (NULL);
sl@0
   653
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   654
sl@0
   655
  /* Now try parsing */
sl@0
   656
  argv = split_string ("program --test", &argc);
sl@0
   657
  
sl@0
   658
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   659
  g_assert (retval);
sl@0
   660
sl@0
   661
  g_assert (callback_test_optional_string == NULL);
sl@0
   662
  
sl@0
   663
  g_assert (callback_test_optional_boolean);
sl@0
   664
sl@0
   665
  g_free (callback_test_optional_string);
sl@0
   666
  
sl@0
   667
  g_strfreev (argv);
sl@0
   668
  g_option_context_free (context);
sl@0
   669
}
sl@0
   670
sl@0
   671
void
sl@0
   672
callback_test_optional_3 (void)
sl@0
   673
{
sl@0
   674
  GOptionContext *context;
sl@0
   675
  gboolean retval;
sl@0
   676
  GError *error = NULL;
sl@0
   677
  gchar **argv;
sl@0
   678
  int argc;
sl@0
   679
#ifndef SYMBIAN  
sl@0
   680
  GOptionEntry entries [] =
sl@0
   681
    { { "test", 't', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, 
sl@0
   682
	callback_parse_optional, NULL, NULL },
sl@0
   683
      { NULL } };
sl@0
   684
#else      
sl@0
   685
  GOptionEntry entries [2];
sl@0
   686
  
sl@0
   687
  entries[0].long_name = "test";
sl@0
   688
  entries[0].short_name = 't';
sl@0
   689
  entries[0].flags = G_OPTION_FLAG_OPTIONAL_ARG;
sl@0
   690
  entries[0].arg = G_OPTION_ARG_CALLBACK;
sl@0
   691
  entries[0].arg_data = (gpointer)callback_parse_optional;
sl@0
   692
  entries[0].description =  NULL;
sl@0
   693
  entries[0].arg_description = NULL;
sl@0
   694
      
sl@0
   695
  entries[1].long_name = NULL;
sl@0
   696
  entries[1].short_name = 0;
sl@0
   697
  entries[1].arg_data = NULL;
sl@0
   698
  entries[1].description =  NULL;
sl@0
   699
  entries[1].arg_description = NULL;
sl@0
   700
#endif      
sl@0
   701
  
sl@0
   702
  context = g_option_context_new (NULL);
sl@0
   703
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   704
sl@0
   705
  /* Now try parsing */
sl@0
   706
  argv = split_string ("program -t foo.txt", &argc);
sl@0
   707
  
sl@0
   708
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   709
  g_assert (retval);
sl@0
   710
sl@0
   711
  g_assert (strcmp (callback_test_optional_string, "foo.txt") == 0);
sl@0
   712
  
sl@0
   713
  g_assert (callback_test_optional_boolean);
sl@0
   714
sl@0
   715
  g_free (callback_test_optional_string);
sl@0
   716
  
sl@0
   717
  g_strfreev (argv);
sl@0
   718
  g_option_context_free (context);
sl@0
   719
}
sl@0
   720
sl@0
   721
sl@0
   722
void
sl@0
   723
callback_test_optional_4 (void)
sl@0
   724
{
sl@0
   725
  GOptionContext *context;
sl@0
   726
  gboolean retval;
sl@0
   727
  GError *error = NULL;
sl@0
   728
  gchar **argv;
sl@0
   729
  int argc;
sl@0
   730
#ifndef SYMBIAN  
sl@0
   731
  GOptionEntry entries [] =
sl@0
   732
    { { "test", 't', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, 
sl@0
   733
	callback_parse_optional, NULL, NULL },
sl@0
   734
      { NULL } };
sl@0
   735
#else      
sl@0
   736
  GOptionEntry entries [2];
sl@0
   737
  
sl@0
   738
  entries[0].long_name = "test";
sl@0
   739
  entries[0].short_name = 't';
sl@0
   740
  entries[0].flags = G_OPTION_FLAG_OPTIONAL_ARG;
sl@0
   741
  entries[0].arg = G_OPTION_ARG_CALLBACK;
sl@0
   742
  entries[0].arg_data = (gpointer)callback_parse_optional;
sl@0
   743
  entries[0].description =  NULL;
sl@0
   744
  entries[0].arg_description = NULL;
sl@0
   745
      
sl@0
   746
  entries[1].long_name = NULL;
sl@0
   747
  entries[1].short_name = 0;
sl@0
   748
  entries[1].arg_data = NULL;
sl@0
   749
  entries[1].description =  NULL;
sl@0
   750
  entries[1].arg_description = NULL;
sl@0
   751
#endif      
sl@0
   752
  
sl@0
   753
  context = g_option_context_new (NULL);
sl@0
   754
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   755
sl@0
   756
  /* Now try parsing */
sl@0
   757
  argv = split_string ("program -t", &argc);
sl@0
   758
  
sl@0
   759
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   760
  g_assert (retval);
sl@0
   761
sl@0
   762
  g_assert (callback_test_optional_string == NULL);
sl@0
   763
  
sl@0
   764
  g_assert (callback_test_optional_boolean);
sl@0
   765
sl@0
   766
  g_free (callback_test_optional_string);
sl@0
   767
  
sl@0
   768
  g_strfreev (argv);
sl@0
   769
  g_option_context_free (context);
sl@0
   770
}
sl@0
   771
sl@0
   772
void
sl@0
   773
callback_test_optional_5 (void)
sl@0
   774
{
sl@0
   775
  GOptionContext *context;
sl@0
   776
  gboolean dummy;
sl@0
   777
  gboolean retval;
sl@0
   778
  GError *error = NULL;
sl@0
   779
  gchar **argv;
sl@0
   780
  int argc;
sl@0
   781
#ifndef SYMBIAN  
sl@0
   782
  GOptionEntry entries [] =
sl@0
   783
    { { "dummy", 'd', 0, G_OPTION_ARG_NONE, &dummy, NULL },
sl@0
   784
      { "test", 't', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, 
sl@0
   785
	callback_parse_optional, NULL, NULL },
sl@0
   786
      { NULL } };
sl@0
   787
#else
sl@0
   788
  GOptionEntry entries [3];
sl@0
   789
  
sl@0
   790
  entries[0].long_name = "dummy";
sl@0
   791
  entries[0].short_name = 'd';
sl@0
   792
  entries[0].flags = 0;
sl@0
   793
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
   794
  entries[0].arg_data = (gpointer)&dummy;
sl@0
   795
  entries[0].description =  NULL;
sl@0
   796
    
sl@0
   797
  entries[1].long_name = "test";
sl@0
   798
  entries[1].short_name = 't';
sl@0
   799
  entries[1].flags = G_OPTION_FLAG_OPTIONAL_ARG;
sl@0
   800
  entries[1].arg = G_OPTION_ARG_CALLBACK;
sl@0
   801
  entries[1].arg_data = (gpointer)callback_parse_optional;
sl@0
   802
  entries[1].description =  NULL;
sl@0
   803
  entries[1].arg_description = NULL;
sl@0
   804
  
sl@0
   805
      
sl@0
   806
  entries[2].long_name = NULL;
sl@0
   807
  entries[2].short_name = 0;
sl@0
   808
  entries[2].arg_data = NULL;
sl@0
   809
  entries[2].description =  NULL;
sl@0
   810
  entries[2].arg_description = NULL;
sl@0
   811
#endif      
sl@0
   812
  
sl@0
   813
  context = g_option_context_new (NULL);
sl@0
   814
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   815
sl@0
   816
  /* Now try parsing */
sl@0
   817
  argv = split_string ("program --test --dummy", &argc);
sl@0
   818
  
sl@0
   819
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   820
  g_assert (retval);
sl@0
   821
sl@0
   822
  g_assert (callback_test_optional_string == NULL);
sl@0
   823
  
sl@0
   824
  g_assert (callback_test_optional_boolean);
sl@0
   825
sl@0
   826
  g_free (callback_test_optional_string);
sl@0
   827
  
sl@0
   828
  g_strfreev (argv);
sl@0
   829
  g_option_context_free (context);
sl@0
   830
}
sl@0
   831
sl@0
   832
void
sl@0
   833
callback_test_optional_6 (void)
sl@0
   834
{
sl@0
   835
  GOptionContext *context;
sl@0
   836
  gboolean dummy;
sl@0
   837
  gboolean retval;
sl@0
   838
  GError *error = NULL;
sl@0
   839
  gchar **argv;
sl@0
   840
  int argc;
sl@0
   841
#ifndef SYMBIAN  
sl@0
   842
  GOptionEntry entries [] =
sl@0
   843
    { { "dummy", 'd', 0, G_OPTION_ARG_NONE, &dummy, NULL },
sl@0
   844
      { "test", 't', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, 
sl@0
   845
	callback_parse_optional, NULL, NULL },
sl@0
   846
      { NULL } };
sl@0
   847
#else           
sl@0
   848
  GOptionEntry entries [3];
sl@0
   849
  
sl@0
   850
  entries[0].long_name = "dummy";
sl@0
   851
  entries[0].short_name = 'd';
sl@0
   852
  entries[0].flags = 0;
sl@0
   853
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
   854
  entries[0].arg_data = (gpointer)&dummy;
sl@0
   855
  entries[0].description =  NULL;
sl@0
   856
    
sl@0
   857
  entries[1].long_name = "test";
sl@0
   858
  entries[1].short_name = 't';
sl@0
   859
  entries[1].flags = G_OPTION_FLAG_OPTIONAL_ARG;
sl@0
   860
  entries[1].arg = G_OPTION_ARG_CALLBACK;
sl@0
   861
  entries[1].arg_data = (gpointer)callback_parse_optional;
sl@0
   862
  entries[1].description =  NULL;
sl@0
   863
  entries[1].arg_description = NULL;
sl@0
   864
  
sl@0
   865
      
sl@0
   866
  entries[2].long_name = NULL;
sl@0
   867
  entries[2].short_name = 0;
sl@0
   868
  entries[2].arg_data = NULL;
sl@0
   869
  entries[2].description =  NULL;
sl@0
   870
  entries[2].arg_description = NULL;
sl@0
   871
#endif      
sl@0
   872
      
sl@0
   873
  
sl@0
   874
  context = g_option_context_new (NULL);
sl@0
   875
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   876
sl@0
   877
  /* Now try parsing */
sl@0
   878
  argv = split_string ("program -t -d", &argc);
sl@0
   879
  
sl@0
   880
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   881
  g_assert (retval);
sl@0
   882
sl@0
   883
  g_assert (callback_test_optional_string == NULL);
sl@0
   884
  
sl@0
   885
  g_assert (callback_test_optional_boolean);
sl@0
   886
sl@0
   887
  g_free (callback_test_optional_string);
sl@0
   888
  
sl@0
   889
  g_strfreev (argv);
sl@0
   890
  g_option_context_free (context);
sl@0
   891
}
sl@0
   892
sl@0
   893
void
sl@0
   894
callback_test_optional_7 (void)
sl@0
   895
{
sl@0
   896
  GOptionContext *context;
sl@0
   897
  gboolean dummy;
sl@0
   898
  gboolean retval;
sl@0
   899
  GError *error = NULL;
sl@0
   900
  gchar **argv;
sl@0
   901
  int argc;
sl@0
   902
#ifndef SYMBIAN  
sl@0
   903
  GOptionEntry entries [] =
sl@0
   904
    { { "dummy", 'd', 0, G_OPTION_ARG_NONE, &dummy, NULL },
sl@0
   905
      { "test", 't', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, 
sl@0
   906
	callback_parse_optional, NULL, NULL },
sl@0
   907
      { NULL } };
sl@0
   908
#else      
sl@0
   909
   GOptionEntry entries [3];
sl@0
   910
  
sl@0
   911
  entries[0].long_name = "dummy";
sl@0
   912
  entries[0].short_name = 'd';
sl@0
   913
  entries[0].flags = 0;
sl@0
   914
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
   915
  entries[0].arg_data = (gpointer)&dummy;
sl@0
   916
  entries[0].description =  NULL;
sl@0
   917
    
sl@0
   918
  entries[1].long_name = "test";
sl@0
   919
  entries[1].short_name = 't';
sl@0
   920
  entries[1].flags = G_OPTION_FLAG_OPTIONAL_ARG;
sl@0
   921
  entries[1].arg = G_OPTION_ARG_CALLBACK;
sl@0
   922
  entries[1].arg_data = (gpointer)callback_parse_optional;
sl@0
   923
  entries[1].description =  NULL;
sl@0
   924
  entries[1].arg_description = NULL;
sl@0
   925
  
sl@0
   926
      
sl@0
   927
  entries[2].long_name = NULL;
sl@0
   928
  entries[2].short_name = 0;
sl@0
   929
  entries[2].arg_data = NULL;
sl@0
   930
  entries[2].description =  NULL;
sl@0
   931
  entries[2].arg_description = NULL;
sl@0
   932
#endif     
sl@0
   933
     
sl@0
   934
  
sl@0
   935
  context = g_option_context_new (NULL);
sl@0
   936
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   937
sl@0
   938
  /* Now try parsing */
sl@0
   939
  argv = split_string ("program -td", &argc);
sl@0
   940
  
sl@0
   941
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
   942
  g_assert (retval);
sl@0
   943
sl@0
   944
  g_assert (callback_test_optional_string == NULL);
sl@0
   945
  
sl@0
   946
  g_assert (callback_test_optional_boolean);
sl@0
   947
sl@0
   948
  g_free (callback_test_optional_string);
sl@0
   949
  
sl@0
   950
  g_strfreev (argv);
sl@0
   951
  g_option_context_free (context);
sl@0
   952
}
sl@0
   953
sl@0
   954
void
sl@0
   955
callback_test_optional_8 (void)
sl@0
   956
{
sl@0
   957
  GOptionContext *context;
sl@0
   958
  gboolean dummy;
sl@0
   959
  gboolean retval;
sl@0
   960
  GError *error = NULL;
sl@0
   961
  gchar **argv;
sl@0
   962
  int argc;
sl@0
   963
#ifndef SYMBIAN  
sl@0
   964
  GOptionEntry entries [] =
sl@0
   965
    { { "dummy", 'd', 0, G_OPTION_ARG_NONE, &dummy, NULL },
sl@0
   966
      { "test", 't', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, 
sl@0
   967
	callback_parse_optional, NULL, NULL },
sl@0
   968
      { NULL } };
sl@0
   969
#else      
sl@0
   970
   GOptionEntry entries [3];
sl@0
   971
  
sl@0
   972
  entries[0].long_name = "dummy";
sl@0
   973
  entries[0].short_name = 'd';
sl@0
   974
  entries[0].flags = 0;
sl@0
   975
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
   976
  entries[0].arg_data = (gpointer)&dummy;
sl@0
   977
  entries[0].description =  NULL;
sl@0
   978
    
sl@0
   979
  entries[1].long_name = "test";
sl@0
   980
  entries[1].short_name = 't';
sl@0
   981
  entries[1].flags = G_OPTION_FLAG_OPTIONAL_ARG;
sl@0
   982
  entries[1].arg = G_OPTION_ARG_CALLBACK;
sl@0
   983
  entries[1].arg_data = (gpointer)callback_parse_optional;
sl@0
   984
  entries[1].description =  NULL;
sl@0
   985
  entries[1].arg_description = NULL;
sl@0
   986
  
sl@0
   987
      
sl@0
   988
  entries[2].long_name = NULL;
sl@0
   989
  entries[2].short_name = 0;
sl@0
   990
  entries[2].arg_data = NULL;
sl@0
   991
  entries[2].description =  NULL;
sl@0
   992
  entries[2].arg_description = NULL;
sl@0
   993
#endif      
sl@0
   994
  
sl@0
   995
  context = g_option_context_new (NULL);
sl@0
   996
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
   997
sl@0
   998
  /* Now try parsing */
sl@0
   999
  argv = split_string ("program -dt foo.txt", &argc);
sl@0
  1000
  
sl@0
  1001
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1002
  g_assert (retval);
sl@0
  1003
sl@0
  1004
  g_assert (callback_test_optional_string);
sl@0
  1005
  
sl@0
  1006
  g_assert (callback_test_optional_boolean);
sl@0
  1007
sl@0
  1008
  g_free (callback_test_optional_string);
sl@0
  1009
  
sl@0
  1010
  g_strfreev (argv);
sl@0
  1011
  g_option_context_free (context);
sl@0
  1012
}
sl@0
  1013
sl@0
  1014
void
sl@0
  1015
ignore_test1 (void)
sl@0
  1016
{
sl@0
  1017
  GOptionContext *context;
sl@0
  1018
  gboolean retval;
sl@0
  1019
  GError *error = NULL;
sl@0
  1020
  gchar **argv, **argv_copy;
sl@0
  1021
  int argc;
sl@0
  1022
  gchar *arg;
sl@0
  1023
#ifndef SYMBIAN  
sl@0
  1024
  GOptionEntry entries [] =
sl@0
  1025
    { { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL },
sl@0
  1026
      { NULL } };
sl@0
  1027
#else          
sl@0
  1028
  GOptionEntry entries [2];
sl@0
  1029
  
sl@0
  1030
  entries[0].long_name = "test";
sl@0
  1031
  entries[0].short_name = 0;
sl@0
  1032
  entries[0].flags = 0;
sl@0
  1033
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
  1034
  entries[0].arg_data = (gpointer)&ignore_test1_boolean;
sl@0
  1035
  entries[0].description =  NULL;
sl@0
  1036
  entries[0].arg_description = NULL;
sl@0
  1037
      
sl@0
  1038
  entries[1].long_name = NULL;
sl@0
  1039
  entries[1].short_name = 0;
sl@0
  1040
  entries[1].arg_data = NULL;
sl@0
  1041
  entries[1].description =  NULL;
sl@0
  1042
  entries[1].arg_description = NULL;
sl@0
  1043
#endif      
sl@0
  1044
sl@0
  1045
  context = g_option_context_new (NULL);
sl@0
  1046
  g_option_context_set_ignore_unknown_options (context, TRUE);
sl@0
  1047
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1048
sl@0
  1049
  /* Now try parsing */
sl@0
  1050
  argv = split_string ("program --test --hello", &argc);
sl@0
  1051
  argv_copy = copy_stringv (argv, argc);
sl@0
  1052
  
sl@0
  1053
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1054
  g_assert (retval);
sl@0
  1055
sl@0
  1056
  /* Check array */
sl@0
  1057
  arg = join_stringv (argc, argv);
sl@0
  1058
  g_assert (strcmp (arg, "program --hello") == 0);
sl@0
  1059
sl@0
  1060
  g_free (arg);
sl@0
  1061
  g_strfreev (argv_copy);
sl@0
  1062
  g_free (argv);
sl@0
  1063
  g_option_context_free (context);
sl@0
  1064
}
sl@0
  1065
sl@0
  1066
void
sl@0
  1067
ignore_test2 (void)
sl@0
  1068
{
sl@0
  1069
  GOptionContext *context;
sl@0
  1070
  gboolean retval;
sl@0
  1071
  GError *error = NULL;
sl@0
  1072
  gchar **argv;
sl@0
  1073
  int argc;
sl@0
  1074
  gchar *arg;
sl@0
  1075
#ifndef SYMBIAN  
sl@0
  1076
  GOptionEntry entries [] =
sl@0
  1077
    { { "test", 't', 0, G_OPTION_ARG_NONE, &ignore_test2_boolean, NULL, NULL },
sl@0
  1078
      { NULL } };
sl@0
  1079
#else      
sl@0
  1080
  GOptionEntry entries [2];
sl@0
  1081
  
sl@0
  1082
  entries[0].long_name = "test";
sl@0
  1083
  entries[0].short_name = 't';
sl@0
  1084
  entries[0].flags = 0;
sl@0
  1085
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
  1086
  entries[0].arg_data = (gpointer)&ignore_test2_boolean;
sl@0
  1087
  entries[0].description =  NULL;
sl@0
  1088
  entries[0].arg_description = NULL;
sl@0
  1089
      
sl@0
  1090
  entries[1].long_name = NULL;
sl@0
  1091
  entries[1].short_name = 0;
sl@0
  1092
  entries[1].arg_data = NULL;
sl@0
  1093
  entries[1].description =  NULL;
sl@0
  1094
  entries[1].arg_description = NULL;
sl@0
  1095
#endif      
sl@0
  1096
sl@0
  1097
  context = g_option_context_new (NULL);
sl@0
  1098
  g_option_context_set_ignore_unknown_options (context, TRUE);
sl@0
  1099
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1100
sl@0
  1101
  /* Now try parsing */
sl@0
  1102
  argv = split_string ("program -test", &argc);
sl@0
  1103
  
sl@0
  1104
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1105
  g_assert (retval);
sl@0
  1106
sl@0
  1107
  /* Check array */
sl@0
  1108
  arg = join_stringv (argc, argv);
sl@0
  1109
  g_assert (strcmp (arg, "program -es") == 0);
sl@0
  1110
sl@0
  1111
  g_free (arg);
sl@0
  1112
  g_strfreev (argv);
sl@0
  1113
  g_option_context_free (context);
sl@0
  1114
}
sl@0
  1115
sl@0
  1116
void
sl@0
  1117
ignore_test3 (void)
sl@0
  1118
{
sl@0
  1119
  GOptionContext *context;
sl@0
  1120
  gboolean retval;
sl@0
  1121
  GError *error = NULL;
sl@0
  1122
  gchar **argv, **argv_copy;
sl@0
  1123
  int argc;
sl@0
  1124
  gchar *arg;
sl@0
  1125
#ifndef SYMBAIN  
sl@0
  1126
  GOptionEntry entries [] =
sl@0
  1127
    { { "test", 0, 0, G_OPTION_ARG_STRING, &ignore_test3_string, NULL, NULL },
sl@0
  1128
      { NULL } };
sl@0
  1129
#else      
sl@0
  1130
  GOptionEntry entries [2];
sl@0
  1131
  
sl@0
  1132
  entries[0].long_name = "test";
sl@0
  1133
  entries[0].short_name = 0;
sl@0
  1134
  entries[0].flags = 0;
sl@0
  1135
  entries[0].arg = G_OPTION_ARG_STRING;
sl@0
  1136
  entries[0].arg_data = (gpointer)&ignore_test3_string;
sl@0
  1137
  entries[0].description =  NULL;
sl@0
  1138
  entries[0].arg_description = NULL;
sl@0
  1139
      
sl@0
  1140
  entries[1].long_name = NULL;
sl@0
  1141
  entries[1].short_name = 0;
sl@0
  1142
  entries[1].arg_data = NULL;
sl@0
  1143
  entries[1].description =  NULL;
sl@0
  1144
  entries[1].arg_description = NULL;
sl@0
  1145
#endif      
sl@0
  1146
sl@0
  1147
  context = g_option_context_new (NULL);
sl@0
  1148
  g_option_context_set_ignore_unknown_options (context, TRUE);
sl@0
  1149
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1150
sl@0
  1151
  /* Now try parsing */
sl@0
  1152
  argv = split_string ("program --test foo --hello", &argc);
sl@0
  1153
  argv_copy = copy_stringv (argv, argc);
sl@0
  1154
  
sl@0
  1155
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1156
  g_assert (retval);
sl@0
  1157
sl@0
  1158
  /* Check array */
sl@0
  1159
  arg = join_stringv (argc, argv);
sl@0
  1160
  g_assert (strcmp (arg, "program --hello") == 0);
sl@0
  1161
sl@0
  1162
  g_assert (strcmp (ignore_test3_string, "foo") == 0);
sl@0
  1163
  g_free (ignore_test3_string);
sl@0
  1164
sl@0
  1165
  g_free (arg);
sl@0
  1166
  g_strfreev (argv_copy);
sl@0
  1167
  g_free (argv);
sl@0
  1168
  g_option_context_free (context);
sl@0
  1169
}
sl@0
  1170
sl@0
  1171
void
sl@0
  1172
array_test1 (void)
sl@0
  1173
{
sl@0
  1174
  GOptionContext *context;
sl@0
  1175
  gboolean retval;
sl@0
  1176
  GError *error = NULL;
sl@0
  1177
  gchar **argv;
sl@0
  1178
  int argc;
sl@0
  1179
#ifndef SYMBIAN  
sl@0
  1180
  GOptionEntry entries [] =
sl@0
  1181
    { { "test", 0, 0, G_OPTION_ARG_STRING_ARRAY, &array_test1_array, NULL, NULL },
sl@0
  1182
      { NULL } };
sl@0
  1183
#else     
sl@0
  1184
  GOptionEntry entries [2];
sl@0
  1185
  
sl@0
  1186
  entries[0].long_name = "test";
sl@0
  1187
  entries[0].short_name = 0;
sl@0
  1188
  entries[0].flags = 0;
sl@0
  1189
  entries[0].arg = G_OPTION_ARG_STRING_ARRAY;
sl@0
  1190
  entries[0].arg_data = (gpointer)&array_test1_array;
sl@0
  1191
  entries[0].description =  NULL;
sl@0
  1192
  entries[0].arg_description = NULL;
sl@0
  1193
      
sl@0
  1194
  entries[1].long_name = NULL;
sl@0
  1195
  entries[1].short_name = 0;
sl@0
  1196
  entries[1].arg_data = NULL;
sl@0
  1197
  entries[1].description =  NULL;
sl@0
  1198
  entries[1].arg_description = NULL;
sl@0
  1199
#endif      
sl@0
  1200
        
sl@0
  1201
  context = g_option_context_new (NULL);
sl@0
  1202
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1203
sl@0
  1204
  /* Now try parsing */
sl@0
  1205
  argv = split_string ("program --test foo --test bar", &argc);
sl@0
  1206
  
sl@0
  1207
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1208
  g_assert (retval);
sl@0
  1209
sl@0
  1210
  /* Check array */
sl@0
  1211
  g_assert (strcmp (array_test1_array[0], "foo") == 0);
sl@0
  1212
  g_assert (strcmp (array_test1_array[1], "bar") == 0);
sl@0
  1213
  g_assert (array_test1_array[2] == NULL);
sl@0
  1214
sl@0
  1215
  g_strfreev (array_test1_array);
sl@0
  1216
  
sl@0
  1217
  g_strfreev (argv);
sl@0
  1218
  g_option_context_free (context);
sl@0
  1219
}
sl@0
  1220
sl@0
  1221
void
sl@0
  1222
add_test1 (void)
sl@0
  1223
{
sl@0
  1224
  GOptionContext *context;
sl@0
  1225
sl@0
  1226
#ifndef SYMBIAN
sl@0
  1227
  GOptionEntry entries1 [] =
sl@0
  1228
    { { "test1", 0, 0, G_OPTION_ARG_STRING_ARRAY, NULL, NULL, NULL },
sl@0
  1229
      { NULL } };
sl@0
  1230
  GOptionEntry entries2 [] =
sl@0
  1231
    { { "test2", 0, 0, G_OPTION_ARG_STRING_ARRAY, NULL, NULL, NULL },
sl@0
  1232
      { NULL } };
sl@0
  1233
#else      
sl@0
  1234
  GOptionEntry entries1 [2];
sl@0
  1235
  GOptionEntry entries2 [2];
sl@0
  1236
  
sl@0
  1237
  entries1[0].long_name = "test1";
sl@0
  1238
  entries1[0].short_name = 0;
sl@0
  1239
  entries1[0].flags = 0;
sl@0
  1240
  entries1[0].arg = G_OPTION_ARG_STRING_ARRAY;
sl@0
  1241
  entries1[0].arg_data = NULL;
sl@0
  1242
  entries1[0].description =  NULL;
sl@0
  1243
  entries1[0].arg_description = NULL;
sl@0
  1244
      
sl@0
  1245
  entries1[1].long_name = NULL;
sl@0
  1246
  entries1[1].short_name = 0;
sl@0
  1247
  entries1[1].arg_data = NULL;
sl@0
  1248
  entries1[1].description =  NULL;
sl@0
  1249
  entries1[1].arg_description = NULL;
sl@0
  1250
      
sl@0
  1251
  
sl@0
  1252
  entries2[0].long_name = "test2";
sl@0
  1253
  entries2[0].short_name = 0;
sl@0
  1254
  entries2[0].flags = 0;
sl@0
  1255
  entries2[0].arg = G_OPTION_ARG_STRING_ARRAY;
sl@0
  1256
  entries2[0].arg_data = NULL;
sl@0
  1257
  entries2[0].description =  NULL;
sl@0
  1258
  entries2[0].arg_description = NULL;
sl@0
  1259
      
sl@0
  1260
  entries2[1].long_name = NULL;
sl@0
  1261
  entries2[1].short_name = 0;
sl@0
  1262
  entries2[1].arg_data = NULL;
sl@0
  1263
  entries2[1].description =  NULL;
sl@0
  1264
  entries2[1].arg_description = NULL;
sl@0
  1265
#endif
sl@0
  1266
sl@0
  1267
  context = g_option_context_new (NULL);
sl@0
  1268
  g_option_context_add_main_entries (context, entries1, NULL);
sl@0
  1269
  g_option_context_add_main_entries (context, entries2, NULL);
sl@0
  1270
sl@0
  1271
  g_option_context_free (context);
sl@0
  1272
}
sl@0
  1273
sl@0
  1274
void
sl@0
  1275
empty_test1 (void)
sl@0
  1276
{
sl@0
  1277
  GOptionContext *context;
sl@0
  1278
  GOptionEntry entries [] =
sl@0
  1279
    { { NULL } };
sl@0
  1280
sl@0
  1281
  g_set_prgname (NULL);
sl@0
  1282
sl@0
  1283
  context = g_option_context_new (NULL);
sl@0
  1284
sl@0
  1285
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1286
  
sl@0
  1287
  g_option_context_parse (context, NULL, NULL, NULL);
sl@0
  1288
sl@0
  1289
  g_assert (strcmp (g_get_prgname (), "<unknown>") == 0);
sl@0
  1290
  
sl@0
  1291
  g_option_context_free (context);
sl@0
  1292
}
sl@0
  1293
sl@0
  1294
void
sl@0
  1295
empty_test2 (void)
sl@0
  1296
{
sl@0
  1297
  GOptionContext *context;
sl@0
  1298
sl@0
  1299
  context = g_option_context_new (NULL);
sl@0
  1300
  g_option_context_parse (context, NULL, NULL, NULL);
sl@0
  1301
  
sl@0
  1302
  g_option_context_free (context);
sl@0
  1303
}
sl@0
  1304
sl@0
  1305
void
sl@0
  1306
empty_test3 (void)
sl@0
  1307
{
sl@0
  1308
  GOptionContext *context;
sl@0
  1309
  gint argc;
sl@0
  1310
  gchar **argv;
sl@0
  1311
sl@0
  1312
  argc = 0;
sl@0
  1313
  argv = NULL;
sl@0
  1314
sl@0
  1315
  context = g_option_context_new (NULL);
sl@0
  1316
  g_option_context_parse (context, &argc, &argv, NULL);
sl@0
  1317
  
sl@0
  1318
  g_option_context_free (context);
sl@0
  1319
}
sl@0
  1320
sl@0
  1321
/* check that non-option arguments are left in argv by default */
sl@0
  1322
void
sl@0
  1323
rest_test1 (void)
sl@0
  1324
{
sl@0
  1325
  GOptionContext *context;
sl@0
  1326
  gboolean retval;
sl@0
  1327
  GError *error = NULL;
sl@0
  1328
  gchar **argv;
sl@0
  1329
  int argc;
sl@0
  1330
#ifndef SYMBIAN  
sl@0
  1331
  GOptionEntry entries [] = { 
sl@0
  1332
      { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL },
sl@0
  1333
      { NULL } 
sl@0
  1334
  };
sl@0
  1335
#else  
sl@0
  1336
  GOptionEntry entries [2];
sl@0
  1337
  
sl@0
  1338
  entries[0].long_name = "test";
sl@0
  1339
  entries[0].short_name = 0;
sl@0
  1340
  entries[0].flags = 0;
sl@0
  1341
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
  1342
  entries[0].arg_data = (gpointer)&ignore_test1_boolean;
sl@0
  1343
  entries[0].description =  NULL;
sl@0
  1344
  entries[0].arg_description = NULL;
sl@0
  1345
      
sl@0
  1346
  entries[1].long_name = NULL;
sl@0
  1347
  entries[1].short_name = 0;
sl@0
  1348
  entries[1].arg_data = NULL;
sl@0
  1349
  entries[1].description =  NULL;
sl@0
  1350
  entries[1].arg_description = NULL;
sl@0
  1351
#endif
sl@0
  1352
        
sl@0
  1353
  context = g_option_context_new (NULL);
sl@0
  1354
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1355
sl@0
  1356
  /* Now try parsing */
sl@0
  1357
  argv = split_string ("program foo --test bar", &argc);
sl@0
  1358
  
sl@0
  1359
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1360
  g_assert (retval);
sl@0
  1361
sl@0
  1362
  /* Check array */
sl@0
  1363
  g_assert (ignore_test1_boolean);
sl@0
  1364
  g_assert (strcmp (argv[0], "program") == 0);
sl@0
  1365
  g_assert (strcmp (argv[1], "foo") == 0);
sl@0
  1366
  g_assert (strcmp (argv[2], "bar") == 0);
sl@0
  1367
  g_assert (argv[3] == NULL);
sl@0
  1368
sl@0
  1369
  g_strfreev (argv);
sl@0
  1370
  g_option_context_free (context);
sl@0
  1371
}
sl@0
  1372
sl@0
  1373
/* check that -- works */
sl@0
  1374
void
sl@0
  1375
rest_test2 (void)
sl@0
  1376
{
sl@0
  1377
  GOptionContext *context;
sl@0
  1378
  gboolean retval;
sl@0
  1379
  GError *error = NULL;
sl@0
  1380
  gchar **argv;
sl@0
  1381
  int argc;
sl@0
  1382
#ifndef SYMBIAN  
sl@0
  1383
  GOptionEntry entries [] = { 
sl@0
  1384
      { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL },
sl@0
  1385
      { NULL } 
sl@0
  1386
  };
sl@0
  1387
#else  
sl@0
  1388
  GOptionEntry entries [2];
sl@0
  1389
  
sl@0
  1390
  entries[0].long_name = "test";
sl@0
  1391
  entries[0].short_name = 0;
sl@0
  1392
  entries[0].flags = 0;
sl@0
  1393
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
  1394
  entries[0].arg_data = (gpointer)&ignore_test1_boolean;
sl@0
  1395
  entries[0].description =  NULL;
sl@0
  1396
  entries[0].arg_description = NULL;
sl@0
  1397
      
sl@0
  1398
  entries[1].long_name = NULL;
sl@0
  1399
  entries[1].short_name = 0;
sl@0
  1400
  entries[1].arg_data = NULL;
sl@0
  1401
  entries[1].description =  NULL;
sl@0
  1402
  entries[1].arg_description = NULL;
sl@0
  1403
#endif
sl@0
  1404
        
sl@0
  1405
  context = g_option_context_new (NULL);
sl@0
  1406
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1407
sl@0
  1408
  /* Now try parsing */
sl@0
  1409
  argv = split_string ("program foo --test -- -bar", &argc);
sl@0
  1410
  
sl@0
  1411
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1412
  g_assert (retval);
sl@0
  1413
sl@0
  1414
  /* Check array */
sl@0
  1415
  g_assert (ignore_test1_boolean);
sl@0
  1416
  g_assert (strcmp (argv[0], "program") == 0);
sl@0
  1417
  g_assert (strcmp (argv[1], "foo") == 0);
sl@0
  1418
  g_assert (strcmp (argv[2], "--") == 0);
sl@0
  1419
  g_assert (strcmp (argv[3], "-bar") == 0);
sl@0
  1420
  g_assert (argv[4] == NULL);
sl@0
  1421
sl@0
  1422
  g_strfreev (argv);
sl@0
  1423
  g_option_context_free (context);
sl@0
  1424
}
sl@0
  1425
sl@0
  1426
/* check that -- stripping works */
sl@0
  1427
void
sl@0
  1428
rest_test2a (void)
sl@0
  1429
{
sl@0
  1430
  GOptionContext *context;
sl@0
  1431
  gboolean retval;
sl@0
  1432
  GError *error = NULL;
sl@0
  1433
  gchar **argv;
sl@0
  1434
  int argc;
sl@0
  1435
#ifndef SYMBIAN  
sl@0
  1436
  GOptionEntry entries [] = { 
sl@0
  1437
      { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL },
sl@0
  1438
      { NULL } 
sl@0
  1439
  };
sl@0
  1440
#else 
sl@0
  1441
  GOptionEntry entries [2];
sl@0
  1442
  
sl@0
  1443
  entries[0].long_name = "test";
sl@0
  1444
  entries[0].short_name = 0;
sl@0
  1445
  entries[0].flags = 0;
sl@0
  1446
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
  1447
  entries[0].arg_data = (gpointer)&ignore_test1_boolean;
sl@0
  1448
  entries[0].description =  NULL;
sl@0
  1449
  entries[0].arg_description = NULL;
sl@0
  1450
      
sl@0
  1451
  entries[1].long_name = NULL;
sl@0
  1452
  entries[1].short_name = 0;
sl@0
  1453
  entries[1].arg_data = NULL;
sl@0
  1454
  entries[1].description =  NULL;
sl@0
  1455
  entries[1].arg_description = NULL;
sl@0
  1456
#endif
sl@0
  1457
        
sl@0
  1458
  context = g_option_context_new (NULL);
sl@0
  1459
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1460
sl@0
  1461
  /* Now try parsing */
sl@0
  1462
  argv = split_string ("program foo --test -- bar", &argc);
sl@0
  1463
  
sl@0
  1464
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1465
  g_assert (retval);
sl@0
  1466
sl@0
  1467
  /* Check array */
sl@0
  1468
  g_assert (ignore_test1_boolean);
sl@0
  1469
  g_assert (strcmp (argv[0], "program") == 0);
sl@0
  1470
  g_assert (strcmp (argv[1], "foo") == 0);
sl@0
  1471
  g_assert (strcmp (argv[2], "bar") == 0);
sl@0
  1472
  g_assert (argv[3] == NULL);
sl@0
  1473
sl@0
  1474
  g_strfreev (argv);
sl@0
  1475
  g_option_context_free (context);
sl@0
  1476
}
sl@0
  1477
sl@0
  1478
void
sl@0
  1479
rest_test2b (void)
sl@0
  1480
{
sl@0
  1481
  GOptionContext *context;
sl@0
  1482
  gboolean retval;
sl@0
  1483
  GError *error = NULL;
sl@0
  1484
  gchar **argv;
sl@0
  1485
  int argc;
sl@0
  1486
#ifndef SYMBIAN  
sl@0
  1487
  GOptionEntry entries [] = { 
sl@0
  1488
      { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL },
sl@0
  1489
      { NULL } 
sl@0
  1490
  };
sl@0
  1491
#else  
sl@0
  1492
  GOptionEntry entries [2];
sl@0
  1493
  
sl@0
  1494
  entries[0].long_name = "test";
sl@0
  1495
  entries[0].short_name = 0;
sl@0
  1496
  entries[0].flags = 0;
sl@0
  1497
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
  1498
  entries[0].arg_data = (gpointer)&ignore_test1_boolean;
sl@0
  1499
  entries[0].description =  NULL;
sl@0
  1500
  entries[0].arg_description = NULL;
sl@0
  1501
      
sl@0
  1502
  entries[1].long_name = NULL;
sl@0
  1503
  entries[1].short_name = 0;
sl@0
  1504
  entries[1].arg_data = NULL;
sl@0
  1505
  entries[1].description =  NULL;
sl@0
  1506
  entries[1].arg_description = NULL;
sl@0
  1507
#endif
sl@0
  1508
        
sl@0
  1509
  context = g_option_context_new (NULL);
sl@0
  1510
  g_option_context_set_ignore_unknown_options (context, TRUE);
sl@0
  1511
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1512
sl@0
  1513
  /* Now try parsing */
sl@0
  1514
  argv = split_string ("program foo --test -bar --", &argc);
sl@0
  1515
  
sl@0
  1516
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1517
  g_assert (retval);
sl@0
  1518
sl@0
  1519
  /* Check array */
sl@0
  1520
  g_assert (ignore_test1_boolean);
sl@0
  1521
  g_assert (strcmp (argv[0], "program") == 0);
sl@0
  1522
  g_assert (strcmp (argv[1], "foo") == 0);
sl@0
  1523
  g_assert (strcmp (argv[2], "-bar") == 0);
sl@0
  1524
  g_assert (argv[3] == NULL);
sl@0
  1525
sl@0
  1526
  g_strfreev (argv);
sl@0
  1527
  g_option_context_free (context);
sl@0
  1528
}
sl@0
  1529
sl@0
  1530
void
sl@0
  1531
rest_test2c (void)
sl@0
  1532
{
sl@0
  1533
  GOptionContext *context;
sl@0
  1534
  gboolean retval;
sl@0
  1535
  GError *error = NULL;
sl@0
  1536
  gchar **argv;
sl@0
  1537
  int argc;
sl@0
  1538
#ifndef SYMBIAN  
sl@0
  1539
  GOptionEntry entries [] = { 
sl@0
  1540
      { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL },
sl@0
  1541
      { NULL } 
sl@0
  1542
  };
sl@0
  1543
#else  
sl@0
  1544
  GOptionEntry entries [2];
sl@0
  1545
  
sl@0
  1546
  entries[0].long_name = "test";
sl@0
  1547
  entries[0].short_name = 0;
sl@0
  1548
  entries[0].flags = 0;
sl@0
  1549
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
  1550
  entries[0].arg_data = (gpointer)&ignore_test1_boolean;
sl@0
  1551
  entries[0].description =  NULL;
sl@0
  1552
  entries[0].arg_description = NULL;
sl@0
  1553
      
sl@0
  1554
  entries[1].long_name = NULL;
sl@0
  1555
  entries[1].short_name = 0;
sl@0
  1556
  entries[1].arg_data = NULL;
sl@0
  1557
  entries[1].description =  NULL;
sl@0
  1558
  entries[1].arg_description = NULL;
sl@0
  1559
#endif
sl@0
  1560
        
sl@0
  1561
  context = g_option_context_new (NULL);
sl@0
  1562
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1563
sl@0
  1564
  /* Now try parsing */
sl@0
  1565
  argv = split_string ("program --test foo -- bar", &argc);
sl@0
  1566
  
sl@0
  1567
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1568
  g_assert (retval);
sl@0
  1569
sl@0
  1570
  /* Check array */
sl@0
  1571
  g_assert (ignore_test1_boolean);
sl@0
  1572
  g_assert (strcmp (argv[0], "program") == 0);
sl@0
  1573
  g_assert (strcmp (argv[1], "foo") == 0);
sl@0
  1574
  g_assert (strcmp (argv[2], "bar") == 0);
sl@0
  1575
  g_assert (argv[3] == NULL);
sl@0
  1576
sl@0
  1577
  g_strfreev (argv);
sl@0
  1578
  g_option_context_free (context);
sl@0
  1579
}
sl@0
  1580
sl@0
  1581
void
sl@0
  1582
rest_test2d (void)
sl@0
  1583
{
sl@0
  1584
  GOptionContext *context;
sl@0
  1585
  gboolean retval;
sl@0
  1586
  GError *error = NULL;
sl@0
  1587
  gchar **argv;
sl@0
  1588
  int argc;
sl@0
  1589
#ifndef SYMBIAN  
sl@0
  1590
  GOptionEntry entries [] = { 
sl@0
  1591
      { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL },
sl@0
  1592
      { NULL } 
sl@0
  1593
  };
sl@0
  1594
#else  
sl@0
  1595
  GOptionEntry entries [2];
sl@0
  1596
  
sl@0
  1597
  entries[0].long_name = "test";
sl@0
  1598
  entries[0].short_name = 0;
sl@0
  1599
  entries[0].flags = 0;
sl@0
  1600
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
  1601
  entries[0].arg_data = (gpointer)&ignore_test1_boolean;
sl@0
  1602
  entries[0].description =  NULL;
sl@0
  1603
  entries[0].arg_description = NULL;
sl@0
  1604
      
sl@0
  1605
  entries[1].long_name = NULL;
sl@0
  1606
  entries[1].short_name = 0;
sl@0
  1607
  entries[1].arg_data = NULL;
sl@0
  1608
  entries[1].description =  NULL;
sl@0
  1609
  entries[1].arg_description = NULL;
sl@0
  1610
#endif
sl@0
  1611
        
sl@0
  1612
  context = g_option_context_new (NULL);
sl@0
  1613
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1614
sl@0
  1615
  /* Now try parsing */
sl@0
  1616
  argv = split_string ("program --test -- -bar", &argc);
sl@0
  1617
  
sl@0
  1618
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1619
  g_assert (retval);
sl@0
  1620
sl@0
  1621
  /* Check array */
sl@0
  1622
  g_assert (ignore_test1_boolean);
sl@0
  1623
  g_assert (strcmp (argv[0], "program") == 0);
sl@0
  1624
  g_assert (strcmp (argv[1], "--") == 0);
sl@0
  1625
  g_assert (strcmp (argv[2], "-bar") == 0);
sl@0
  1626
  g_assert (argv[3] == NULL);
sl@0
  1627
sl@0
  1628
  g_strfreev (argv);
sl@0
  1629
  g_option_context_free (context);
sl@0
  1630
}
sl@0
  1631
sl@0
  1632
sl@0
  1633
/* check that G_OPTION_REMAINING collects non-option arguments */
sl@0
  1634
void
sl@0
  1635
rest_test3 (void)
sl@0
  1636
{
sl@0
  1637
  GOptionContext *context;
sl@0
  1638
  gboolean retval;
sl@0
  1639
  GError *error = NULL;
sl@0
  1640
  gchar **argv;
sl@0
  1641
  int argc;
sl@0
  1642
#ifndef SYMBIAN  
sl@0
  1643
  GOptionEntry entries [] = { 
sl@0
  1644
      { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL },
sl@0
  1645
      { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &array_test1_array, NULL, NULL },
sl@0
  1646
      { NULL } 
sl@0
  1647
  };
sl@0
  1648
#else  
sl@0
  1649
  GOptionEntry entries [3];
sl@0
  1650
  
sl@0
  1651
  entries[0].long_name = "test";
sl@0
  1652
  entries[0].short_name = 0;
sl@0
  1653
  entries[0].flags = 0;
sl@0
  1654
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
  1655
  entries[0].arg_data = (gpointer)&ignore_test1_boolean;
sl@0
  1656
  entries[0].description =  NULL;
sl@0
  1657
  entries[0].arg_description = NULL;
sl@0
  1658
      
sl@0
  1659
      
sl@0
  1660
  entries[1].long_name = G_OPTION_REMAINING;
sl@0
  1661
  entries[1].short_name = 0;
sl@0
  1662
  entries[1].flags = 0;
sl@0
  1663
  entries[1].arg = G_OPTION_ARG_STRING_ARRAY;
sl@0
  1664
  entries[1].arg_data = (gpointer)&array_test1_array;
sl@0
  1665
  entries[1].description =  NULL;
sl@0
  1666
  entries[1].arg_description = NULL;
sl@0
  1667
sl@0
  1668
  entries[2].long_name = NULL;
sl@0
  1669
  entries[2].short_name = 0;
sl@0
  1670
  entries[2].arg_data = NULL;
sl@0
  1671
  entries[2].description =  NULL;
sl@0
  1672
  entries[2].arg_description = NULL;
sl@0
  1673
#endif
sl@0
  1674
        
sl@0
  1675
  context = g_option_context_new (NULL);
sl@0
  1676
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1677
sl@0
  1678
  /* Now try parsing */
sl@0
  1679
  argv = split_string ("program foo --test bar", &argc);
sl@0
  1680
  
sl@0
  1681
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1682
  g_assert (retval);
sl@0
  1683
sl@0
  1684
  /* Check array */
sl@0
  1685
  g_assert (ignore_test1_boolean);
sl@0
  1686
  g_assert (strcmp (array_test1_array[0], "foo") == 0);
sl@0
  1687
  g_assert (strcmp (array_test1_array[1], "bar") == 0);
sl@0
  1688
  g_assert (array_test1_array[2] == NULL);
sl@0
  1689
sl@0
  1690
  g_strfreev (array_test1_array);
sl@0
  1691
  
sl@0
  1692
  g_strfreev (argv);
sl@0
  1693
  g_option_context_free (context);
sl@0
  1694
}
sl@0
  1695
sl@0
  1696
sl@0
  1697
/* check that G_OPTION_REMAINING and -- work together */
sl@0
  1698
void
sl@0
  1699
rest_test4 (void)
sl@0
  1700
{
sl@0
  1701
  GOptionContext *context;
sl@0
  1702
  gboolean retval;
sl@0
  1703
  GError *error = NULL;
sl@0
  1704
  gchar **argv;
sl@0
  1705
  int argc;
sl@0
  1706
#ifndef SYMBIAN  
sl@0
  1707
  GOptionEntry entries [] = { 
sl@0
  1708
      { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL },
sl@0
  1709
      { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &array_test1_array, NULL, NULL },
sl@0
  1710
      { NULL } 
sl@0
  1711
  };
sl@0
  1712
#else  
sl@0
  1713
  GOptionEntry entries [3];
sl@0
  1714
  
sl@0
  1715
  entries[0].long_name = "test";
sl@0
  1716
  entries[0].short_name = 0;
sl@0
  1717
  entries[0].flags = 0;
sl@0
  1718
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
  1719
  entries[0].arg_data = (gpointer)&ignore_test1_boolean;
sl@0
  1720
  entries[0].description =  NULL;
sl@0
  1721
  entries[0].arg_description = NULL;
sl@0
  1722
      
sl@0
  1723
      
sl@0
  1724
  entries[1].long_name = G_OPTION_REMAINING;
sl@0
  1725
  entries[1].short_name = 0;
sl@0
  1726
  entries[1].flags = 0;
sl@0
  1727
  entries[1].arg = G_OPTION_ARG_STRING_ARRAY;
sl@0
  1728
  entries[1].arg_data = (gpointer)&array_test1_array;
sl@0
  1729
  entries[1].description =  NULL;
sl@0
  1730
  entries[1].arg_description = NULL;
sl@0
  1731
sl@0
  1732
  entries[2].long_name = NULL;
sl@0
  1733
  entries[2].short_name = 0;
sl@0
  1734
  entries[2].arg_data = NULL;
sl@0
  1735
  entries[2].description =  NULL;
sl@0
  1736
  entries[2].arg_description = NULL;
sl@0
  1737
#endif
sl@0
  1738
        
sl@0
  1739
  context = g_option_context_new (NULL);
sl@0
  1740
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1741
sl@0
  1742
  /* Now try parsing */
sl@0
  1743
  argv = split_string ("program foo --test -- -bar", &argc);
sl@0
  1744
  
sl@0
  1745
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1746
  g_assert (retval);
sl@0
  1747
sl@0
  1748
  /* Check array */
sl@0
  1749
  g_assert (ignore_test1_boolean);
sl@0
  1750
  g_assert (strcmp (array_test1_array[0], "foo") == 0);
sl@0
  1751
  g_assert (strcmp (array_test1_array[1], "-bar") == 0);
sl@0
  1752
  g_assert (array_test1_array[2] == NULL);
sl@0
  1753
sl@0
  1754
  g_strfreev (array_test1_array);
sl@0
  1755
  
sl@0
  1756
  g_strfreev (argv);
sl@0
  1757
  g_option_context_free (context);
sl@0
  1758
}
sl@0
  1759
sl@0
  1760
/* test that G_OPTION_REMAINING works with G_OPTION_ARG_FILENAME_ARRAY */
sl@0
  1761
void
sl@0
  1762
rest_test5 (void)
sl@0
  1763
{
sl@0
  1764
  GOptionContext *context;
sl@0
  1765
  gboolean retval;
sl@0
  1766
  GError *error = NULL;
sl@0
  1767
  gchar **argv;
sl@0
  1768
  int argc;
sl@0
  1769
  
sl@0
  1770
#ifndef SYMBIAN  
sl@0
  1771
  GOptionEntry entries [] = { 
sl@0
  1772
      { "test", 0, 0, G_OPTION_ARG_NONE, &ignore_test1_boolean, NULL, NULL },
sl@0
  1773
      { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &array_test1_array, NULL, NULL },
sl@0
  1774
      { NULL } 
sl@0
  1775
  };
sl@0
  1776
#else  
sl@0
  1777
  GOptionEntry entries [3];
sl@0
  1778
  
sl@0
  1779
  entries[0].long_name = "test";
sl@0
  1780
  entries[0].short_name = 0;
sl@0
  1781
  entries[0].flags = 0;
sl@0
  1782
  entries[0].arg = G_OPTION_ARG_NONE;
sl@0
  1783
  entries[0].arg_data = (gpointer)&ignore_test1_boolean;
sl@0
  1784
  entries[0].description =  NULL;
sl@0
  1785
  entries[0].arg_description = NULL;
sl@0
  1786
      
sl@0
  1787
      
sl@0
  1788
  entries[1].long_name = G_OPTION_REMAINING;
sl@0
  1789
  entries[1].short_name = 0;
sl@0
  1790
  entries[1].flags = 0;
sl@0
  1791
  entries[1].arg = G_OPTION_ARG_FILENAME_ARRAY;
sl@0
  1792
  entries[1].arg_data = (gpointer)&array_test1_array;
sl@0
  1793
  entries[1].description =  NULL;
sl@0
  1794
  entries[1].arg_description = NULL;
sl@0
  1795
sl@0
  1796
  entries[2].long_name = NULL;
sl@0
  1797
  entries[2].short_name = 0;
sl@0
  1798
  entries[2].arg_data = NULL;
sl@0
  1799
  entries[2].description =  NULL;
sl@0
  1800
  entries[2].arg_description = NULL;
sl@0
  1801
#endif
sl@0
  1802
        
sl@0
  1803
  context = g_option_context_new (NULL);
sl@0
  1804
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1805
sl@0
  1806
  /* Now try parsing */
sl@0
  1807
  argv = split_string ("program foo --test bar", &argc);
sl@0
  1808
  
sl@0
  1809
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1810
  g_assert (retval);
sl@0
  1811
sl@0
  1812
  /* Check array */
sl@0
  1813
  g_assert (ignore_test1_boolean);
sl@0
  1814
  g_assert (strcmp (array_test1_array[0], "foo") == 0);
sl@0
  1815
  g_assert (strcmp (array_test1_array[1], "bar") == 0);
sl@0
  1816
  g_assert (array_test1_array[2] == NULL);
sl@0
  1817
sl@0
  1818
  g_strfreev (array_test1_array);
sl@0
  1819
  
sl@0
  1820
  g_strfreev (argv);
sl@0
  1821
  g_option_context_free (context);
sl@0
  1822
}
sl@0
  1823
sl@0
  1824
void
sl@0
  1825
unknown_short_test (void)
sl@0
  1826
{
sl@0
  1827
  GOptionContext *context;
sl@0
  1828
  gboolean retval;
sl@0
  1829
  GError *error = NULL;
sl@0
  1830
  gchar **argv;
sl@0
  1831
  int argc;
sl@0
  1832
#ifndef SYMBIAN  
sl@0
  1833
  GOptionEntry entries [] = { { NULL } };
sl@0
  1834
#else
sl@0
  1835
  GOptionEntry entries [1];
sl@0
  1836
sl@0
  1837
  entries[0].long_name = NULL;
sl@0
  1838
  entries[0].short_name = 0;
sl@0
  1839
  entries[0].arg_data = NULL;
sl@0
  1840
  entries[0].description =  NULL;
sl@0
  1841
  entries[0].arg_description = NULL;
sl@0
  1842
#endif
sl@0
  1843
sl@0
  1844
  context = g_option_context_new (NULL);
sl@0
  1845
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1846
sl@0
  1847
  /* Now try parsing */
sl@0
  1848
  argv = split_string ("program -0", &argc);
sl@0
  1849
sl@0
  1850
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1851
  g_assert (!retval);
sl@0
  1852
sl@0
  1853
  g_strfreev (argv);
sl@0
  1854
  g_option_context_free (context);
sl@0
  1855
}
sl@0
  1856
sl@0
  1857
/* test that lone dashes are treated as non-options */
sl@0
  1858
void lonely_dash_test (void)
sl@0
  1859
{
sl@0
  1860
  GOptionContext *context;
sl@0
  1861
  gboolean retval;
sl@0
  1862
  GError *error = NULL;
sl@0
  1863
  gchar **argv;
sl@0
  1864
  int argc;
sl@0
  1865
sl@0
  1866
  context = g_option_context_new (NULL);
sl@0
  1867
sl@0
  1868
  /* Now try parsing */
sl@0
  1869
  argv = split_string ("program -", &argc);
sl@0
  1870
sl@0
  1871
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1872
sl@0
  1873
  g_assert (retval);
sl@0
  1874
sl@0
  1875
  g_assert (argv[1] && strcmp (argv[1], "-") == 0);
sl@0
  1876
sl@0
  1877
  g_strfreev (argv);
sl@0
  1878
  g_option_context_free (context);
sl@0
  1879
}
sl@0
  1880
sl@0
  1881
void
sl@0
  1882
missing_arg_test (void)
sl@0
  1883
{
sl@0
  1884
  GOptionContext *context;
sl@0
  1885
  gboolean retval;
sl@0
  1886
  GError *error = NULL;
sl@0
  1887
  gchar **argv;
sl@0
  1888
  int argc;
sl@0
  1889
  gchar *arg = NULL;
sl@0
  1890
#ifndef SYMBIAN  
sl@0
  1891
  GOptionEntry entries [] =
sl@0
  1892
    { { "test", 't', 0, G_OPTION_ARG_STRING, &arg, NULL, NULL },
sl@0
  1893
      { NULL } };
sl@0
  1894
#else      
sl@0
  1895
  GOptionEntry entries [2];
sl@0
  1896
  
sl@0
  1897
  entries[0].long_name = "test";
sl@0
  1898
  entries[0].short_name = 't';
sl@0
  1899
  entries[0].flags = 0;
sl@0
  1900
  entries[0].arg = G_OPTION_ARG_STRING;
sl@0
  1901
  entries[0].arg_data = (gpointer)&arg;
sl@0
  1902
  entries[0].description =  NULL;
sl@0
  1903
  entries[0].arg_description = NULL;
sl@0
  1904
      
sl@0
  1905
  entries[1].long_name = NULL;
sl@0
  1906
  entries[1].short_name = 0;
sl@0
  1907
  entries[1].arg_data = NULL;
sl@0
  1908
  entries[1].description =  NULL;
sl@0
  1909
  entries[1].arg_description = NULL;
sl@0
  1910
#endif
sl@0
  1911
sl@0
  1912
  context = g_option_context_new (NULL);
sl@0
  1913
  g_option_context_add_main_entries (context, entries, NULL);
sl@0
  1914
sl@0
  1915
  /* Now try parsing */
sl@0
  1916
  argv = split_string ("program --test", &argc);
sl@0
  1917
sl@0
  1918
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1919
  g_assert (retval == FALSE);
sl@0
  1920
  g_clear_error (&error);
sl@0
  1921
sl@0
  1922
  g_strfreev (argv);
sl@0
  1923
sl@0
  1924
  /* Try parsing again */
sl@0
  1925
  argv = split_string ("program --t", &argc);
sl@0
  1926
sl@0
  1927
  retval = g_option_context_parse (context, &argc, &argv, &error);
sl@0
  1928
  g_assert (retval == FALSE);
sl@0
  1929
sl@0
  1930
  g_strfreev (argv);
sl@0
  1931
  g_option_context_free (context);
sl@0
  1932
}
sl@0
  1933
sl@0
  1934
int
sl@0
  1935
main (int argc, char **argv)
sl@0
  1936
{
sl@0
  1937
  #ifdef SYMBIAN
sl@0
  1938
  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
  1939
  g_set_print_handler(mrtPrintHandler);
sl@0
  1940
  #endif /*SYMBIAN*/
sl@0
  1941
  /* Test that restoration on failure works */
sl@0
  1942
  error_test1_int = 0x12345678;
sl@0
  1943
  error_test1 ();
sl@0
  1944
  error_test2_string = "foo";
sl@0
  1945
  error_test2 ();
sl@0
  1946
  error_test3_boolean = FALSE;
sl@0
  1947
  error_test3 ();
sl@0
  1948
  
sl@0
  1949
  /* Test that special argument parsing works */
sl@0
  1950
  arg_test1 ();
sl@0
  1951
  arg_test2 ();
sl@0
  1952
  arg_test3 ();
sl@0
  1953
sl@0
  1954
  /* Test string arrays */
sl@0
  1955
  array_test1 ();
sl@0
  1956
sl@0
  1957
  /* Test callback args */
sl@0
  1958
  callback_test1 ();
sl@0
  1959
  callback_test2 ();
sl@0
  1960
sl@0
  1961
  /* Test optional arg flag for callback */
sl@0
  1962
  callback_test_optional_1 ();
sl@0
  1963
  callback_test_optional_2 ();
sl@0
  1964
  callback_test_optional_3 ();
sl@0
  1965
  callback_test_optional_4 ();
sl@0
  1966
  callback_test_optional_5 ();
sl@0
  1967
  callback_test_optional_6 ();
sl@0
  1968
  callback_test_optional_7 ();
sl@0
  1969
  callback_test_optional_8 ();
sl@0
  1970
  
sl@0
  1971
  /* Test ignoring options */
sl@0
  1972
  ignore_test1 ();
sl@0
  1973
  ignore_test2 ();
sl@0
  1974
  ignore_test3 ();
sl@0
  1975
sl@0
  1976
  add_test1 ();
sl@0
  1977
sl@0
  1978
  /* Test parsing empty args */
sl@0
  1979
  empty_test1 ();
sl@0
  1980
  empty_test2 ();
sl@0
  1981
  empty_test3 ();
sl@0
  1982
sl@0
  1983
  /* Test handling of rest args */
sl@0
  1984
  rest_test1 ();
sl@0
  1985
  rest_test2 ();
sl@0
  1986
  rest_test2a ();
sl@0
  1987
  rest_test2b ();
sl@0
  1988
  rest_test2c ();
sl@0
  1989
  rest_test2d ();
sl@0
  1990
  rest_test3 ();
sl@0
  1991
  rest_test4 ();
sl@0
  1992
  rest_test5 ();
sl@0
  1993
sl@0
  1994
  /* test for bug 166609 */
sl@0
  1995
  unknown_short_test ();
sl@0
  1996
sl@0
  1997
  /* test for bug 168008 */
sl@0
  1998
  lonely_dash_test ();
sl@0
  1999
sl@0
  2000
  /* test for bug 305576 */
sl@0
  2001
  missing_arg_test ();
sl@0
  2002
sl@0
  2003
#ifdef SYMBIAN
sl@0
  2004
  testResultXml("option-test");
sl@0
  2005
#endif /* EMULATOR */
sl@0
  2006
  return 0;
sl@0
  2007
}