UnityGame/Library/PackageCache/com.unity.multiplayer.center/Tests/Editor/SectionHeaderTests.cs
2024-10-27 10:53:47 +03:00

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 { }
}
}