static void process_XER_data(const char *fname, char *fbuf, int size) { PDU_t *st; st = load_object_from(fname, fbuf, size, AS_XER, 0); if(!st) return; /* Save and re-load as PER */ save_object_as(st, AS_PER); compare_with_data_out(fname, buf, buf_offset); st = load_object_from("buffer", buf, buf_offset, AS_PER, 0); assert(st); save_object_as(st, AS_XER); fprintf(stderr, "=== original ===\n"); fwrite(fbuf, 1, size, stderr); fprintf(stderr, "=== re-encoded ===\n"); fwrite(buf, 1, buf_offset, stderr); fprintf(stderr, "=== end ===\n"); if(fname[strlen(fname) - 4] == 'X') assert(!xer_encoding_equal(fbuf, size, buf, buf_offset)); else assert(xer_encoding_equal(fbuf, size, buf, buf_offset)); asn_DEF_PDU.free_struct(&asn_DEF_PDU, st, 0); }
static void process_XER_data(enum expectation expectation, char *fbuf, size_t size) { PDU_t *st; st = load_object_from(expectation, fbuf, size, AS_XER); if(!st) return; /* Save and re-load as DER */ save_object_as(st, AS_DER); st = load_object_from(expectation, buf, buf_offset, AS_DER); assert(st); save_object_as(st, AS_XER); fprintf(stderr, "=== original ===\n"); fwrite(fbuf, 1, size, stderr); fprintf(stderr, "=== re-encoded ===\n"); fwrite(buf, 1, buf_offset, stderr); fprintf(stderr, "=== end ===\n"); switch(expectation) { case EXP_DIFFERENT: assert(!xer_encoding_equal(fbuf, size, buf, buf_offset)); break; case EXP_BROKEN: assert(!xer_encoding_equal(fbuf, size, buf, buf_offset)); break; case EXP_OK: assert(xer_encoding_equal(fbuf, size, buf, buf_offset)); break; } asn_DEF_PDU.free_struct(&asn_DEF_PDU, st, 0); }
static void process_XER_data(const char *fname, enum expectation expectation, char *fbuf, size_t size) { PDU_t *st; st = load_object_from(fname, expectation, fbuf, size, AS_XER); if(!st) return; /* Save and re-load as PER */ save_object_as(st, expectation, AS_PER); if(expectation == EXP_PER_NOCOMP) return; /* Already checked */ st = load_object_from("buffer", expectation, buf, buf_offset, AS_PER); assert(st); save_object_as(st, expectation, (expectation == EXP_CXER_EXACT || expectation == EXP_CXER_DIFF) ? AS_CXER : AS_XER); fprintf(stderr, "=== original ===\n"); fwrite(fbuf, 1, size, stderr); fprintf(stderr, "=== re-encoded ===\n"); fwrite(buf, 1, buf_offset, stderr); fprintf(stderr, "=== end ===\n"); switch(expectation) { case EXP_DIFFERENT: assert(!xer_encoding_equal(fbuf, size, buf, buf_offset)); break; case EXP_BROKEN: assert(!xer_encoding_equal(fbuf, size, buf, buf_offset)); break; case EXP_CXER_EXACT: buf[buf_offset++] = '\n'; assert(size == buf_offset); assert(memcmp(fbuf, buf, size) == 0); break; case EXP_CXER_DIFF: buf[buf_offset++] = '\n'; assert(size != buf_offset || memcmp(fbuf, buf, size)); break; case EXP_OK: case EXP_PER_NOCOMP: assert(xer_encoding_equal(fbuf, size, buf, buf_offset)); break; } asn_DEF_PDU.free_struct(&asn_DEF_PDU, st, 0); }