
-- OK: Everything is Fine

-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
-- .spelio.software.asn1c.test (9363.1.5.1)
-- .70

ModuleTestXERDecoding
	{ iso org(3) dod(6) internet(1) private(4) enterprise(1)
		spelio(9363) software(1) asn1c(5) test(1) 70 }
	DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
	/*
	 * This module defines several types for the XER decoder testing
	 * environment (defined elsewhere).
	 */

	PDU ::= CHOICE {
		sequence		Sequence,
		set			Set,
		sequenceOf		SequenceOf,
		extensibleSet		ExtensibleSet,
		extensibleSequence	ExtensibleSequence,
		extensibleSequence2	ExtensibleSequence2,
		setOfNULL		SetOfNULL,
		setOfREAL		SetOfREAL,
		setOfEnums		SetOfEnums,
		namedSetOfNULL		NamedSetOfNULL,
		namedSetOfREAL		NamedSetOfREAL,
		namedSetOfEnums		NamedSetOfEnums,
		seqOfZuka		SeqOfZuka,
		...
	}

	Sequence ::= SEQUENCE {
		integer		INTEGER,
		sequence	Sequence   OPTIONAL,	-- backreference
		bits		BIT STRING OPTIONAL,
		string		UTF8String
	}

	Set ::= SET {
		roid		RELATIVE-OID,
		opaque		OCTET STRING	OPTIONAL
	}

	ExtensibleSet ::= SET {
		string	UTF8String OPTIONAL,
		...,
		enum	ENUMERATED { b, a }
	}

	ExtensibleSequence ::= SEQUENCE {
		string	UTF8String OPTIONAL,
		...,
		integer	INTEGER	OPTIONAL,
		gtime	GeneralizedTime
	}

	ExtensibleSequence2 ::= SEQUENCE {
		string	UTF8String OPTIONAL,
		...,
		integer	INTEGER	OPTIONAL
	}

	SetOfNULL ::= SET OF NULL
	SetOfREAL ::= SET OF REAL
	SetOfEnums ::= SET OF ENUMERATED { one, oneMore }
	NamedSetOfNULL ::= SET OF y NULL
	NamedSetOfREAL ::= SET OF name REAL
	NamedSetOfEnums ::= SET OF name ENUMERATED { one, oneMore }
	SequenceOf ::= SEQUENCE OF id INTEGER { one(1), two(2) }
	SeqOfZuka ::= SEQUENCE OF zuka NULL

END
