_set_arcs_l() replaced by _set_arcs() fror OBJECT IDENTIFIER and RELATIVE-OID


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@33 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/skeletons/tests/check-OIDs.c b/skeletons/tests/check-OIDs.c
index cea630e..97ed33f 100644
--- a/skeletons/tests/check-OIDs.c
+++ b/skeletons/tests/check-OIDs.c
@@ -1,5 +1,5 @@
-#include "../RELATIVE-OID.c"
 #include "../OBJECT_IDENTIFIER.c"
+#include "../RELATIVE-OID.c"
 #include "../INTEGER.c"
 #include "../ber_decoder.c"
 #include "../ber_tlv_length.c"
@@ -42,6 +42,7 @@
 	OBJECT_IDENTIFIER_print(&asn1_DEF_OBJECT_IDENTIFIER, oid, 0, _print, 0);
 	printf("\n");
 
+	memset(arcs, 'A', sizeof(arcs));
 	alen = OBJECT_IDENTIFIER_get_arcs(oid,
 		arcs, sizeof(arcs[0]), sizeof(arcs)/sizeof(arcs[0]));
 	assert(alen > 0);
@@ -85,6 +86,7 @@
 	RELATIVE_OID_print(&asn1_DEF_RELATIVE_OID, oid, 0, _print, 0);
 	printf("\n");
 
+	memset(arcs, 'A', sizeof(arcs));
 	alen = RELATIVE_OID_get_arcs(oid,
 		arcs, sizeof(arcs[0]), sizeof(arcs)/sizeof(arcs[0]));
 	assert(alen > 0);
@@ -113,21 +115,23 @@
 	int ret;
 	int i;
 
-	printf("Encoding {");
+	printf("Encoding (R) {");
 	for(i = 0; i < acount; i++) {
 		printf(" %u", arcs[i]);
 	}
 	printf(" }\n");
 
-	ret = RELATIVE_OID_set_arcs_l(&oid, (unsigned long *)arcs, acount);
+	ret = RELATIVE_OID_set_arcs(&oid, arcs, sizeof(arcs[0]), acount);
 	assert(ret == 0);
 
+	memset(tmp_arcs, 'A', sizeof(tmp_arcs));
 	alen = RELATIVE_OID_get_arcs(&oid, tmp_arcs,
 		sizeof(tmp_arcs[0]), tmp_alen);
 	assert(alen >= 0);
-	assert(alen < tmp_alen);
+	assert(alen <= tmp_alen);
+	assert(alen == acount);
 
-	printf("Encoded {");
+	printf("Encoded  (R) {");
 	for(i = 0; i < alen; i++) {
 		printf(" %lu", tmp_arcs[i]);
 		assert((unsigned long)arcs[i] == tmp_arcs[i]);
@@ -148,26 +152,28 @@
 	int ret;
 	int i;
 
-	printf("Encoding {");
+	printf("Encoding (O) {");
 	for(i = 0; i < acount; i++) {
 		printf(" %u", arcs[i]);
 	}
 	printf(" }\n");
 
-	ret = OBJECT_IDENTIFIER_set_arcs_l(&oid, (unsigned long *)arcs, acount);
+	ret = OBJECT_IDENTIFIER_set_arcs(&oid, arcs, sizeof(arcs[0]), acount);
 	assert(ret == 0);
 
+	memset(tmp_arcs, 'A', sizeof(tmp_arcs));
 	alen = OBJECT_IDENTIFIER_get_arcs(&oid,
 		tmp_arcs, sizeof(tmp_arcs[0]), tmp_alen);
 	assert(alen >= 0);
-	assert(alen < tmp_alen);
+	assert(alen <= tmp_alen);
+	assert(alen == acount);
 
-	printf("Encoded {");
+	printf("Encoded  (O) { ");
 	for(i = 0; i < alen; i++) {
-		printf(" %lu", tmp_arcs[i]);
+		printf("%lu ", tmp_arcs[i]); fflush(stdout);
 		assert((unsigned long)arcs[i] == tmp_arcs[i]);
 	}
-	printf(" }\n");
+	printf("}\n");
 }
 
 static int
