Skip to content

Commit

Permalink
If the check library is not available, use an abbreviated implementat…
Browse files Browse the repository at this point in the history
…ion of

the check API.  This allows the unit and regression tests to be run on any
system without requiring an external package.
  • Loading branch information
fdrake committed Apr 30, 2004
1 parent d0debe4 commit fe955ae
Showing 1 changed file with 131 additions and 0 deletions.
131 changes: 131 additions & 0 deletions tests/chardata.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
/* Copyright (c) 1998-2003 Thai Open Source Software Center Ltd
See the file COPYING for copying permission.
chardata.c
*/

#ifdef HAVE_EXPAT_CONFIG_H
#include <expat_config.h>
#endif
#ifdef HAVE_CHECK_H
#include <check.h>
#else
#include "minicheck.h"
#endif

#include <assert.h>
#include <stdio.h>
#include <string.h>

#include "chardata.h"


static int
xmlstrlen(const XML_Char *s)
{
int len = 0;
assert(s != NULL);
while (s[len] != 0)
++len;
return len;
}


void
CharData_Init(CharData *storage)
{
assert(storage != NULL);
storage->count = -1;
}

void
CharData_AppendString(CharData *storage, const char *s)
{
int maxchars = sizeof(storage->data) / sizeof(storage->data[0]);
int len;

assert(s != NULL);
len = strlen(s);
if (storage->count < 0)
storage->count = 0;
if ((len + storage->count) > maxchars) {
len = (maxchars - storage->count);
}
if (len + storage->count < sizeof(storage->data)) {
memcpy(storage->data + storage->count, s, len);
storage->count += len;
}
}

void
CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len)
{
int maxchars;

assert(storage != NULL);
assert(s != NULL);
maxchars = sizeof(storage->data) / sizeof(storage->data[0]);
if (storage->count < 0)
storage->count = 0;
if (len < 0)
len = xmlstrlen(s);
if ((len + storage->count) > maxchars) {
len = (maxchars - storage->count);
}
if (len + storage->count < sizeof(storage->data)) {
memcpy(storage->data + storage->count, s,
len * sizeof(storage->data[0]));
storage->count += len;
}
}

int
CharData_CheckString(CharData *storage, const char *expected)
{
char buffer[1280];
int len;
int count;

assert(storage != NULL);
assert(expected != NULL);
count = (storage->count < 0) ? 0 : storage->count;
len = strlen(expected);
if (len != count) {
if (sizeof(XML_Char) == 1)
sprintf(buffer, "wrong number of data characters:"
" got %d, expected %d:\n%s", count, len, storage->data);
else
sprintf(buffer,
"wrong number of data characters: got %d, expected %d",
count, len);
fail(buffer);
return 0;
}
if (memcmp(expected, storage->data, len) != 0) {
fail("got bad data bytes");
return 0;
}
return 1;
}

int
CharData_CheckXMLChars(CharData *storage, const XML_Char *expected)
{
char buffer[1024];
int len = xmlstrlen(expected);
int count;

assert(storage != NULL);
count = (storage->count < 0) ? 0 : storage->count;
if (len != count) {
sprintf(buffer, "wrong number of data characters: got %d, expected %d",
count, len);
fail(buffer);
return 0;
}
if (memcmp(expected, storage->data, len * sizeof(storage->data[0])) != 0) {
fail("got bad data bytes");
return 0;
}
return 1;
}

0 comments on commit fe955ae

Please sign in to comment.