aboutsummaryrefslogtreecommitdiffstats
path: root/skeletons
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2005-08-27 03:20:20 +0000
committerLev Walkin <vlm@lionet.info>2005-08-27 03:20:20 +0000
commit9f7adb6b1b9951b0324ce66ff1379b9f333c8faa (patch)
tree6b375de499072eff847133fc7c9a2821f1e65d38 /skeletons
parentfee6f715a223f2a9b1a433d26424dd10ba301cd2 (diff)
test of xer encoding
Diffstat (limited to 'skeletons')
-rw-r--r--skeletons/tests/check-OCTET_STRING.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/skeletons/tests/check-OCTET_STRING.c b/skeletons/tests/check-OCTET_STRING.c
index 0a8d68ec..51f6eb3b 100644
--- a/skeletons/tests/check-OCTET_STRING.c
+++ b/skeletons/tests/check-OCTET_STRING.c
@@ -51,6 +51,36 @@ check(enum encoding_type type, char *tagname, char *xmlbuf, char *verify) {
}
}
+static char buf[1024];
+
+static int
+write_buf(const void *buffer, size_t size, void *key) {
+ size_t *off = key;
+ assert(*off + size < sizeof(buf));
+ memcpy(buf + *off, buffer, size);
+ *off += size;
+ return 0;
+}
+
+static void
+encode(char *orig, char *encoded) {
+ OCTET_STRING_t os;
+ size_t written = 0;
+ asn_enc_rval_t er;
+
+ memset(&os, 0, sizeof(os));
+
+ OCTET_STRING_fromString(&os, orig);
+
+ er = OCTET_STRING_encode_xer_utf8(&asn_DEF_OCTET_STRING, &os,
+ 0, 0, write_buf, &written);
+ assert(er.encoded >= 0);
+ buf[er.encoded] = '\0';
+ printf("Orig: [%s], encoded: [%s], check [%s]\n",
+ orig, buf, encoded);
+ assert(strcmp(buf, encoded) == 0);
+}
+
int
main() {
@@ -104,6 +134,12 @@ main() {
check(UTF8, "z", "<z>a<soh/>b</z>", "a\001b");
check(UTF8, "z", "<z>a<bel/></z>", "a\007");
+ encode("", "");
+ encode("a", "a");
+ encode("a\nb", "a\nb");
+ encode("a\bc", "a<bs/>c");
+ encode("ab\01c\ndef\r\n", "ab<soh/>c\ndef\r\n");
+
return 0;
}