@@ -224,6 +230,8 @@
 
 int
 main() {
+	int i;
+
 	/* {joint-iso-itu-t 230 3} */
 	uint8_t buf1[] = {
 		0x06,	/* OBJECT IDENTIFIER */
@@ -240,34 +248,75 @@
 	};
 	int buf2_check[] = { 8571, 3, 2 };
 
-	int buf3_check[] = { 0 };
-	int buf4_check[] = { 1 };
-	int buf5_check[] = { 80, 40 };
-	int buf6_check[] = { 127 };
-	int buf7_check[] = { 128 };
-	int buf8_check[] = { 65535, 65536 };
-	int buf9_check[] = { 100000, 0x20000, 1234, 256, 127, 128 };
-	int buf10_check[] = { 0, 0xffffffff, 0xff00ff00, 0 };
-	int buf11_check[] = { 0, 1, 2 };
-	int buf12_check[] = { 1, 38, 3 };
-	int buf13_check[] = { 0, 0, 0xf000 };
+	/* {joint-iso-itu-t 42 } */
+	uint8_t buf3[] = {
+		0x06,	/* OBJECT IDENTIFIER */
+		0x01,	/* Length */
+		0x7A
+	};
+	int buf3_check[] = { 2, 42 };
+
+	/* {joint-iso-itu-t 25957 } */
+	uint8_t buf4[] = {
+		0x06,	/* OBJECT IDENTIFIER */
+		0x03,	/* Length */
+		0x81, 0x80 + 0x4B, 0x35
+	};
+	int buf4_check[] = { 2, 25957 };
+
+	int buf5_check[] = { 0 };
+	int buf6_check[] = { 1 };
+	int buf7_check[] = { 80, 40 };
+	int buf8_check[] = { 127 };
+	int buf9_check[] = { 128 };
+	int buf10_check[] = { 65535, 65536 };
+	int buf11_check[] = { 100000, 0x20000, 1234, 256, 127, 128 };
+	int buf12_check[] = { 0, 0xffffffff, 0xff00ff00, 0 };
+	int buf13_check[] = { 0, 1, 2 };
+	int buf14_check[] = { 1, 38, 3 };
+	int buf15_check[] = { 0, 0, 0xf000 };
+	int buf16_check[] = { 0, 0, 0, 1, 0 };
+	int buf17_check[] = { 2, 0xffffffAf, 0xff00ff00, 0 };
 
 
 	CHECK_OID(1);	/* buf1, buf1_check */
 	CHECK_ROID(2);	/* buf2, buf2_check */
+	CHECK_OID(3);	/* buf3, buf3_check */
+	CHECK_OID(4);	/* buf4, buf4_check */
 
-	CHECK_REGEN(3);	/* Regenerate RELATIVE-OID */
-	CHECK_REGEN(4);
-	CHECK_REGEN(5);
+	CHECK_REGEN(5);	/* Regenerate RELATIVE-OID */
 	CHECK_REGEN(6);
 	CHECK_REGEN(7);
 	CHECK_REGEN(8);
 	CHECK_REGEN(9);
 	CHECK_REGEN(10);
+	CHECK_REGEN(11);
+	CHECK_REGEN(12);
+	CHECK_REGEN(13);
+	CHECK_REGEN(14);
+	CHECK_REGEN(15);
+	CHECK_REGEN(16);
+	CHECK_REGEN(17);
 	CHECK_REGEN_OID(1);	/* Regenerate OBJECT IDENTIFIER */
-	CHECK_REGEN_OID(11);
-	CHECK_REGEN_OID(12);
+	CHECK_REGEN_OID(3);	/* Regenerate OBJECT IDENTIFIER */
+	CHECK_REGEN_OID(4);	/* Regenerate OBJECT IDENTIFIER */
 	CHECK_REGEN_OID(13);
+	CHECK_REGEN_OID(14);
+	CHECK_REGEN_OID(15);
+	CHECK_REGEN_OID(16);
+	CHECK_REGEN_OID(17);
+
+	for(i = 0; i < 100000; i++) {
+		int bufA_check[3] = { 2, i, rand() };
+		int bufB_check[2] = { rand(), i * 121 };
+		CHECK_REGEN(A);
+		CHECK_REGEN_OID(A);
+		CHECK_REGEN(B);
+		if(i > 100) i++;
+		if(i > 500) i++;
+		if(i > 1000) i += 3;
+		if(i > 5000) i += 151;
+	}
 
 	if(getenv("CHECK_SPEED")) {
 		/* Useful for developers only */