test of xer encoding
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@979 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/skeletons/tests/check-OCTET_STRING.c b/skeletons/tests/check-OCTET_STRING.c
index 0a8d68e..51f6eb3 100644
--- a/skeletons/tests/check-OCTET_STRING.c
+++ b/skeletons/tests/check-OCTET_STRING.c
@@ -51,6 +51,36 @@
}
}
+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 @@
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;
}