Files
Cielonos/Packages/com.lunawolfstudios.scriptablesheets/Tests/Editor/SerializedPropertyUtilityTests.cs
SoulliesOfficial 7ee2894a63 整合SLSUtilities
2026-01-17 11:35:49 -05:00

86 lines
5.0 KiB
C#

using LunaWolfStudiosEditor.ScriptableSheets.Shared;
using NUnit.Framework;
namespace LunaWolfStudiosEditor.ScriptableSheets.EditorTests
{
[TestFixture]
[Category(TestUtility.MainCategory)]
public class SerializedPropertyUtilityTests
{
[TestCase("", "DisplayName", ExpectedResult = "DisplayName")]
[TestCase(".", "DisplayName", ExpectedResult = "DisplayName")]
[TestCase("m_", "DisplayName", ExpectedResult = "DisplayName")]
[TestCase("m_.m_", "DisplayName", ExpectedResult = "DisplayName")]
[TestCase("m_.m_.m_", "DisplayName", ExpectedResult = "DisplayName")]
[TestCase("m_.m_.m_X", "DisplayName", ExpectedResult = "X")]
[TestCase(".x", "DisplayName", ExpectedResult = "X")]
[TestCase(".x.", "DisplayName", ExpectedResult = "X")]
[TestCase("x", "X", ExpectedResult = "X")]
[TestCase("x.y", "Y", ExpectedResult = "X Y")]
[TestCase("m_X", "X", ExpectedResult = "X")]
[TestCase("m_X.m_Y", "Y", ExpectedResult = "X Y")]
[TestCase("foobar", "Foobar", ExpectedResult = "Foobar")]
[TestCase("m_FooBar", "Foo Bar", ExpectedResult = "Foo Bar")]
[TestCase("m_Bar.x", "X", ExpectedResult = "Bar X")]
[TestCase("m_m_Bar.m_m_x", "X", ExpectedResult = "Bar X")]
[TestCase("m_Foo.m_Bar", "Bar", ExpectedResult = "Foo Bar")]
[TestCase("m_Foo.m_Bar.x", "X", ExpectedResult = "Bar X")]
[TestCase("m_Foo.m_Bar.m_x", "X", ExpectedResult = "Bar X")]
[TestCase("m_foo.m_bar.m_baz.m_x", "X", ExpectedResult = "Baz X")]
[TestCase("m_foo.m_bar.m_baz", "Baz", ExpectedResult = "Bar Baz")]
[TestCase("m_Bar.Array.data[0]", "Element 0", ExpectedResult = "Bar[0]")]
[TestCase("m_Bar.Array.data[0].m_X", "Element 0", ExpectedResult = "Bar[0] X")]
[TestCase("m_Bar.Array.data[1].m_Baz", "Baz", ExpectedResult = "Bar[1] Baz")]
[TestCase("m_Foo.m_Bar.Array.data[1].m_Baz", "Baz", ExpectedResult = "Bar[1] Baz")]
[TestCase("m_Foo.m_Bar.Array.data[0]", "Element 0", ExpectedResult = "Bar[0]")]
[TestCase("m_Foo.m_Bar.Array.data[10]", "Element 10", ExpectedResult = "Bar[10]")]
[TestCase("m_Foo.m_Bar.Array.data[0].m_Baz", "Baz", ExpectedResult = "Bar[0] Baz")]
[TestCase("m_Foo.m_Bar.Array.data[0].m_BazArray", "Baz Array", ExpectedResult = "Bar[0] Baz Array")]
[TestCase("m_Bar.Array.data[0].m_Baz.Array.data[10]", "Element 10", ExpectedResult = "Bar[0] Baz[10]")]
[TestCase("m_Foo.m_Bar.Array.data[0].m_Baz.Array.data[10]", "Element 10", ExpectedResult = "Bar[0] Baz[10]")]
[TestCase("m_Foo.m_Bar.Array.data[0].m_Baz.Array.data[0].hello", "Hello", ExpectedResult = "Baz[0] Hello")]
[TestCase("m_Foo.m_Bar.Array.data[0].m_Baz.Array.data[0].hello.Array.data[1].world", "World", ExpectedResult = "Hello[1] World")]
[TestCase("Size", "Size", ExpectedResult = "Size")]
[TestCase("m_Size.m_Size", "Size", ExpectedResult = "Size Size")]
[TestCase("m_Size.Size.m_size", "Size", ExpectedResult = "Size Size")]
[TestCase("m_Foo.Size", "Size", ExpectedResult = "Foo Size")]
[TestCase("m_Foo.size", "Size", ExpectedResult = "Foo Size")]
[TestCase("m_Bar.Array.size", "Size", ExpectedResult = "Bar Size")]
[TestCase("m_Foo.m_Bar.Array.size", "Size", ExpectedResult = "Bar Size")]
[TestCase("m_Bar.Array.data[0].m_Baz.m_Size", "Size", ExpectedResult = "Baz Size")]
[TestCase("m_Bar.Array.data[0].m_Baz.Array.size", "Size", ExpectedResult = "Baz Size")]
[TestCase("m_Foo.m_Bar.Array.data[0].m_Baz.Array.data[0].hello.Array.size", "Size", ExpectedResult = "Hello Size")]
[TestCase("<FooBar>k__BackingField", "Foo Bar", ExpectedResult = "Foo Bar")]
[TestCase("<Foo>k__BackingField.<Bar>k__BackingField", "Foo Bar", ExpectedResult = "Foo Bar")]
[TestCase("<Foo>k__BackingField.<Bar>k__BackingField.Array.data[0]", "Foo Bar", ExpectedResult = "Bar[0]")]
[TestCase("<Foo>k__BackingField.Array.data[0].<Bar>k__BackingField.Array.data[1]", "Foo Bar", ExpectedResult = "Foo[0] Bar[1]")]
[Category(TestUtility.MainCategory)]
public string FriendlyPropertyPathTests(string propertyPath, string displayName)
{
return SerializedPropertyUtility.FriendlyPropertyPath(propertyPath, displayName);
}
[TestCase("Sprite PPtr<$Sprite>", "Sprite")]
[TestCase("PPtr<Material PPtr<Material>", "Material")]
[TestCase("NoBracketsFound", "NoBracketsFound")]
[TestCase("", "")]
[TestCase("<>", "")]
[Category(TestUtility.MainCategory)]
public void FriendlyTypeTests(string type, string expected)
{
Assert.AreEqual(expected, SerializedPropertyUtility.FriendlyType(type));
}
[TestCase("m_Foo.Array.data[0]", ExpectedResult = true, TestName = "Path with array index should return true")]
[TestCase("m_Foo.m_Bar.Array.data[1]", ExpectedResult = true, TestName = "Path with nested array index should return true")]
[TestCase("", ExpectedResult = false, TestName = "Empty path should return false")]
[TestCase("m_Foo", ExpectedResult = false, TestName = "Path without array index should return false")]
[TestCase("m_Foo.m_Bar", ExpectedResult = false, TestName = "Nested path without array index should return false")]
[Category(TestUtility.MainCategory)]
public bool IsArrayElementTests(string propertyPath)
{
return SerializedPropertyUtility.IsArrayElement(propertyPath);
}
}
}