66 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System; | ||
|  | using System.Collections; | ||
|  | using NUnit.Framework; | ||
|  | using UnityEditor; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | public class WrapperWindowFixture | ||
|  | { | ||
|  |     private static WrapperWindow s_MostRecentWrapperWindow; | ||
|  | 
 | ||
|  |     public class WrapperWindow : EditorWindow | ||
|  |     { | ||
|  |         // Return true to end the test | ||
|  |         public Func<WrapperWindow, bool> onGUIDelegate; | ||
|  | 
 | ||
|  |         public bool TestCompleted { get; set; } | ||
|  | 
 | ||
|  |         public void OnGUI() | ||
|  |         { | ||
|  |             if (onGUIDelegate != null) | ||
|  |             { | ||
|  |                 TestCompleted = onGUIDelegate.Invoke(this); | ||
|  |                 if (TestCompleted) | ||
|  |                     onGUIDelegate = null; | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public static WrapperWindow GetWindow(Func<WrapperWindow, bool> onGUIDelegate, bool utility = false) | ||
|  |     { | ||
|  |         return GetWindow(onGUIDelegate, 800, 600, utility); | ||
|  |     } | ||
|  | 
 | ||
|  |     public static WrapperWindow GetWindow(Func<WrapperWindow, bool> onGUIDelegate, int width, int height, bool utility = false) | ||
|  |     { | ||
|  |         WrapperWindow window; | ||
|  |         if (utility) | ||
|  |             window = EditorWindow.GetWindow<WrapperWindow>(true); | ||
|  |         else | ||
|  |         { | ||
|  |             window = ScriptableObject.CreateInstance<WrapperWindow>(); | ||
|  |             window.hideFlags = HideFlags.DontSave; | ||
|  |         } | ||
|  | 
 | ||
|  |         window.onGUIDelegate = onGUIDelegate; | ||
|  |         window.position = new Rect(0, 0, width, height); | ||
|  |         window.Show(); | ||
|  |         s_MostRecentWrapperWindow = window; | ||
|  |         return window; | ||
|  |     } | ||
|  | 
 | ||
|  |     [TearDown] | ||
|  |     public void CloseMostRecentWrapperWindow() | ||
|  |     { | ||
|  |         if (s_MostRecentWrapperWindow == null) | ||
|  |             return; | ||
|  |         s_MostRecentWrapperWindow.Close(); | ||
|  |         s_MostRecentWrapperWindow = null; | ||
|  |     } | ||
|  | 
 | ||
|  |     protected static void RegisterWrapperWindow(WrapperWindow window) | ||
|  |     { | ||
|  |         s_MostRecentWrapperWindow = window; | ||
|  |     } | ||
|  | } |