XML Formats (GUITAR 2.0)

[ GUI Structure (.GUI) ] [ Event Flow Graph (.EFG) ] [ Label Map (.MAP) ] [ Test Case (.TST) ]
Note: + means it repeats 1 or more times;
      * means it repeats 0 or more times;

GUI Structure (.GUI)

<BeginDump>
+<GUI>
	<Menu>
		<Title/>
		+<Component>
			<Item/>
			<Invokeslist>
				*<Item/>
			</Invokelist>
		</Component>
	</Menu>
	<Title/>
	<Class/>
	<Enabled/>
	<Visible/>
	<Modal/>
	<Rootwindow/>
	<Width/>
	<Height/>
	<X/>
	<Y/>
	+<Component>
		<Title/>
		<Class/>
		<Enabled/>
		<Visible/>
		<Terminal/>
		<Width/>
		<Height/>
		<Activeevent/>
		<X/>
		<Y/>
		<Dimx/>
		<Dimy/>
		<Valuelist/>
		<Invokeslist>
			*<Item/>
		</Invokeslist>
	</Component>
</GUI>
</BeginDump>
The GUI structure has many GUI windows. For each GUI window, we put information inside a <GUI></GUI> tag. It has 3 parts: menu information (inside <Menu></Menu>), window information (from <Title/> to <Y/>), and component information (inside <Component></Component>).
Menu Info:
	<Title> is the name of the menu;
	<Component> is the components contained in the menu, either another menu or menu item;
	if it is menu item, inside <Component>, <Item> shows the name of the menu item, <Invokeslist>
	lists whether the menu item will invoke another window, give the window name as <Item>, 
	otherwise, nothing inside <Invokeslist>;
	if it is another menu, inside <Component>, it recursively uses <Menu> format;

Window Info:
	<Title>		- Name of the window;
	<Class> 	- Class of the window;
	<Enabled> 	- true/false, whether the window is enabled or not;
	<Visible> 	- true/false, whether the window is visible or not;
	<Modal>		- true/false, whether the window is modal or modeless;
	<Rootwindow>	- true/false, whether the window is root window or not;
	<Width>		- width of the window;
	<Height>	- height of the window;
	<X>		- X coordinate of the window;
	<Y>		- Y coordinate of the window.

Component Info:
	<Title>		- Name of the component;
	<Class>		- class of the component;
	<Enabled>	- true/false, whether the component is enabled or not;
	<Visible>	- true/false, whether the component is visible of not;
	<Terminal>	- true/false, whether the component is the terminal (closes the window) or not;
	<Width>		- width of the component;
	<Height>	- height of the component;
	<Activeevent>	- true/false, whether the component is active (operatable) or not;
	<X>		- X coordinate of the component;
	<Y>		- Y coordinate of the component;
	<Dimx>		- rows of textfield;
	<Dimy>		- cols of textfield;
	<Valuelist>	-
	<Invokeslist>	- uses <Item> to record the window name the component invokes;

Event Flow Graph (.EFG)

<EFG>
	+<GUIEFG>
		<Guilist>
			+<Guiid/>
		</Guilist>
		+<Row>
			<Guiid/>
			<Compid/>
			<Type/>
			<Name/>
			<Terminal/>
			<Depth/>
			<Eventtype/>
			<Invokeslist>
				*<Item/>
			</Invokeslist>
			+<Entry/>
		</Row>
	</GUIEFG>
</EFG>
An EFG contains one or more <GUIEFG>. In each <GUIEFG>,
		<Guilist>	- uses <Guiid> to record what GUI IDs are included in the GUIEFG
		<Row>		- each row records a component info in the GUIEFG
			<Guiid>		- the GUI ID the component belongs to;
			<Compid>	- the component id is in the GUI;
			<Type>		- the type for the component: 1 - component; 0 - menu;
			<Name>		- the name of the component;
			<Terminal>	- TRUE/FALSE, whether the component represents a terminal event (closing the window) or not;
			<Depth>		- -1 if the type is 1; if type is 0 (menu), represents the depth of the menu;
			<Eventtype>	- 0 - left click; 2 - set text;
			<Invokeslist> 	- uses <Item> to record the window name the component invokes;
			<Entry>		- total |components in the GUIEFG| of entries, with value 0/1; 0 - component not linked; 1 - component linked;

Label Map (.MAP)

<Labelmap>
	+<Label>
		<Name/>
		+<Map>
			<Valid/>
			|-<Guiid/>
		       +|-<Compid/>
			|_<Type/>
		</Map>
	</Label>
</Labelmap>
A Label map contains one or more <Label>. In each <Label>,
		<Name>		- name of the component;
		<Map>		- represents a component (may have the same name, but with some indexes added)
			<Valid>		- always TRUE;
			<Guiid>		- the GUI ID the component belongs to;		---|
			<Compid>	- the component ID in the GUI;			---| <Guiid>, <Compid> and <Type> are repeated if the component needs menu openning or window openning event to reach;	
			<Type>		- type of the component, 1 - component, 0 - menu;--|

Test Case (.TST)

<Testsuite>
	<Mode/>
	<Testcase>
		+<Menu>					|	+<Component>
			<Window/>			|		<Window/>
			<Nonterminal/> or <Terminal/>	|or 		<Nonterminal/> or <Terminal/>
		</Menu>					|		<Eventtype/>
							|		<EventValue/>
							|	</Component>

		+<Miscellaneousinfo>
			<Time/>
			<Memory/>
		</Miscellaneousinfo>

	</Testcase>
</Testsuite>
A <Testsuite> contains one test case. it uses <Mode> to record the test case generation method (MANUAL, RANDOM, STRUCTURAL, SE, or SES). The <Testcase> is a sequence of events. An event is represented either by <Menu> or <Component> depending on the type of the current component.
For <Menu>,
	<Window>			- the name of of the window where the event performs on;
	<Nonterminal>/<Terminal> 	- the name of the event, depends on whether the event is a nonterminal/terminal event;

For <Component>,
	<Window>			- the name of of the window where the event performs on;
	<Nonterminal>/<Terminal> 	- the name of the event, depends on whether the event is a nonterminal/terminal event;
	<Eventtype>			- the event type, LEFTCLICK/SETTEXT;
	<Eventvalue>			- UNKNOWN if event type is LEFTCLICK, the value to be set into text filed if type is SETTEXT.
If the <Mode> is MANUAL, <Miscellaneousinfo> will be attached to each event. For <Miscellaneousinfo>,
	<Time>		- time when the event performed;
	<Memory>	- free memory when the event performed.