mirror of https://gerrit.osmocom.org/asn1c
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:
parent
745fe25d33
commit
c35d34ac39
|
@ -5,6 +5,7 @@ check_PROGRAMS = \
|
|||
check-length \
|
||||
check-OIDs \
|
||||
check-GeneralizedTime \
|
||||
check-UTF8String \
|
||||
check-UTCTime \
|
||||
check-INTEGER \
|
||||
check-REAL
|
||||
|
|
|
@ -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@
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue