80 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			80 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System.IO; | ||
|  | using System.Linq; | ||
|  | using NUnit.Framework; | ||
|  | using Unity.Multiplayer.Center.Window; | ||
|  | using UnityEditor; | ||
|  | using UnityEngine; | ||
|  | using UnityEngine.UIElements; | ||
|  | 
 | ||
|  | namespace Unity.MultiplayerCenterTests | ||
|  | { | ||
|  |     internal static class UtilsForGettingStartedTabTests | ||
|  |     { | ||
|  |         public static void OpenGettingStartedTab() | ||
|  |         { | ||
|  |             var window = EditorWindow.GetWindow<MultiplayerCenterWindow>(); | ||
|  |             window.CurrentTabTest = 1; | ||
|  |         } | ||
|  | 
 | ||
|  |         public static VisualElement GetSection(string sectionName) | ||
|  |         { | ||
|  |             return EditorWindow.GetWindow<MultiplayerCenterWindow>().rootVisualElement.Q(sectionName); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static bool CheckErrorLogged(LogType type) | ||
|  |         { | ||
|  |             return type == LogType.Error || type == LogType.Exception; | ||
|  |         } | ||
|  | 
 | ||
|  |         public static bool DeleteSetupDirectoryIfExists(string directoryPath) | ||
|  |         { | ||
|  |             directoryPath = directoryPath.TrimEnd('/'); | ||
|  |             var metaFilePath = $"{directoryPath}.meta"; | ||
|  |             if(File.Exists(metaFilePath)) // In case the directory is not accessible, Delete will throw an exception | ||
|  |             { | ||
|  |                 File.Delete(metaFilePath); | ||
|  |             } | ||
|  | 
 | ||
|  |             if (Directory.Exists(directoryPath)) | ||
|  |             { | ||
|  |                 Directory.Delete(directoryPath, true); | ||
|  |                 return true; | ||
|  |             } | ||
|  | 
 | ||
|  |             return false; | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void AssertGameObjectHasNoMissingScripts(GameObject gameObject) | ||
|  |         { | ||
|  |             var components = gameObject.GetComponents<Component>(); | ||
|  |             for (var index = 0; index < components.Length; index++) | ||
|  |             { | ||
|  |                 var component = components[index]; | ||
|  |                 Assert.IsNotNull(component, $"GameObject {gameObject.name} has missing script (component index: {index})"); | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Returns true if a SettingsPage (right side of the SettingsWindow) has content. | ||
|  |         /// This is useful to test if calling SettingsService.OpenProjectSettings("Your setting") | ||
|  |         /// makes the window show content. In case your path does not open settings, the right side | ||
|  |         /// will be empty and false will be returned. | ||
|  |         /// Caution: This will only work for SettingsPages created with UI-Toolkit. | ||
|  |         /// </summary> | ||
|  |         /// <returns> True if settings are shown on the right side of the SettingsWindow, false if no settings window is | ||
|  |         /// shown, or the content on the right is empty.</returns> | ||
|  |         public static bool SettingsWindowRightSideHasContent() | ||
|  |         { | ||
|  |             var windows = Resources.FindObjectsOfTypeAll(typeof(EditorWindow)) as EditorWindow[]; | ||
|  |             var projectSettingsWindow = windows.FirstOrDefault(window => window.GetType().FullName == "UnityEditor.ProjectSettingsWindow"); | ||
|  |             if (projectSettingsWindow == null) | ||
|  |                 return false; | ||
|  | 
 | ||
|  |             var settingsPanel = projectSettingsWindow.rootVisualElement.Q<VisualElement>(className: "settings-panel"); | ||
|  |             if (settingsPanel == null) | ||
|  |                 return false; | ||
|  |             return settingsPanel.Children().First().childCount > 0; | ||
|  |         } | ||
|  |     } | ||
|  | } |