os/ossrv/glib/tsrc/BC/tests/markup-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
#undef G_DISABLE_ASSERT
sl@0
     3
#undef G_LOG_DOMAIN
sl@0
     4
sl@0
     5
#include <stdio.h>
sl@0
     6
#include <glib.h>
sl@0
     7
sl@0
     8
#ifdef SYMBIAN
sl@0
     9
#include "mrt2_glib2_test.h"
sl@0
    10
#endif /*SYMBIAN*/
sl@0
    11
sl@0
    12
sl@0
    13
static int depth = 0;
sl@0
    14
sl@0
    15
static void
sl@0
    16
indent (int extra)
sl@0
    17
{
sl@0
    18
  
sl@0
    19
}
sl@0
    20
sl@0
    21
static void
sl@0
    22
start_element_handler  (GMarkupParseContext *context,
sl@0
    23
                        const gchar         *element_name,
sl@0
    24
                        const gchar        **attribute_names,
sl@0
    25
                        const gchar        **attribute_values,
sl@0
    26
                        gpointer             user_data,
sl@0
    27
                        GError             **error)
sl@0
    28
{
sl@0
    29
  ++depth;
sl@0
    30
}
sl@0
    31
sl@0
    32
static void
sl@0
    33
end_element_handler    (GMarkupParseContext *context,
sl@0
    34
                        const gchar         *element_name,
sl@0
    35
                        gpointer             user_data,
sl@0
    36
                        GError             **error)
sl@0
    37
{
sl@0
    38
  --depth;
sl@0
    39
  indent (0);
sl@0
    40
}
sl@0
    41
sl@0
    42
static void
sl@0
    43
text_handler           (GMarkupParseContext *context,
sl@0
    44
                        const gchar         *text,
sl@0
    45
                        gsize                text_len,
sl@0
    46
                        gpointer             user_data,
sl@0
    47
                        GError             **error)
sl@0
    48
{
sl@0
    49
  indent (0);
sl@0
    50
}
sl@0
    51
sl@0
    52
sl@0
    53
static void
sl@0
    54
passthrough_handler    (GMarkupParseContext *context,
sl@0
    55
                        const gchar         *passthrough_text,
sl@0
    56
                        gsize                text_len,
sl@0
    57
                        gpointer             user_data,
sl@0
    58
                        GError             **error)
sl@0
    59
{
sl@0
    60
  indent (0);
sl@0
    61
}
sl@0
    62
sl@0
    63
static void
sl@0
    64
error_handler          (GMarkupParseContext *context,
sl@0
    65
                        GError              *error,
sl@0
    66
                        gpointer             user_data)
sl@0
    67
{
sl@0
    68
  g_print(" %s\n", error->message);
sl@0
    69
  g_assert(FALSE && "markup-test failed");
sl@0
    70
}
sl@0
    71
sl@0
    72
static GMarkupParser parser = {
sl@0
    73
  start_element_handler,
sl@0
    74
  end_element_handler,
sl@0
    75
  text_handler,
sl@0
    76
  passthrough_handler,
sl@0
    77
  error_handler
sl@0
    78
};
sl@0
    79
sl@0
    80
static int
sl@0
    81
test_in_chunks (const gchar *contents,
sl@0
    82
                gint         length,
sl@0
    83
                gint         chunk_size)
sl@0
    84
{
sl@0
    85
  GMarkupParseContext *context;
sl@0
    86
  int i = 0;
sl@0
    87
  
sl@0
    88
  context = g_markup_parse_context_new (&parser, 0, NULL, NULL);
sl@0
    89
  if(!context)
sl@0
    90
  {
sl@0
    91
  	 g_print("markup-test.c : g_markup_parse_context_new failed @ line : %d",__LINE__);
sl@0
    92
  	 g_assert(FALSE && "markup-test failed");
sl@0
    93
  	 return 1;
sl@0
    94
  }
sl@0
    95
sl@0
    96
  while (i < length)
sl@0
    97
    {
sl@0
    98
      int this_chunk = MIN (length - i, chunk_size);
sl@0
    99
sl@0
   100
      if (!g_markup_parse_context_parse (context,
sl@0
   101
                                         contents + i,
sl@0
   102
                                         this_chunk,
sl@0
   103
                                         NULL))
sl@0
   104
        {
sl@0
   105
          g_print("markup-test.c : g_markup_parse_context_parse failed ");
sl@0
   106
          g_markup_parse_context_free (context);
sl@0
   107
          g_assert(FALSE && "markup-test failed");
sl@0
   108
          return 1;
sl@0
   109
        }
sl@0
   110
sl@0
   111
      i += this_chunk;
sl@0
   112
    }
sl@0
   113
      
sl@0
   114
  if (!g_markup_parse_context_end_parse (context, NULL))
sl@0
   115
    {
sl@0
   116
      g_print("markup-test.c : g_markup_parse_context_end_parse failed ");
sl@0
   117
      g_assert(FALSE && "markup-test failed");
sl@0
   118
      g_markup_parse_context_free (context);
sl@0
   119
      return 1;
sl@0
   120
    }
sl@0
   121
sl@0
   122
  g_markup_parse_context_free (context);
sl@0
   123
sl@0
   124
  return 0;
sl@0
   125
}
sl@0
   126
