整合SLSUtilities
This commit is contained in:
@@ -0,0 +1,495 @@
|
||||
using LunaWolfStudiosEditor.ScriptableSheets.Shared;
|
||||
using NUnit.Framework;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace LunaWolfStudiosEditor.ScriptableSheets.EditorTests
|
||||
{
|
||||
[TestFixture]
|
||||
[Category(TestUtility.MainCategory)]
|
||||
public class ReflectionUtilityTests
|
||||
{
|
||||
[Test]
|
||||
public void GetNestedFieldInfo_SimpleField_ReturnsFieldInfo()
|
||||
{
|
||||
var fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(BaseClass), "m_BaseField");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(1, fieldInfo.Length);
|
||||
Assert.AreEqual("m_BaseField", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(int), fieldInfo[0].FieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldInfo_GenericField_ReturnsFieldInfo()
|
||||
{
|
||||
var fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(GenericSprite), "m_BaseField");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(1, fieldInfo.Length);
|
||||
Assert.AreEqual("m_BaseField", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(int), fieldInfo[0].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(GenericSprite), "m_FieldName");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(1, fieldInfo.Length);
|
||||
Assert.AreEqual("m_FieldName", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(string), fieldInfo[0].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(GenericSprite), "m_GenericField");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(1, fieldInfo.Length);
|
||||
Assert.AreEqual("m_GenericField", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(Sprite), fieldInfo[0].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(GenericSprite), "m_Count");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(1, fieldInfo.Length);
|
||||
Assert.AreEqual("m_Count", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(int), fieldInfo[0].FieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldInfo_NestedGenericField_ReturnsFieldInfo()
|
||||
{
|
||||
var fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(NestedGenericSprite), "m_NestedGenericSprite.m_BaseField");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(2, fieldInfo.Length);
|
||||
Assert.AreEqual("m_NestedGenericSprite", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(GenericSprite), fieldInfo[0].FieldType);
|
||||
Assert.AreEqual("m_BaseField", fieldInfo[1].Name);
|
||||
Assert.AreEqual(typeof(int), fieldInfo[1].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(NestedGenericSprite), "m_NestedGenericSprite.m_FieldName");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(2, fieldInfo.Length);
|
||||
Assert.AreEqual("m_NestedGenericSprite", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(GenericSprite), fieldInfo[0].FieldType);
|
||||
Assert.AreEqual("m_FieldName", fieldInfo[1].Name);
|
||||
Assert.AreEqual(typeof(string), fieldInfo[1].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(NestedGenericSprite), "m_NestedGenericSprite.m_GenericField");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(2, fieldInfo.Length);
|
||||
Assert.AreEqual("m_NestedGenericSprite", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(GenericSprite), fieldInfo[0].FieldType);
|
||||
Assert.AreEqual("m_GenericField", fieldInfo[1].Name);
|
||||
Assert.AreEqual(typeof(Sprite), fieldInfo[1].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(NestedGenericSprite), "m_NestedGenericSprite.m_Count");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(2, fieldInfo.Length);
|
||||
Assert.AreEqual("m_NestedGenericSprite", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(GenericSprite), fieldInfo[0].FieldType);
|
||||
Assert.AreEqual("m_Count", fieldInfo[1].Name);
|
||||
Assert.AreEqual(typeof(int), fieldInfo[1].FieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldInfo_ExposedReference_ReturnsFieldInfo()
|
||||
{
|
||||
var fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(MyExposedReference), "m_ExposedReference.exposedName");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(2, fieldInfo.Length);
|
||||
Assert.AreEqual("m_ExposedReference", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(ExposedReference<MyScriptableObject>), fieldInfo[0].FieldType);
|
||||
Assert.AreEqual("exposedName", fieldInfo[1].Name);
|
||||
Assert.AreEqual(typeof(PropertyName), fieldInfo[1].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(MyExposedReference), "m_ExposedReference.defaultValue");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(2, fieldInfo.Length);
|
||||
Assert.AreEqual("m_ExposedReference", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(ExposedReference<MyScriptableObject>), fieldInfo[0].FieldType);
|
||||
Assert.AreEqual("defaultValue", fieldInfo[1].Name);
|
||||
Assert.AreEqual(typeof(Object), fieldInfo[1].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(MyExposedReference), "m_ExposedReference.m_Count");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(2, fieldInfo.Length);
|
||||
Assert.AreEqual("m_ExposedReference", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(ExposedReference<MyScriptableObject>), fieldInfo[0].FieldType);
|
||||
Assert.AreEqual("m_Count", fieldInfo[1].Name);
|
||||
Assert.AreEqual(typeof(int), fieldInfo[1].FieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldInfo_DerivedExposedReference_ReturnsFieldInfo()
|
||||
{
|
||||
var fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(DerivedExposedReference), "m_ExposedReference.exposedName");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(2, fieldInfo.Length);
|
||||
Assert.AreEqual("m_ExposedReference", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(ExposedReference<MyScriptableObject>), fieldInfo[0].FieldType);
|
||||
Assert.AreEqual("exposedName", fieldInfo[1].Name);
|
||||
Assert.AreEqual(typeof(PropertyName), fieldInfo[1].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(DerivedExposedReference), "m_ExposedReference.defaultValue");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(2, fieldInfo.Length);
|
||||
Assert.AreEqual("m_ExposedReference", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(ExposedReference<MyScriptableObject>), fieldInfo[0].FieldType);
|
||||
Assert.AreEqual("defaultValue", fieldInfo[1].Name);
|
||||
Assert.AreEqual(typeof(Object), fieldInfo[1].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(DerivedExposedReference), "m_DerivedExposedReference.exposedName");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(2, fieldInfo.Length);
|
||||
Assert.AreEqual("m_DerivedExposedReference", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(ExposedReference<MyScriptableObject>), fieldInfo[0].FieldType);
|
||||
Assert.AreEqual("exposedName", fieldInfo[1].Name);
|
||||
Assert.AreEqual(typeof(PropertyName), fieldInfo[1].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(DerivedExposedReference), "m_DerivedExposedReference.defaultValue");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(2, fieldInfo.Length);
|
||||
Assert.AreEqual("m_DerivedExposedReference", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(ExposedReference<MyScriptableObject>), fieldInfo[0].FieldType);
|
||||
Assert.AreEqual("defaultValue", fieldInfo[1].Name);
|
||||
Assert.AreEqual(typeof(Object), fieldInfo[1].FieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldInfo_InheritedField_ReturnsFieldInfo()
|
||||
{
|
||||
var fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(DerivedClass), "m_BaseField");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(1, fieldInfo.Length);
|
||||
Assert.AreEqual("m_BaseField", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(int), fieldInfo[0].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(DerivedClass), "m_DerivedField");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(1, fieldInfo.Length);
|
||||
Assert.AreEqual("m_DerivedField", fieldInfo[0].Name);
|
||||
Assert.AreEqual(typeof(string), fieldInfo[0].FieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldInfo_NestedField_ReturnsFieldInfo()
|
||||
{
|
||||
var fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(Item), "m_Consumables.Array.data[0].m_Icon.m_Name");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(3, fieldInfo.Length);
|
||||
Assert.AreEqual("m_Consumables", fieldInfo[0].Name);
|
||||
Assert.AreEqual("m_Icon", fieldInfo[1].Name);
|
||||
Assert.AreEqual("m_Name", fieldInfo[2].Name);
|
||||
Assert.AreEqual(typeof(string), fieldInfo[2].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(Item), "m_Consumables.Array.data[0].m_Icon.m_Icon");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(3, fieldInfo.Length);
|
||||
Assert.AreEqual("m_Consumables", fieldInfo[0].Name);
|
||||
Assert.AreEqual("m_Icon", fieldInfo[1].Name);
|
||||
Assert.AreEqual("m_Icon", fieldInfo[2].Name);
|
||||
Assert.AreEqual(typeof(Sprite), fieldInfo[2].FieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldInfo_NestedArrayField_ReturnsFieldInfo()
|
||||
{
|
||||
var fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(DerivedClass), "m_Array.m_NestedArray.Array.data[0].m_InnerNestedArray.Array.data[0].m_InnerField");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(4, fieldInfo.Length);
|
||||
Assert.AreEqual("m_Array", fieldInfo[0].Name);
|
||||
Assert.AreEqual("m_NestedArray", fieldInfo[1].Name);
|
||||
Assert.AreEqual("m_InnerNestedArray", fieldInfo[2].Name);
|
||||
Assert.AreEqual("m_InnerField", fieldInfo[3].Name);
|
||||
Assert.AreEqual(typeof(string), fieldInfo[3].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(DerivedClass), "m_Array.m_NestedArray.Array.data[0].m_InnerNestedArray.Array.data[0].m_DerivedInnerField");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(4, fieldInfo.Length);
|
||||
Assert.AreEqual("m_Array", fieldInfo[0].Name);
|
||||
Assert.AreEqual("m_NestedArray", fieldInfo[1].Name);
|
||||
Assert.AreEqual("m_InnerNestedArray", fieldInfo[2].Name);
|
||||
Assert.AreEqual("m_DerivedInnerField", fieldInfo[3].Name);
|
||||
Assert.AreEqual(typeof(Sprite), fieldInfo[3].FieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldInfo_NestedListField_ReturnsFieldInfo()
|
||||
{
|
||||
var fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(DerivedClass), "m_List.m_NestedList.Array.data[0].m_InnerNestedList.Array.data[0].m_InnerField");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(4, fieldInfo.Length);
|
||||
Assert.AreEqual("m_List", fieldInfo[0].Name);
|
||||
Assert.AreEqual("m_NestedList", fieldInfo[1].Name);
|
||||
Assert.AreEqual("m_InnerNestedList", fieldInfo[2].Name);
|
||||
Assert.AreEqual("m_InnerField", fieldInfo[3].Name);
|
||||
Assert.AreEqual(typeof(string), fieldInfo[3].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(DerivedClass), "m_List.m_NestedList.Array.data[0].m_InnerNestedList.Array.data[0].m_DerivedInnerField");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(4, fieldInfo.Length);
|
||||
Assert.AreEqual("m_List", fieldInfo[0].Name);
|
||||
Assert.AreEqual("m_NestedList", fieldInfo[1].Name);
|
||||
Assert.AreEqual("m_InnerNestedList", fieldInfo[2].Name);
|
||||
Assert.AreEqual("m_DerivedInnerField", fieldInfo[3].Name);
|
||||
Assert.AreEqual(typeof(Sprite), fieldInfo[3].FieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldInfo_WhenDeeplyNestedAndWrapped_ReturnsFieldInfo()
|
||||
{
|
||||
var fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(Wrapper3), "m_Wrapper2.m_Wrapper1.m_Wrapper0.m_Depth3.m_Depth3");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(5, fieldInfo.Length);
|
||||
Assert.AreEqual("m_Wrapper2", fieldInfo[0].Name);
|
||||
Assert.AreEqual("m_Wrapper1", fieldInfo[1].Name);
|
||||
Assert.AreEqual("m_Wrapper0", fieldInfo[2].Name);
|
||||
Assert.AreEqual("m_Depth3", fieldInfo[3].Name);
|
||||
Assert.AreEqual("m_Depth3", fieldInfo[4].Name);
|
||||
Assert.AreEqual(typeof(int), fieldInfo[4].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(Wrapper3), "m_Wrapper2.m_Wrapper1.m_Wrapper0.m_Depth3.m_Depth2");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(5, fieldInfo.Length);
|
||||
Assert.AreEqual("m_Wrapper2", fieldInfo[0].Name);
|
||||
Assert.AreEqual("m_Wrapper1", fieldInfo[1].Name);
|
||||
Assert.AreEqual("m_Wrapper0", fieldInfo[2].Name);
|
||||
Assert.AreEqual("m_Depth3", fieldInfo[3].Name);
|
||||
Assert.AreEqual("m_Depth2", fieldInfo[4].Name);
|
||||
Assert.AreEqual(typeof(string), fieldInfo[4].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(Wrapper3), "m_Wrapper2.m_Wrapper1.m_Wrapper0.m_Depth3.m_Depth1");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(5, fieldInfo.Length);
|
||||
Assert.AreEqual("m_Wrapper2", fieldInfo[0].Name);
|
||||
Assert.AreEqual("m_Wrapper1", fieldInfo[1].Name);
|
||||
Assert.AreEqual("m_Wrapper0", fieldInfo[2].Name);
|
||||
Assert.AreEqual("m_Depth3", fieldInfo[3].Name);
|
||||
Assert.AreEqual("m_Depth1", fieldInfo[4].Name);
|
||||
Assert.AreEqual(typeof(bool), fieldInfo[4].FieldType);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(Wrapper3), "m_Wrapper2.m_Wrapper1.m_Wrapper0.m_Depth3.m_Depth0");
|
||||
Assert.NotNull(fieldInfo);
|
||||
Assert.AreEqual(5, fieldInfo.Length);
|
||||
Assert.AreEqual("m_Wrapper2", fieldInfo[0].Name);
|
||||
Assert.AreEqual("m_Wrapper1", fieldInfo[1].Name);
|
||||
Assert.AreEqual("m_Wrapper0", fieldInfo[2].Name);
|
||||
Assert.AreEqual("m_Depth3", fieldInfo[3].Name);
|
||||
Assert.AreEqual("m_Depth0", fieldInfo[4].Name);
|
||||
Assert.AreEqual(typeof(Sprite), fieldInfo[4].FieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldInfo_WhenInvalidField_ReturnsNull()
|
||||
{
|
||||
var fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(BaseClass), "m_InvalidFieldPath");
|
||||
Assert.IsNull(fieldInfo);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(BaseClass), "m_Invalid.Field.Path");
|
||||
Assert.IsNull(fieldInfo);
|
||||
|
||||
fieldInfo = ReflectionUtility.GetNestedFieldInfo(typeof(Item), "m_Consumables.Array.data[0].m_Icon.m_Name.m_Value");
|
||||
Assert.IsNull(fieldInfo);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldType_SimpleField_ReturnsFieldType()
|
||||
{
|
||||
var fieldType = ReflectionUtility.GetNestedFieldType(typeof(BaseClass), "m_BaseField");
|
||||
Assert.AreEqual(typeof(int), fieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldType_InheritedField_ReturnsFieldType()
|
||||
{
|
||||
var fieldType = ReflectionUtility.GetNestedFieldType(typeof(DerivedClass), "m_BaseField");
|
||||
Assert.AreEqual(typeof(int), fieldType);
|
||||
|
||||
fieldType = ReflectionUtility.GetNestedFieldType(typeof(DerivedClass), "m_DerivedField");
|
||||
Assert.AreEqual(typeof(string), fieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldType_ArrayField_ReturnsFieldType()
|
||||
{
|
||||
var fieldType = ReflectionUtility.GetNestedFieldType(typeof(BaseClass), "m_SpriteArray");
|
||||
Assert.AreEqual(typeof(Sprite), fieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldType_ListField_ReturnsFieldType()
|
||||
{
|
||||
var fieldType = ReflectionUtility.GetNestedFieldType(typeof(BaseClass), "m_MaterialList");
|
||||
Assert.AreEqual(typeof(Material), fieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldType_InnerArrayField_ReturnsFieldType()
|
||||
{
|
||||
var fieldType = ReflectionUtility.GetNestedFieldType(typeof(Item), "m_Consumables.Array.data[0].m_Icon.m_Name");
|
||||
Assert.AreEqual(typeof(string), fieldType);
|
||||
|
||||
fieldType = ReflectionUtility.GetNestedFieldType(typeof(Item), "m_Consumables.Array.data[0].m_Icon.m_Icon");
|
||||
Assert.AreEqual(typeof(Sprite), fieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldType_NestedArrayField_ReturnsFieldType()
|
||||
{
|
||||
var fieldType = ReflectionUtility.GetNestedFieldType(typeof(DerivedClass), "m_Array.m_NestedArray.Array.data[0].m_InnerNestedArray.Array.data[0].m_InnerField");
|
||||
Assert.AreEqual(typeof(string), fieldType);
|
||||
|
||||
fieldType = ReflectionUtility.GetNestedFieldType(typeof(DerivedClass), "m_Array.m_NestedArray.Array.data[0].m_InnerNestedArray.Array.data[0].m_DerivedInnerField");
|
||||
Assert.AreEqual(typeof(Sprite), fieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldType_NestedCollections_ReturnsFieldType()
|
||||
{
|
||||
var fieldType = ReflectionUtility.GetNestedFieldType(typeof(DerivedClass), "m_Array.m_NestedArray.Array.data[0].m_InnerNestedArray.Array.data[0].m_InnerSpriteArray");
|
||||
Assert.AreEqual(typeof(Sprite), fieldType);
|
||||
|
||||
fieldType = ReflectionUtility.GetNestedFieldType(typeof(DerivedClass), "m_Array.m_NestedArray.Array.data[0].m_InnerNestedArray.Array.data[0].m_InnerMaterialList");
|
||||
Assert.AreEqual(typeof(Material), fieldType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetNestedFieldType_WhenInvalidField_ReturnsNull()
|
||||
{
|
||||
var fieldType = ReflectionUtility.GetNestedFieldType(typeof(DerivedClass), "m_InvalidFieldPath");
|
||||
Assert.IsNull(fieldType);
|
||||
|
||||
fieldType = ReflectionUtility.GetNestedFieldType(typeof(DerivedClass), "m_Consumables.Array.data[0].m_Icon.m_Name.m_Value");
|
||||
Assert.IsNull(fieldType);
|
||||
}
|
||||
|
||||
private struct Item
|
||||
{
|
||||
private Consumable[] m_Consumables;
|
||||
}
|
||||
|
||||
private struct Consumable
|
||||
{
|
||||
private Icon m_Icon;
|
||||
}
|
||||
|
||||
private struct Icon
|
||||
{
|
||||
private string m_Name;
|
||||
private Sprite m_Icon;
|
||||
}
|
||||
|
||||
private class BaseClass
|
||||
{
|
||||
private int m_BaseField;
|
||||
private ArrayClass m_Array;
|
||||
private ListClass m_List;
|
||||
private Sprite[] m_SpriteArray;
|
||||
private List<Material> m_MaterialList;
|
||||
}
|
||||
|
||||
private class DerivedClass : BaseClass
|
||||
{
|
||||
private string m_DerivedField;
|
||||
}
|
||||
|
||||
private class BaseGeneric : BaseClass
|
||||
{
|
||||
private string m_FieldName;
|
||||
}
|
||||
|
||||
private class Generic<T> : BaseGeneric
|
||||
{
|
||||
private T m_GenericField;
|
||||
}
|
||||
|
||||
private class GenericSprite : Generic<Sprite>
|
||||
{
|
||||
private int m_Count;
|
||||
}
|
||||
|
||||
private class NestedGenericSprite
|
||||
{
|
||||
private GenericSprite m_NestedGenericSprite;
|
||||
}
|
||||
|
||||
private class MyScriptableObject : ScriptableObject
|
||||
{
|
||||
private int m_Count;
|
||||
}
|
||||
|
||||
private class MyExposedReference
|
||||
{
|
||||
private ExposedReference<MyScriptableObject> m_ExposedReference;
|
||||
}
|
||||
|
||||
private class DerivedExposedReference : MyExposedReference
|
||||
{
|
||||
private ExposedReference<MyScriptableObject> m_DerivedExposedReference;
|
||||
}
|
||||
|
||||
private class ArrayClass
|
||||
{
|
||||
private NestedArrayClass[] m_NestedArray;
|
||||
}
|
||||
|
||||
private class NestedArrayClass
|
||||
{
|
||||
private DerivedInnerClass[] m_InnerNestedArray;
|
||||
}
|
||||
|
||||
private class ListClass
|
||||
{
|
||||
private List<NestedListClass> m_NestedList;
|
||||
}
|
||||
|
||||
private class NestedListClass
|
||||
{
|
||||
private List<DerivedInnerClass> m_InnerNestedList;
|
||||
}
|
||||
|
||||
private class InnerClass
|
||||
{
|
||||
private string m_InnerField;
|
||||
private Sprite[] m_InnerSpriteArray;
|
||||
private List<Material> m_InnerMaterialList;
|
||||
}
|
||||
|
||||
private class DerivedInnerClass : InnerClass
|
||||
{
|
||||
private Sprite m_DerivedInnerField;
|
||||
}
|
||||
|
||||
private class Depth0
|
||||
{
|
||||
private Sprite m_Depth0;
|
||||
}
|
||||
|
||||
private class Depth1 : Depth0
|
||||
{
|
||||
private bool m_Depth1;
|
||||
}
|
||||
|
||||
private class Depth2 : Depth1
|
||||
{
|
||||
private string m_Depth2;
|
||||
}
|
||||
|
||||
private class Depth3 : Depth2
|
||||
{
|
||||
private int m_Depth3;
|
||||
}
|
||||
|
||||
private class Wrapper0
|
||||
{
|
||||
private Depth3 m_Depth3;
|
||||
}
|
||||
|
||||
private class Wrapper1
|
||||
{
|
||||
private Wrapper0 m_Wrapper0;
|
||||
}
|
||||
|
||||
private class Wrapper2
|
||||
{
|
||||
private Wrapper1 m_Wrapper1;
|
||||
}
|
||||
|
||||
private class Wrapper3
|
||||
{
|
||||
private Wrapper2 m_Wrapper2;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user