diff options
author | Lev Walkin <vlm@lionet.info> | 2005-08-27 03:20:20 +0000 |
---|---|---|
committer | Lev Walkin <vlm@lionet.info> | 2005-08-27 03:20:20 +0000 |
commit | 9f7adb6b1b9951b0324ce66ff1379b9f333c8faa (patch) | |
tree | 6b375de499072eff847133fc7c9a2821f1e65d38 /skeletons | |
parent | fee6f715a223f2a9b1a433d26424dd10ba301cd2 (diff) |
test of xer encoding
Diffstat (limited to 'skeletons')
-rw-r--r-- | skeletons/tests/check-OCTET_STRING.c | 36 |
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; } |