diff options
Diffstat (limited to 'skeletons/tests')
-rw-r--r-- | skeletons/tests/Makefile.am | 1 | ||||
-rw-r--r-- | skeletons/tests/Makefile.in | 23 | ||||
-rw-r--r-- | skeletons/tests/check-UTF8String.c | 84 |
3 files changed, 101 insertions, 7 deletions
diff --git a/skeletons/tests/Makefile.am b/skeletons/tests/Makefile.am index eb1f0187..a58e469c 100644 --- a/skeletons/tests/Makefile.am +++ b/skeletons/tests/Makefile.am @@ -5,6 +5,7 @@ check_PROGRAMS = \ check-length \ check-OIDs \ check-GeneralizedTime \ + check-UTF8String \ check-UTCTime \ check-INTEGER \ check-REAL diff --git a/skeletons/tests/Makefile.in b/skeletons/tests/Makefile.in index 0587cec7..835df71e 100644 --- a/skeletons/tests/Makefile.in +++ b/skeletons/tests/Makefile.in @@ -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@ diff --git a/skeletons/tests/check-UTF8String.c b/skeletons/tests/check-UTF8String.c new file mode 100644 index 00000000..be8c2737 --- /dev/null +++ b/skeletons/tests/check-UTF8String.c @@ -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; +} + |