
-- 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,
		setOfChoice		SetOfChoice,
		namedSetOfChoice	NamedSetOfChoice,
		...
	}

	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
	SetOfChoice ::= SET OF SimpleChoice
	NamedSetOfChoice ::= SET OF whatever SimpleChoice

	SimpleChoice ::= CHOICE { a NULL, b INTEGER }

END
