81 lines
2.9 KiB
C#
81 lines
2.9 KiB
C#
using System.Collections;
|
|
using System.Linq;
|
|
using NUnit.Framework;
|
|
using Unity.Multiplayer.Center.Recommendations;
|
|
using Unity.Multiplayer.Center.Window.UI.RecommendationView;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.TestTools;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace Unity.MultiplayerCenterTests
|
|
{
|
|
internal class SectionHeaderTests
|
|
{
|
|
[SetUp]
|
|
public void Setup()
|
|
{
|
|
var sectionHeader = new SectionHeader("Test");
|
|
var dummyWindow = EditorWindow.GetWindow<DummyWindow>();
|
|
dummyWindow.rootVisualElement.Clear();
|
|
dummyWindow.rootVisualElement.Add(sectionHeader);
|
|
}
|
|
|
|
SectionHeader GetSectionHeader()
|
|
{
|
|
return EditorWindow.GetWindow<DummyWindow>().rootVisualElement.Q<SectionHeader>();
|
|
}
|
|
|
|
IEnumerator WaitUntilDropdownIsShown()
|
|
{
|
|
DropdownField dropDown = null;
|
|
var maxWait = 100;
|
|
|
|
// wait for UI to be ready
|
|
while (dropDown == null || maxWait-- > 0)
|
|
{
|
|
dropDown = GetSectionHeader().Q<DropdownField>();
|
|
yield return null;
|
|
}
|
|
|
|
Assert.NotNull(dropDown, "Dropdown could not be found");
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator SectionHeader_AppendsRecommendationText()
|
|
{
|
|
yield return WaitUntilDropdownIsShown();
|
|
|
|
var dropDown = GetSectionHeader().Q<DropdownField>();
|
|
var recommendation = UtilsForRecommendationTests.GetSomeRecommendation();
|
|
var serverChoices = recommendation.ServerArchitectureOptions;
|
|
var serverChoice = serverChoices.First(sol => sol.RecommendationType == RecommendationType.MainArchitectureChoice);
|
|
GetSectionHeader().UpdateData(recommendation.ServerArchitectureOptions);
|
|
Assert.AreEqual(serverChoice.Title +" - Recommended", dropDown.value);
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator SectionHeader_IgnoresIncompatibleSolutions()
|
|
{
|
|
yield return WaitUntilDropdownIsShown();
|
|
|
|
var dropDown = GetSectionHeader().Q<DropdownField>();
|
|
var recommendation = UtilsForRecommendationTests.GetSomeRecommendation();
|
|
var serverChoices = recommendation.ServerArchitectureOptions;
|
|
serverChoices.Last().RecommendationType = RecommendationType.Incompatible;
|
|
GetSectionHeader().UpdateData(recommendation.ServerArchitectureOptions);
|
|
Assert.AreEqual(serverChoices.Count(sol => sol.RecommendationType !=RecommendationType.Incompatible), dropDown.choices.Count);
|
|
}
|
|
|
|
[TearDown]
|
|
public void TearDown()
|
|
{
|
|
var dummyWindow = EditorWindow.GetWindow<DummyWindow>();
|
|
dummyWindow.rootVisualElement.Clear();
|
|
dummyWindow.Close();
|
|
}
|
|
|
|
class DummyWindow : EditorWindow { }
|
|
}
|
|
}
|