test for utf8 stuff

git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@463 59561ff5-6e30-0410-9f3c-9617f08c8826
This commit is contained in:
vlm 2004-10-02 11:37:09 +00:00
parent 745fe25d33
commit c35d34ac39
3 changed files with 101 additions and 7 deletions

View File

@ -5,6 +5,7 @@ check_PROGRAMS = \
check-length \
check-OIDs \
check-GeneralizedTime \
check-UTF8String \
check-UTCTime \
check-INTEGER \
check-REAL

View File

@ -13,7 +13,7 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
SOURCES = check-GeneralizedTime.c check-INTEGER.c check-OIDs.c check-REAL.c check-UTCTime.c check-ber_tlv_tag.c check-length.c
SOURCES = check-GeneralizedTime.c check-INTEGER.c check-OIDs.c check-REAL.c check-UTCTime.c check-UTF8String.c check-ber_tlv_tag.c check-length.c
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@ -38,8 +38,8 @@ POST_UNINSTALL = :
host_triplet = @host@
check_PROGRAMS = check-ber_tlv_tag$(EXEEXT) check-length$(EXEEXT) \
check-OIDs$(EXEEXT) check-GeneralizedTime$(EXEEXT) \
check-UTCTime$(EXEEXT) check-INTEGER$(EXEEXT) \
check-REAL$(EXEEXT)
check-UTF8String$(EXEEXT) check-UTCTime$(EXEEXT) \
check-INTEGER$(EXEEXT) check-REAL$(EXEEXT)
subdir = skeletons/tests
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@ -69,6 +69,10 @@ check_UTCTime_SOURCES = check-UTCTime.c
check_UTCTime_OBJECTS = check-UTCTime.$(OBJEXT)
check_UTCTime_LDADD = $(LDADD)
check_UTCTime_DEPENDENCIES =
check_UTF8String_SOURCES = check-UTF8String.c
check_UTF8String_OBJECTS = check-UTF8String.$(OBJEXT)
check_UTF8String_LDADD = $(LDADD)
check_UTF8String_DEPENDENCIES =
check_ber_tlv_tag_SOURCES = check-ber_tlv_tag.c
check_ber_tlv_tag_OBJECTS = check-ber_tlv_tag.$(OBJEXT)
check_ber_tlv_tag_LDADD = $(LDADD)
@ -85,6 +89,7 @@ am__depfiles_maybe = depfiles
@AMDEP_TRUE@ ./$(DEPDIR)/check-OIDs.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/check-REAL.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/check-UTCTime.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/check-UTF8String.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/check-ber_tlv_tag.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/check-length.Po
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@ -96,11 +101,11 @@ CCLD = $(CC)
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = check-GeneralizedTime.c check-INTEGER.c check-OIDs.c \
check-REAL.c check-UTCTime.c check-ber_tlv_tag.c \
check-length.c
check-REAL.c check-UTCTime.c check-UTF8String.c \
check-ber_tlv_tag.c check-length.c
DIST_SOURCES = check-GeneralizedTime.c check-INTEGER.c check-OIDs.c \
check-REAL.c check-UTCTime.c check-ber_tlv_tag.c \
check-length.c
check-REAL.c check-UTCTime.c check-UTF8String.c \
check-ber_tlv_tag.c check-length.c
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@ -271,6 +276,9 @@ check-REAL$(EXEEXT): $(check_REAL_OBJECTS) $(check_REAL_DEPENDENCIES)
check-UTCTime$(EXEEXT): $(check_UTCTime_OBJECTS) $(check_UTCTime_DEPENDENCIES)
@rm -f check-UTCTime$(EXEEXT)
$(LINK) $(check_UTCTime_LDFLAGS) $(check_UTCTime_OBJECTS) $(check_UTCTime_LDADD) $(LIBS)
check-UTF8String$(EXEEXT): $(check_UTF8String_OBJECTS) $(check_UTF8String_DEPENDENCIES)
@rm -f check-UTF8String$(EXEEXT)
$(LINK) $(check_UTF8String_LDFLAGS) $(check_UTF8String_OBJECTS) $(check_UTF8String_LDADD) $(LIBS)
check-ber_tlv_tag$(EXEEXT): $(check_ber_tlv_tag_OBJECTS) $(check_ber_tlv_tag_DEPENDENCIES)
@rm -f check-ber_tlv_tag$(EXEEXT)
$(LINK) $(check_ber_tlv_tag_LDFLAGS) $(check_ber_tlv_tag_OBJECTS) $(check_ber_tlv_tag_LDADD) $(LIBS)
@ -289,6 +297,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check-OIDs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check-REAL.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check-UTCTime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check-UTF8String.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check-ber_tlv_tag.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check-length.Po@am__quote@

View File

@ -0,0 +1,84 @@
#include <UTF8String.c>
#include <OCTET_STRING.c>
#include <ber_decoder.c>
#include <ber_tlv_length.c>
#include <ber_tlv_tag.c>
#include <der_encoder.c>
#include <constraints.c>
#include <sys/time.h>
static void
check(int expect_length, char *buf, int buflen) {
UTF8String_t st;
int ret;
if(buflen < 0) buflen = strlen(buf);
st.buf = (uint8_t *)buf;
st.size = buflen;
printf("[");
for(ret = 0; ret < buflen; ret++)
printf("%c", buf[ret]);
ret = UTF8String_length(&st, 0, 0, 0);
printf("]: size=%d, expect=%d, got=%d\n",
buflen, expect_length, ret);
assert(ret == expect_length);
}
static int
check_speed() {
int cycles = 1000000;
double start, stop;
struct timeval tv;
UTF8String_t st;
char long_test[] =
"a\303\237a\303\237a\303\237a\303\237"
"a\303\237a\303\237a\303\237a\303\237"
"a\303\237a\303\237a\303\237a\303\237"
"a\303\237a\303\237a\303\237a\303\237"
"a\303\237a\303\237a\303\237a\303\237";
int ret;
int i;
st.buf = long_test;
st.size = sizeof(long_test) - 1;
ret = UTF8String_length(&st, 0, 0, 0);
assert(ret == 40);
printf("Now wait a bit...\n");
gettimeofday(&tv, 0);
start = tv.tv_sec + tv.tv_usec / 1000000.0;
for(i = 0; i < cycles; i++) {
ret += UTF8String_length(&st, 0, 0, 0);
}
gettimeofday(&tv, 0);
stop = tv.tv_sec + tv.tv_usec / 1000000.0;
printf("%d cycles in %.3fms\n", cycles, stop - start);
return ret;
}
int
main() {
check(0, "", 0);
check(1, "\0", 1);
check(-1, "\377", 1);
check(1, "a", 1);
check(2, "ab", 2);
check(3, "abc", 3);
assert(sizeof("a\303\237cd") == 6);
check(4, "a\303\237cd", 5);
check(-1, "a\303", 2);
check(-1, "a\370\200\200\200c", 5);
check(3, "a\370\201\200\201\257c", 7);
/* not yet check(-1, "a\370\200\200\200\257c", 7); */
check_speed();
return 0;
}