<?xml version="1.0" ?>
<diagram author="Herr Joeri Exelmans" name="take_one_queue">
	<description>
		Internal event lifeline - Queue-semantics: Internal events are treated just like external events: They are added to the object's event queue and will be sensed in another big step. This way, a raised internal event will always be sensed at some point later in time, but it is possible that other (external) events in the object's event queue are treated first.
	</description>
	<inport name="in"/>
	<outport name="out"/>
	<class name="c" default="true">
		<scxml initial="a" big_step_maximality="take_one" internal_event_lifeline="queue">
			<state id="a">
				<onentry>
					<raise event="entered_a" port="out"/>
				</onentry>
				<transition event="e" port="in" target="../b">
					<raise event="f"/>
				</transition>
			</state>
			<state id="b">
				<onentry>
					<raise event="entered_b" port="out"/>
				</onentry>
				<transition event="f" target="../c"/>
			</state>
			<state id="c">
				<onentry>
					<raise event="entered_c" port="out"/>
				</onentry>
			</state>
		</scxml>
	</class>
	<test>
		<input>
			<event name="e" port="in" time="0.0"/>
		</input>
		<expected>
			<slot>
				<!-- initialization -->
				<event name="entered_a" port="out"/>
			</slot>
			<slot>
				<!-- big step, input events = [e] -->
				<event name="entered_b" port="out"/>
			</slot>
			<slot>
				<!-- big step, input events = [f] -->
				<event name="entered_c" port="out"/>
			</slot>
		</expected>
	</test>
</diagram>
