[Expat-checkins] CVS: expat/tests .cvsignore,NONE,1.1 Makefile.in,NONE,1.1 README.txt,NONE,1.1 runtests.c,NONE,1.1
Fred L. Drake
fdrake@users.sourceforge.net
Fri, 17 Aug 2001 12:16:44 -0700
Update of /cvsroot/expat/expat/tests
In directory usw-pr-cvs1:/tmp/cvs-serv5767
Added Files:
.cvsignore Makefile.in README.txt runtests.c
Log Message:
Tell CVS to ignore the intermediate files generated by building the test
suite.
--- NEW FILE: .cvsignore ---
Makefile
runtests
--- NEW FILE: Makefile.in ---
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
CC=@CC@
CPPFLAGS = @CPPFLAGS@ -I../lib
LDFLAGS = @LDFLAGS@ -L../lib
LIBS = @LIBS@ -lexpat -lcheck
CFLAGS = @CFLAGS@
check: runtests
@./runtests
runtests.o: runtests.c
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
runtests: runtests.o
$(CC) $(LDFLAGS) $< -o $@ $(LIBS)
--- NEW FILE: README.txt ---
This directory contains the (fledgling) test suite for Expat. The
tests provide general unit testing and regression coverage. The tests
are not expected to be useful examples of Expat usage; see the
examples/ directory for that.
The Expat tests use the "Check" unit testing framework for C. More
information on Check can be found at:
http://check.sourceforge.net/
Check must be installed before the unit tests can be compiled & run.
Since both Check and this test suite are young, it can all change in a
later version.
--- NEW FILE: runtests.c ---
#include <check.h>
#include <stdlib.h>
#include "expat.h"
static XML_Parser parser;
static void
basic_setup(void)
{
parser = XML_ParserCreate("us-ascii");
}
static void
basic_teardown(void)
{
if (parser != NULL) {
XML_ParserFree(parser);
}
}
START_TEST(test_nul_byte)
{
char *text = "<doc>\0</doc>";
if (parser == NULL)
fail("Parser not created.");
/* test that a NUL byte (in US-ASCII data) is an error */
if (XML_Parse(parser, text, 12, 1))
fail("Parser did not report error on NUL-byte.");
fail_unless(XML_GetErrorCode(parser) == XML_ERROR_INVALID_TOKEN,
"Got wrong error code for NUL-byte in US-ASCII encoding.");
}
END_TEST
START_TEST(test_u0000_char)
{
char *text = "<doc>�</doc>";
if (parser == NULL)
fail("Parser not created.");
/* test that a NUL byte (in US-ASCII data) is an error */
if (XML_Parse(parser, text, strlen(text), 1))
fail("Parser did not report error on NUL-byte.");
fail_unless(XML_GetErrorCode(parser) == XML_ERROR_BAD_CHAR_REF,
"Got wrong error code for �.");
}
END_TEST
static Suite *
make_basic_suite(void)
{
Suite *s = suite_create("basic");
TCase *tc_nulls = tcase_create("null characters");
suite_add_tcase(s, tc_nulls);
tcase_set_fixture(tc_nulls, basic_setup, basic_teardown);
tcase_add_test(tc_nulls, test_nul_byte);
tcase_add_test(tc_nulls, test_u0000_char);
return s;
}
int
main(int argc, char *argv[])
{
int nf;
int verbosity = CRNORMAL;
Suite *s = make_basic_suite();
SRunner *sr = srunner_create(s);
if (argc >= 2) {
char *opt = argv[1];
if (strcmp(opt, "-v") == 0 || strcmp(opt, "--verbose") == 0)
verbosity = CRVERBOSE;
else if (strcmp(opt, "-q") == 0 || strcmp(opt, "--quiet") == 0)
verbosity = CRSILENT;
}
srunner_run_all(sr, verbosity);
nf = srunner_ntests_failed(sr);
srunner_free(sr);
suite_free(s);
return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}