symbian-qemu-0.9.1-12/expat-2.0.0/tests/chardata.c
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 /* Copyright (c) 1998-2003 Thai Open Source Software Center Ltd
       
     2    See the file COPYING for copying permission.
       
     3 
       
     4    chardata.c
       
     5 */
       
     6 
       
     7 #ifdef HAVE_EXPAT_CONFIG_H
       
     8 #include <expat_config.h>
       
     9 #endif
       
    10 #ifdef HAVE_CHECK_H
       
    11 #include <check.h>
       
    12 #else
       
    13 #include "minicheck.h"
       
    14 #endif
       
    15 
       
    16 #include <assert.h>
       
    17 #include <stdio.h>
       
    18 #include <string.h>
       
    19 
       
    20 #include "chardata.h"
       
    21 
       
    22 
       
    23 static int
       
    24 xmlstrlen(const XML_Char *s)
       
    25 {
       
    26     int len = 0;
       
    27     assert(s != NULL);
       
    28     while (s[len] != 0)
       
    29         ++len;
       
    30     return len;
       
    31 }
       
    32 
       
    33 
       
    34 void
       
    35 CharData_Init(CharData *storage)
       
    36 {
       
    37     assert(storage != NULL);
       
    38     storage->count = -1;
       
    39 }
       
    40 
       
    41 void
       
    42 CharData_AppendString(CharData *storage, const char *s)
       
    43 {
       
    44     int maxchars = sizeof(storage->data) / sizeof(storage->data[0]);
       
    45     int len;
       
    46 
       
    47     assert(s != NULL);
       
    48     len = strlen(s);
       
    49     if (storage->count < 0)
       
    50         storage->count = 0;
       
    51     if ((len + storage->count) > maxchars) {
       
    52         len = (maxchars - storage->count);
       
    53     }
       
    54     if (len + storage->count < sizeof(storage->data)) {
       
    55         memcpy(storage->data + storage->count, s, len);
       
    56         storage->count += len;
       
    57     }
       
    58 }
       
    59 
       
    60 void
       
    61 CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len)
       
    62 {
       
    63     int maxchars;
       
    64 
       
    65     assert(storage != NULL);
       
    66     assert(s != NULL);
       
    67     maxchars = sizeof(storage->data) / sizeof(storage->data[0]);
       
    68     if (storage->count < 0)
       
    69         storage->count = 0;
       
    70     if (len < 0)
       
    71         len = xmlstrlen(s);
       
    72     if ((len + storage->count) > maxchars) {
       
    73         len = (maxchars - storage->count);
       
    74     }
       
    75     if (len + storage->count < sizeof(storage->data)) {
       
    76         memcpy(storage->data + storage->count, s,
       
    77                len * sizeof(storage->data[0]));
       
    78         storage->count += len;
       
    79     }
       
    80 }
       
    81 
       
    82 int
       
    83 CharData_CheckString(CharData *storage, const char *expected)
       
    84 {
       
    85     char buffer[1280];
       
    86     int len;
       
    87     int count;
       
    88 
       
    89     assert(storage != NULL);
       
    90     assert(expected != NULL);
       
    91     count = (storage->count < 0) ? 0 : storage->count;
       
    92     len = strlen(expected);
       
    93     if (len != count) {
       
    94         if (sizeof(XML_Char) == 1)
       
    95             sprintf(buffer, "wrong number of data characters:"
       
    96                     " got %d, expected %d:\n%s", count, len, storage->data);
       
    97         else
       
    98             sprintf(buffer,
       
    99                     "wrong number of data characters: got %d, expected %d",
       
   100                     count, len);
       
   101         fail(buffer);
       
   102         return 0;
       
   103     }
       
   104     if (memcmp(expected, storage->data, len) != 0) {
       
   105         fail("got bad data bytes");
       
   106         return 0;
       
   107     }
       
   108     return 1;
       
   109 }
       
   110 
       
   111 int
       
   112 CharData_CheckXMLChars(CharData *storage, const XML_Char *expected)
       
   113 {
       
   114     char buffer[1024];
       
   115     int len = xmlstrlen(expected);
       
   116     int count;
       
   117 
       
   118     assert(storage != NULL);
       
   119     count = (storage->count < 0) ? 0 : storage->count;
       
   120     if (len != count) {
       
   121         sprintf(buffer, "wrong number of data characters: got %d, expected %d",
       
   122                 count, len);
       
   123         fail(buffer);
       
   124         return 0;
       
   125     }
       
   126     if (memcmp(expected, storage->data, len * sizeof(storage->data[0])) != 0) {
       
   127         fail("got bad data bytes");
       
   128         return 0;
       
   129     }
       
   130     return 1;
       
   131 }