module Wizardry {
	modulepar float mp_componentElapsedTimerMaxDuration
	type charstring Wizardry_SimpleDataType
	type Wizardry_SimpleDataType TDLinteger
	type Wizardry_SimpleDataType string
	type record of TDLinteger iCol

	function setupTestConfiguration_base ( ) runs on MTC_base system SYSTEM_base {
		tester := node.create ;
		map ( system : sut_node_interface1 , tester :
		interface1_to_sut_node_interface1 ) ;
		map ( system : sut_node_interface2 , tester :
		interface1_to_sut_node_interface2 ) ;
	}

	type component MTC_base {
		var node tester ;
	}

	type component SYSTEM_base {
		port http sut_node_interface1 ;
		port http sut_node_interface2 ;
	}

	type component node {
		timer T_elapsedTimeOfComponent := mp_componentElapsedTimerMaxDuration ;
		port http interface1 ;
		port http interface2 ;
		port http interface1_to_sut_node_interface1 ;
		port http interface1_to_sut_node_interface2 ;
		port http interface3 ;
	}

	type port http message {
		inout string , TDLinteger , charstring , integer
	}

	function example ( ) runs on MTC_base {
		tester.start ( example_tester_main ( ) ) ;
	}

	function example_tester_main ( ) runs on node {
		interface1_to_sut_node_interface1.send ( "hello" ) ;
		interface1_to_sut_node_interface1.send ( 1 ) ;
		interface1_to_sut_node_interface1.send ( 1 ) ;
	}

	testcase tc_example ( ) runs on MTC_base system SYSTEM_base {
		setupTestConfiguration_base ( ) ;
		example ( ) ;
		all component.done ;
	}

	function exampl ( ) runs on MTC_base {
		tester.start ( exampl_tester_main ( ) ) ;
	}

	function exampl_tester_main ( ) runs on node {
		interface1_to_sut_node_interface1.send ( "hello" ) ;
		interface1_to_sut_node_interface1.receive ( "hello back" ) ;
	}

	testcase tc_exampl ( ) runs on MTC_base system SYSTEM_base {
		setupTestConfiguration_base ( ) ;
		exampl ( ) ;
		all component.done ;
	}

	function exampl2 ( ) runs on MTC_base {
		tester.start ( exampl2_tester_main ( ) ) ;
	}

	function exampl2_tester_main ( ) runs on node {
		interface1_to_sut_node_interface1.send ( "hello" ) ;
		interface1_to_sut_node_interface1.receive ( "hello back" ) ;
	}

	testcase tc_exampl2 ( ) runs on MTC_base system SYSTEM_base {
		setupTestConfiguration_base ( ) ;
		exampl2 ( ) ;
		all component.done ;
	}

}