示例#1
0
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);
}
示例#2
0
文件: check-70.c 项目: Sudoka/asn1c
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);
}