A game about forced loneliness, made by TACStudios
at master 80 lines 3.0 kB view raw
1using System.Collections; 2using System.Linq; 3using NUnit.Framework; 4using Unity.Multiplayer.Center.Recommendations; 5using Unity.Multiplayer.Center.Window.UI.RecommendationView; 6using UnityEditor; 7using UnityEngine; 8using UnityEngine.TestTools; 9using UnityEngine.UIElements; 10 11namespace Unity.MultiplayerCenterTests 12{ 13 internal class SectionHeaderTests 14 { 15 [SetUp] 16 public void Setup() 17 { 18 var sectionHeader = new SectionHeader("Test"); 19 var dummyWindow = EditorWindow.GetWindow<DummyWindow>(); 20 dummyWindow.rootVisualElement.Clear(); 21 dummyWindow.rootVisualElement.Add(sectionHeader); 22 } 23 24 SectionHeader GetSectionHeader() 25 { 26 return EditorWindow.GetWindow<DummyWindow>().rootVisualElement.Q<SectionHeader>(); 27 } 28 29 IEnumerator WaitUntilDropdownIsShown() 30 { 31 DropdownField dropDown = null; 32 var maxWait = 100; 33 34 // wait for UI to be ready 35 while (dropDown == null || maxWait-- > 0) 36 { 37 dropDown = GetSectionHeader().Q<DropdownField>(); 38 yield return null; 39 } 40 41 Assert.NotNull(dropDown, "Dropdown could not be found"); 42 } 43 44 [UnityTest] 45 public IEnumerator SectionHeader_AppendsRecommendationText() 46 { 47 yield return WaitUntilDropdownIsShown(); 48 49 var dropDown = GetSectionHeader().Q<DropdownField>(); 50 var recommendation = UtilsForRecommendationTests.GetSomeRecommendation(); 51 var serverChoices = recommendation.ServerArchitectureOptions; 52 var serverChoice = serverChoices.First(sol => sol.RecommendationType == RecommendationType.MainArchitectureChoice); 53 GetSectionHeader().UpdateData(recommendation.ServerArchitectureOptions); 54 Assert.AreEqual(serverChoice.Title +" - Recommended", dropDown.value); 55 } 56 57 [UnityTest] 58 public IEnumerator SectionHeader_IgnoresIncompatibleSolutions() 59 { 60 yield return WaitUntilDropdownIsShown(); 61 62 var dropDown = GetSectionHeader().Q<DropdownField>(); 63 var recommendation = UtilsForRecommendationTests.GetSomeRecommendation(); 64 var serverChoices = recommendation.ServerArchitectureOptions; 65 serverChoices.Last().RecommendationType = RecommendationType.Incompatible; 66 GetSectionHeader().UpdateData(recommendation.ServerArchitectureOptions); 67 Assert.AreEqual(serverChoices.Count(sol => sol.RecommendationType !=RecommendationType.Incompatible), dropDown.choices.Count); 68 } 69 70 [TearDown] 71 public void TearDown() 72 { 73 var dummyWindow = EditorWindow.GetWindow<DummyWindow>(); 74 dummyWindow.rootVisualElement.Clear(); 75 dummyWindow.Close(); 76 } 77 78 class DummyWindow : EditorWindow { } 79 } 80}