using NUnit.Framework;
using UnityEngine.Rendering;
namespace UnityEditor.Rendering.Tests
{
partial class RenderingDebuggerTests
{
///
/// Class for the rendering debugger settings.
///
public class TestDebugDisplaySettings : DebugDisplaySettings
{
public abstract class TestDebugDisplaySettingsData : IDebugDisplaySettingsData
{
#region IDebugDisplaySettingsData
///
public bool AreAnySettingsActive => false;
///
public bool IsPostProcessingAllowed => true;
///
public bool IsLightingActive => true;
public abstract IDebugDisplaySettingsPanelDisposable CreatePanel();
public bool TryGetScreenClearColor(ref UnityEngine.Color _) => false;
#endregion
}
class Test1Panel : TestDebugDisplaySettingsData
{
[DisplayInfo(name = "Test 1", order = 1)]
private class StatsPanel : DebugDisplaySettingsPanel
{
public override DebugUI.Flags Flags => DebugUI.Flags.RuntimeOnly;
public StatsPanel()
{
AddWidget(new DebugUI.BoolField() { displayName = "element", flags = DebugUI.Flags.FrequentlyUsed });
}
}
///
public override IDebugDisplaySettingsPanelDisposable CreatePanel()
{
return new StatsPanel();
}
}
class Test2Panel : TestDebugDisplaySettingsData
{
[DisplayInfo(name = "Test 2", order = 2)]
private class StatsPanel : DebugDisplaySettingsPanel
{
public override DebugUI.Flags Flags => DebugUI.Flags.RuntimeOnly;
public StatsPanel()
{
AddWidget(new DebugUI.BoolField() { displayName = "element", flags = DebugUI.Flags.FrequentlyUsed });
}
}
///
public override IDebugDisplaySettingsPanelDisposable CreatePanel()
{
return new StatsPanel();
}
}
class Test3Panel : TestDebugDisplaySettingsData
{
[DisplayInfo(name = "Test 3", order = 3)]
private class StatsPanel : DebugDisplaySettingsPanel
{
public override DebugUI.Flags Flags => DebugUI.Flags.RuntimeOnly;
public StatsPanel()
{
AddWidget(new DebugUI.BoolField() { displayName = "element", flags = DebugUI.Flags.FrequentlyUsed });
}
}
///
public override IDebugDisplaySettingsPanelDisposable CreatePanel()
{
return new StatsPanel();
}
}
public TestDebugDisplaySettings()
{
Reset();
}
///
public override void Reset()
{
m_Settings.Clear();
// Add them in an unsorted way
Add(new Test3Panel());
Add(new Test1Panel());
Add(new Test2Panel());
}
}
[Test]
public void TestOrderAndPanelName()
{
var debugDisplaySettingsUI = new DebugDisplaySettingsUI();
debugDisplaySettingsUI.RegisterDebug(TestDebugDisplaySettings.Instance);
var panelTest1Index = DebugManager.instance.PanelIndex("Test 1");
Assert.IsTrue(panelTest1Index >= 0);
var panelTest2Index = DebugManager.instance.PanelIndex("Test 2");
Assert.IsTrue(panelTest2Index >= 0);
var panelTest3Index = DebugManager.instance.PanelIndex("Test 3");
Assert.IsTrue(panelTest3Index >= 0);
Assert.True(panelTest1Index < panelTest2Index);
Assert.True(panelTest2Index < panelTest3Index);
debugDisplaySettingsUI.UnregisterDebug();
}
}
}