aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2006-03-14 11:48:01 +0000
committerLev Walkin <vlm@lionet.info>2006-03-14 11:48:01 +0000
commit6ec10329b9772b1f6c4f655473cb778479fb1e54 (patch)
treedabca25e624e75c6023e02bff3e58aae6780b657 /tests
parentdd28fe36c8ad0fb69636e05f3796ad8dec3648bd (diff)
attribute class
Diffstat (limited to 'tests')
-rw-r--r--tests/97-type-identifier-SW.asn143
-rw-r--r--tests/98-attribute-class-OK.asn133
-rw-r--r--tests/98-attribute-class-OK.asn1.-P105
3 files changed, 181 insertions, 0 deletions
diff --git a/tests/97-type-identifier-SW.asn1 b/tests/97-type-identifier-SW.asn1
new file mode 100644
index 00000000..eaa2e296
--- /dev/null
+++ b/tests/97-type-identifier-SW.asn1
@@ -0,0 +1,43 @@
+
+-- OK: Everything is fine
+
+-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
+-- .spelio.software.asn1c.test (9363.1.5.1)
+-- .97
+
+ModuleTypeIdentifier1
+ { iso org(3) dod(6) internet (1) private(4) enterprise(1)
+ spelio(9363) software(1) asn1c(5) test(1) 97 1 }
+ DEFINITIONS ::=
+BEGIN
+
+ /*
+ * TYPE-IDENTIFIER is resolved to a clause below.
+ */
+ T1 ::= SEQUENCE {
+ id TYPE-IDENTIFIER.&id2,
+ type TYPE-IDENTIFIER.&Type
+ }
+
+ TYPE-IDENTIFIER ::= CLASS {
+ &id2 OBJECT IDENTIFIER UNIQUE,
+ &Type
+ }
+
+END
+
+ModuleTypeIdentifier2
+ { iso org(3) dod(6) internet (1) private(4) enterprise(1)
+ spelio(9363) software(1) asn1c(5) test(1) 97 2 }
+ DEFINITIONS ::=
+BEGIN
+
+ /*
+ * TYPE-IDENTIFIER is resolved to a default TYPE-IDENTIFIER class.
+ */
+ T2 ::= SEQUENCE {
+ id TYPE-IDENTIFIER.&id,
+ type TYPE-IDENTIFIER.&Type
+ }
+
+END
diff --git a/tests/98-attribute-class-OK.asn1 b/tests/98-attribute-class-OK.asn1
new file mode 100644
index 00000000..08844272
--- /dev/null
+++ b/tests/98-attribute-class-OK.asn1
@@ -0,0 +1,33 @@
+
+-- OK: Everything is fine
+
+-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
+-- .spelio.software.asn1c.test (9363.1.5.1)
+-- .98
+
+ModuleAttributeClass
+ { iso org(3) dod(6) internet (1) private(4) enterprise(1)
+ spelio(9363) software(1) asn1c(5) test(1) 98 }
+ DEFINITIONS ::=
+BEGIN
+
+ ATTRIBUTE ::= CLASS {
+ &id RELATIVE-OID UNIQUE
+ } WITH SYNTAX { ID &id }
+
+ Attribute ::= SEQUENCE {
+ identifier ATTRIBUTE.&id ({Attributes}),
+ siAttributeValue IA5String
+ }
+
+ Attributes ATTRIBUTE ::= { Names }
+
+ Names ATTRIBUTE ::= { rafService | rcfService }
+
+ rafService ATTRIBUTE ::= { ID raf }
+ rcfService ATTRIBUTE ::= { ID rcf }
+
+ raf RELATIVE-OID ::= {3 2 1}
+ rcf RELATIVE-OID ::= {3 2 2}
+
+END
diff --git a/tests/98-attribute-class-OK.asn1.-P b/tests/98-attribute-class-OK.asn1.-P
new file mode 100644
index 00000000..c018f87c
--- /dev/null
+++ b/tests/98-attribute-class-OK.asn1.-P
@@ -0,0 +1,105 @@
+
+/*** <<< INCLUDES [Attribute] >>> ***/
+
+#include <RELATIVE-OID.h>
+#include <IA5String.h>
+#include <constr_SEQUENCE.h>
+
+/*** <<< TYPE-DECLS [Attribute] >>> ***/
+
+typedef struct Attribute {
+ RELATIVE_OID_t identifier;
+ IA5String_t siAttributeValue;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} Attribute_t;
+
+/*** <<< FUNC-DECLS [Attribute] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_Attribute;
+
+/*** <<< CODE [Attribute] >>> ***/
+
+static int
+memb_identifier_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_consume_bytes_f *app_errlog, void *app_key) {
+
+ if(!sptr) {
+ _ASN_ERRLOG(app_errlog, app_key,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+
+ if(1 /* No applicable constraints whatsoever */) {
+ /* Nothing is here. See below */
+ }
+
+ return td->check_constraints(td, sptr, app_errlog, app_key);
+}
+
+
+/*** <<< STAT-DEFS [Attribute] >>> ***/
+
+static asn_TYPE_member_t asn_MBR_Attribute_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct Attribute, identifier),
+ .tag = (ASN_TAG_CLASS_UNIVERSAL | (13 << 2)),
+ .tag_mode = 0,
+ .type = &asn_DEF_RELATIVE_OID,
+ .memb_constraints = memb_identifier_constraint_1,
+ .per_constraints = 0, /* PER is not compiled, use -gen-PER */
+ .default_value = 0,
+ .name = "identifier"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct Attribute, siAttributeValue),
+ .tag = (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)),
+ .tag_mode = 0,
+ .type = &asn_DEF_IA5String,
+ .memb_constraints = 0, /* Defer constraints checking to the member type */
+ .per_constraints = 0, /* PER is not compiled, use -gen-PER */
+ .default_value = 0,
+ .name = "siAttributeValue"
+ },
+};
+static ber_tlv_tag_t asn_DEF_Attribute_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_TYPE_tag2member_t asn_MAP_Attribute_tag2el_1[] = {
+ { (ASN_TAG_CLASS_UNIVERSAL | (13 << 2)), 0, 0, 0 }, /* identifier at 19 */
+ { (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)), 1, 0, 0 } /* siAttributeValue at 20 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_Attribute_specs_1 = {
+ sizeof(struct Attribute),
+ offsetof(struct Attribute, _asn_ctx),
+ asn_MAP_Attribute_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_Attribute = {
+ "Attribute",
+ "Attribute",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ 0, /* No PER decoder, -gen-PER to enable */
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Attribute_tags_1,
+ sizeof(asn_DEF_Attribute_tags_1)
+ /sizeof(asn_DEF_Attribute_tags_1[0]), /* 1 */
+ asn_DEF_Attribute_tags_1, /* Same as above */
+ sizeof(asn_DEF_Attribute_tags_1)
+ /sizeof(asn_DEF_Attribute_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_Attribute_1,
+ 2, /* Elements count */
+ &asn_SPC_Attribute_specs_1 /* Additional specs */
+};
+