
/**
 * A shallow history must also for child states that are only indirectly entered through one of the childs.  
 */
testgroup ShallowHistoryWithDeepEntry for statechart ShallowHistoryWithDeepEntry{
	
	test noDeepEntryWithinHistory { 
		enter
		assert active(ShallowHistoryWithDeepEntry.main_region.Y) 
		
		raise toZ
		cycle
		assert active(ShallowHistoryWithDeepEntry.main_region.Z._region0.A)
		
		raise toY
		cycle
		assert active(ShallowHistoryWithDeepEntry.main_region.Y)
		
		raise toZ
		cycle
		assert active(ShallowHistoryWithDeepEntry.main_region.Z._region0.A)		
		 
	} 
	
	
	test deepEntryWithinHistory {
		enter
		assert active(ShallowHistoryWithDeepEntry.main_region.Y) 
		
		raise toZ
		cycle
		assert active(ShallowHistoryWithDeepEntry.main_region.Z._region0.A)
		
		raise toC
		cycle
		assert active(ShallowHistoryWithDeepEntry.main_region.Z._region0.B._region0.C)
		assert active(ShallowHistoryWithDeepEntry.main_region.Z._region0.B)
		
		raise toY
		cycle
		assert active(ShallowHistoryWithDeepEntry.main_region.Y)
		
		raise toZ
		cycle
		assert active(ShallowHistoryWithDeepEntry.main_region.Z._region0.B._region0.C)
		assert active(ShallowHistoryWithDeepEntry.main_region.Z._region0.B)
		
	}
	
	test directDeepEntryIntoHistory {
		enter
		assert active(ShallowHistoryWithDeepEntry.main_region.Y) 
		
		raise toC
		cycle
		assert active(ShallowHistoryWithDeepEntry.main_region.Z._region0.B._region0.C)
		assert active(ShallowHistoryWithDeepEntry.main_region.Z._region0.B)
		
		raise toY
		cycle
		assert active(ShallowHistoryWithDeepEntry.main_region.Y)
		
		raise toZ
		cycle
		assert active(ShallowHistoryWithDeepEntry.main_region.Z._region0.B._region0.C)
		assert active(ShallowHistoryWithDeepEntry.main_region.Z._region0.B)
		
	}
}
	