A game about forced loneliness, made by TACStudios
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}