internal/gcce/src/gcce-lib.cpp
author hgs
Tue, 02 Nov 2010 19:23:22 +0530
changeset 79 564bc7b7ad27
permissions -rw-r--r--
201043
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* ==============================================================================
hgs
parents:
diff changeset
     3
*  Name        : gcce-validate.c
hgs
parents:
diff changeset
     4
*  Part of     : internal/gcce
hgs
parents:
diff changeset
     5
*  Description : This is a test program to test the cross linking of openc libraries with
hgs
parents:
diff changeset
     6
*  programs compiled using the gcce compiler
hgs
parents:
diff changeset
     7
Copyright © 2006 Nokia Corporation
hgs
parents:
diff changeset
     8
All rights reserved.
hgs
parents:
diff changeset
     9
Redistribution and use in source and binary forms, with or without 
hgs
parents:
diff changeset
    10
modification, are permitted provided that the following conditions are met:
hgs
parents:
diff changeset
    11
 * Redistributions of source code must retain the above copyright notice, this 
hgs
parents:
diff changeset
    12
   list of conditions and the following disclaimer. 
hgs
parents:
diff changeset
    13
 * Redistributions in binary form must reproduce the above copyright notice, 
hgs
parents:
diff changeset
    14
   this list of conditions and the following disclaimer in the documentation 
hgs
parents:
diff changeset
    15
   and/or other materials provided with the distribution. 
hgs
parents:
diff changeset
    16
 * Neither the name of the <ORGANIZATION> nor the names of its contributors 
hgs
parents:
diff changeset
    17
   may be used to endorse or promote products derived from this software 
hgs
parents:
diff changeset
    18
   without specific prior written permission. 
hgs
parents:
diff changeset
    19
   
hgs
parents:
diff changeset
    20
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
hgs
parents:
diff changeset
    21
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
hgs
parents:
diff changeset
    22
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
hgs
parents:
diff changeset
    23
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
hgs
parents:
diff changeset
    24
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
hgs
parents:
diff changeset
    25
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
hgs
parents:
diff changeset
    26
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
hgs
parents:
diff changeset
    27
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
hgs
parents:
diff changeset
    28
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
hgs
parents:
diff changeset
    29
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
hgs
parents:
diff changeset
    30
* ==============================================================================
hgs
parents:
diff changeset
    31
*/
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
#include "glib.h"
hgs
parents:
diff changeset
    34
#include <stdio.h>
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
#include "result_log.h"
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
#define UNICODE_VALID(Char)                   \
hgs
parents:
diff changeset
    39
    ((Char) < 0x110000 &&                     \
hgs
parents:
diff changeset
    40
     (((Char) & 0xFFFFF800) != 0xD800) &&     \
hgs
parents:
diff changeset
    41
     ((Char) < 0xFDD0 || (Char) > 0xFDEF) &&  \
hgs
parents:
diff changeset
    42
     ((Char) & 0xFFFE) != 0xFFFE)
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
EXPORT_C int do_test (gint         index,
hgs
parents:
diff changeset
    47
	 const gchar *text, 
hgs
parents:
diff changeset
    48
	 gint         max_len,
hgs
parents:
diff changeset
    49
	 gint         offset,
hgs
parents:
diff changeset
    50
	 gboolean     valid)
hgs
parents:
diff changeset
    51
{
hgs
parents:
diff changeset
    52
  const gchar *end;
hgs
parents:
diff changeset
    53
  gboolean result;
hgs
parents:
diff changeset
    54
  int failed =0;
hgs
parents:
diff changeset
    55
  
hgs
parents:
diff changeset
    56
  result = g_utf8_validate (text, max_len, &end);
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
  if (result != valid || end - text != offset)
hgs
parents:
diff changeset
    59
    {
hgs
parents:
diff changeset
    60
      GString *str;
hgs
parents:
diff changeset
    61
      const gchar *p;
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
      failed++;
hgs
parents:
diff changeset
    64
      
hgs
parents:
diff changeset
    65
      str = g_string_new (0);
hgs
parents:
diff changeset
    66
      for (p = text; *p; p++)
hgs
parents:
diff changeset
    67
	g_string_append_printf (str, "\\x%02hhx", *p);
hgs
parents:
diff changeset
    68
      g_print ("%d: g_utf8_validate (\"%s\", %d) failed, "
hgs
parents:
diff changeset
    69
	       "expected %s %d, got %s %d\n",
hgs
parents:
diff changeset
    70
	       index,
hgs
parents:
diff changeset
    71
	       str->str, max_len, 
hgs
parents:
diff changeset
    72
	       valid ? "TRUE" : "FALSE", offset,
hgs
parents:
diff changeset
    73
	       result ? "TRUE" : "FALSE", (gint) (end - text));
hgs
parents:
diff changeset
    74
      g_string_free (str, FALSE);
hgs
parents:
diff changeset
    75
    }
hgs
parents:
diff changeset
    76
    return failed;
hgs
parents:
diff changeset
    77
}
hgs
parents:
diff changeset
    78