112 lines
3.8 KiB
C#
112 lines
3.8 KiB
C#
|
using NUnit.Framework;
|
||
|
using Unity.Multiplayer.Center.Analytics;
|
||
|
using Unity.Multiplayer.Center.Common;
|
||
|
using Unity.Multiplayer.Center.Common.Analytics;
|
||
|
using UnityEngine;
|
||
|
using Unity.Multiplayer.Center.Window;
|
||
|
using UnityEditor;
|
||
|
using UnityEngine.UIElements;
|
||
|
|
||
|
namespace Unity.MultiplayerCenterTests
|
||
|
{
|
||
|
[TestFixture]
|
||
|
class TabGroupTests
|
||
|
{
|
||
|
TabGroup m_TabGroup;
|
||
|
RecommendationTabView m_RecommendationTabView;
|
||
|
GettingStartedTabView m_GettingStartedTabView;
|
||
|
|
||
|
private class AnalyticsMock : IMultiplayerCenterAnalytics
|
||
|
{
|
||
|
public void SendInstallationEvent(AnswerData data, Preset preset, Package[] packages) {}
|
||
|
|
||
|
public void SendRecommendationEvent(AnswerData data, Preset preset){}
|
||
|
|
||
|
public void SendGettingStartedInteractionEvent(string targetPackageId, string sectionId, InteractionDataType type, string displayName) {}
|
||
|
}
|
||
|
|
||
|
private class MockTabEnabled : ITabView
|
||
|
{
|
||
|
public string Name => "MockTabEnabled";
|
||
|
public VisualElement RootVisualElement { get; set; }
|
||
|
public void SetVisible(bool visible)
|
||
|
{
|
||
|
RootVisualElement.style.display = visible ? DisplayStyle.Flex : DisplayStyle.None;
|
||
|
}
|
||
|
|
||
|
public void Refresh() { }
|
||
|
|
||
|
public void Clear() { }
|
||
|
|
||
|
public IMultiplayerCenterAnalytics MultiplayerCenterAnalytics { get; set; }
|
||
|
}
|
||
|
|
||
|
private class MockTabDisabled : ITabView
|
||
|
{
|
||
|
public string Name => "MockTabDisbled";
|
||
|
public VisualElement RootVisualElement { get; set; }
|
||
|
public void SetVisible(bool visible)
|
||
|
{
|
||
|
RootVisualElement.style.display = visible ? DisplayStyle.Flex : DisplayStyle.None;
|
||
|
}
|
||
|
|
||
|
public bool IsEnabled => false;
|
||
|
|
||
|
public void Refresh() { }
|
||
|
|
||
|
public void Clear() { }
|
||
|
|
||
|
public IMultiplayerCenterAnalytics MultiplayerCenterAnalytics { get; set; }
|
||
|
}
|
||
|
|
||
|
[SetUp]
|
||
|
public void SetUp()
|
||
|
{
|
||
|
m_RecommendationTabView = new RecommendationTabView();
|
||
|
m_GettingStartedTabView = new GettingStartedTabView();
|
||
|
m_TabGroup = new TabGroup(new AnalyticsMock(), new ITabView[] {m_RecommendationTabView, m_GettingStartedTabView, new MockTabEnabled(), new MockTabDisabled()});
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TabGroup_CreateTabs_4TabViews()
|
||
|
{
|
||
|
m_TabGroup.CreateTabs();
|
||
|
Assert.AreEqual(4, m_TabGroup.ViewCount);
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TabGroup_CreateTabs_SelectsTabFromUserPreferences()
|
||
|
{
|
||
|
m_TabGroup.CreateTabs();
|
||
|
var currentTabFromEditorPrefs = EditorPrefs.GetInt(PlayerSettings.productName + "_MultiplayerCenter_TabIndex", 0);
|
||
|
Assert.AreEqual(currentTabFromEditorPrefs, m_TabGroup.CurrentTab);
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TabGroup_SelectDeactivatedTab_SelectsFirstTab()
|
||
|
{
|
||
|
m_TabGroup.CreateTabs();
|
||
|
m_TabGroup.SetSelected(3);
|
||
|
Assert.AreEqual(0, m_TabGroup.CurrentTab);
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TabGroup_AnalyticsIsPropagatedToAllViews()
|
||
|
{
|
||
|
Assert.NotNull(m_RecommendationTabView.MultiplayerCenterAnalytics);
|
||
|
Assert.NotNull(m_GettingStartedTabView.MultiplayerCenterAnalytics);
|
||
|
Assert.AreEqual(m_RecommendationTabView.MultiplayerCenterAnalytics, m_GettingStartedTabView.MultiplayerCenterAnalytics);
|
||
|
Assert.AreEqual(m_RecommendationTabView.MultiplayerCenterAnalytics.GetType(), typeof(AnalyticsMock));
|
||
|
}
|
||
|
|
||
|
[TearDown]
|
||
|
public void TearDown()
|
||
|
{
|
||
|
if (m_TabGroup != null)
|
||
|
{
|
||
|
m_TabGroup.Clear();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|