sl@0
   127
static int
sl@0
   128
test_file (const gchar *filename)
sl@0
   129
{
sl@0
   130
  gchar *contents;
sl@0
   131
  gsize  length;
sl@0
   132
  GError *error;
sl@0
   133
  GMarkupParseContext *context;
sl@0
   134
  
sl@0
   135
  error = NULL;
sl@0
   136
  if (!g_file_get_contents (filename,
sl@0
   137
                            &contents,
sl@0
   138
                            &length,
sl@0
   139
                            &error))
sl@0
   140
    {
sl@0
   141
      g_assert(FALSE && "c:\\1.gmarkup not found");
sl@0
   142
      g_print("%s\n", error->message);
sl@0
   143
      g_error_free (error);
sl@0
   144
      return 1;
sl@0
   145
    }
sl@0
   146
sl@0
   147
  context = g_markup_parse_context_new (&parser, 0, NULL, NULL);
sl@0
   148
  if(!context)
sl@0
   149
  {
sl@0
   150
  	 g_print("markup-test.c : g_markup_parse_context_new failed @ line : %d",__LINE__);
sl@0
   151
  	 g_assert(FALSE && "markup-test failed");
sl@0
   152
  	 return 1;
sl@0
   153
  }
sl@0
   154
  
sl@0
   155
  if (!g_markup_parse_context_parse (context, contents, length, NULL))
sl@0
   156
    {
sl@0
   157
      g_print("markup-test.c : g_markup_parse_context_parse failed ");
sl@0
   158
      g_assert(FALSE && "markup-test failed");
sl@0
   159
      g_markup_parse_context_free (context);
sl@0
   160
      return 1;
sl@0
   161
    }
sl@0
   162
sl@0
   163
  if (!g_markup_parse_context_end_parse (context, NULL))
sl@0
   164
    {
sl@0
   165
      g_print("markup-test.c : g_markup_parse_context_end_parse failed ");
sl@0
   166
      g_assert(FALSE && "markup-test failed");
sl@0
   167
      g_markup_parse_context_free (context);
sl@0
   168
      return 1;
sl@0
   169
    }
sl@0
   170
sl@0
   171
  g_markup_parse_context_free (context);
sl@0
   172
sl@0
   173
  /* A byte at a time */
sl@0
   174
  if (test_in_chunks (contents, length, 1) != 0)
sl@0
   175
    return 1;
sl@0
   176
sl@0
   177
  /* 2 bytes */
sl@0
   178
  if (test_in_chunks (contents, length, 2) != 0)
sl@0
   179
    return 1;
sl@0
   180
sl@0
   181
  /*5 bytes */
sl@0
   182
  if (test_in_chunks (contents, length, 5) != 0)
sl@0
   183
    return 1;
sl@0
   184
  
sl@0
   185
  /* 12 bytes */
sl@0
   186
  if (test_in_chunks (contents, length, 12) != 0)
sl@0
   187
    return 1;
sl@0
   188
  
sl@0
   189
  /* 1024 bytes */
sl@0
   190
  if (test_in_chunks (contents, length, 1024) != 0)
sl@0
   191
    return 1;
sl@0
   192
sl@0
   193
  return 0;
sl@0
   194
}
sl@0
   195
sl@0
   196
int
sl@0
   197
main (int   argc,
sl@0
   198
      char *argv[])
sl@0
   199
{
sl@0
   200
  int retval;
sl@0
   201
  
sl@0
   202
  #ifdef SYMBIAN
sl@0
   203
  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
   204
  g_set_print_handler(mrtPrintHandler);
sl@0
   205
  #endif /*SYMBIAN*/
sl@0
   206
sl@0
   207
sl@0
   208
  retval = test_file ("c:\\1.gmarkup");
sl@0
   209
  
sl@0
   210
  #ifdef SYMBIAN
sl@0
   211
  testResultXml("markup-test");
sl@0
   212
  #endif /* EMULATOR */
sl@0
   213
  
sl@0
   214
  return retval;
sl@0
   215
}
sl@0
   216