]> git.saurik.com Git - wxWidgets.git/blame - src/expat/tests/chardata.c
wxMessageBox off the main thread lost result code.
[wxWidgets.git] / src / expat / tests / chardata.c
CommitLineData
11a3e7b6
VZ
1/* Copyright (c) 1998-2003 Thai Open Source Software Center Ltd
2 See the file COPYING for copying permission.
5e9f2524 3
11a3e7b6
VZ
4 chardata.c
5*/
6
7#ifdef HAVE_EXPAT_CONFIG_H
8#include <expat_config.h>
9#endif
10#ifdef HAVE_CHECK_H
5e9f2524 11#include <check.h>
11a3e7b6
VZ
12#else
13#include "minicheck.h"
14#endif
15
16#include <assert.h>
5e9f2524
VS
17#include <stdio.h>
18#include <string.h>
19
20#include "chardata.h"
21
22
23static int
24xmlstrlen(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
34void
35CharData_Init(CharData *storage)
36{
37 assert(storage != NULL);
38 storage->count = -1;
39}
40
41void
42CharData_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
60void
61CharData_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
82int
83CharData_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
111int
112CharData_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}