aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2004-10-02 11:37:09 +0000
committerLev Walkin <vlm@lionet.info>2004-10-02 11:37:09 +0000
commit263b0280cd8c1a7e2b816170d20ec51814ab05df (patch)
tree958eb4ef482b40b6576b724a30ea6157b9ac11e7
parent0ca7aec5705e368dd9330ea1521c21ffe7f07f51 (diff)
test for utf8 stuff
-rw-r--r--skeletons/tests/Makefile.am1
-rw-r--r--skeletons/tests/Makefile.in23
-rw-r--r--skeletons/tests/check-UTF8String.c84
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;
+}
+