X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=tests%2Ftests-c-compiler%2Fcheck-src%2Fcheck-137.-gen-OER.c;fp=tests%2Ftests-c-compiler%2Fcheck-src%2Fcheck-137.-gen-OER.c;h=b21b0c57af6a0af3bd38116e88c1fdc7e2f85e32;hb=70ee6fc793ec8e828067a3569849b6c216054497;hp=0000000000000000000000000000000000000000;hpb=59f84608ec15c016958a6e0e0ddd813f376c0925;p=com%2Fasn1c.git diff --git a/tests/tests-c-compiler/check-src/check-137.-gen-OER.c b/tests/tests-c-compiler/check-src/check-137.-gen-OER.c new file mode 100644 index 0000000..b21b0c5 --- /dev/null +++ b/tests/tests-c-compiler/check-src/check-137.-gen-OER.c @@ -0,0 +1,51 @@ +/* + * Verify OER with constrained and unconstrained strings. + */ +#undef NDEBUG +#include +#include +#include +#include +#include +#include +#include + +#include + +int main() { + uint8_t tmpbuf[128]; + T_t source; + T_t *decoded = 0; /* "= 0" is important */ + + memset(&source, 0, sizeof(source)); + + OCTET_STRING_fromBuf(&source.unconstrained.unc_ia5, "foo", 3); + OCTET_STRING_fromBuf(&source.unconstrained.unc_utf8, "bar-whatever", 12); + OCTET_STRING_fromBuf(&source.unconstrained.unc_universal, + "\0\0\0b\0\0\0a\0\0\0z", 12); + + OCTET_STRING_fromBuf(&source.constrained.con_ia5, "ab", 2); + OCTET_STRING_fromBuf(&source.constrained.con_utf8, "cd-whatever", 11); + OCTET_STRING_fromBuf(&source.constrained.con_universal, "\0\0\0e\0\0\0f", + 8); + + asn_enc_rval_t er = + oer_encode_to_buffer(&asn_DEF_T, 0, &source, tmpbuf, sizeof(tmpbuf)); + assert(er.encoded != -1); + + asn_dec_rval_t dr = + oer_decode(0, &asn_DEF_T, (void **)&decoded, tmpbuf, er.encoded); + + assert(dr.code == RC_OK); + if(dr.consumed != er.encoded) { + ASN_DEBUG("Consumed %zu, expected %zu", dr.consumed, er.encoded); + assert(dr.consumed == er.encoded); + } + + if(XEQ_SUCCESS != xer_equivalent(&asn_DEF_T, &source, decoded, stderr)) { + return 1; + } + + return 0; +} +