You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

77 lines
2.7 KiB

using NUnit.Framework;
using System;
using System.Reflection;
namespace UnityEngine.Rendering.HighDefinition.Tests
{
class ReflectionUtilsTests
{
class TestIntegersAllPublic
{
public int A;
public int B;
public int C;
}
class TestIntegersSomePublic
{
public int A;
private int B;
public int C;
}
class TestIntegersStatic
{
public static int A;
private static int B;
}
class TestObject
{
}
class TestIntegersWithTestObject
{
public TestObject A = new();
private TestObject B;
public int C;
}
class TestEmpty
{
}
private const BindingFlags k_InstanceNonPublic = BindingFlags.NonPublic | BindingFlags.Instance;
private const BindingFlags k_InstancePublic = BindingFlags.Public | BindingFlags.Instance;
private const BindingFlags k_StaticNonPublic = BindingFlags.NonPublic | BindingFlags.Static;
private const BindingFlags k_StaticPublic = BindingFlags.Public | BindingFlags.Static;
[Test]
[TestCase(typeof(TestEmpty), ExpectedResult = 0)]
[TestCase(typeof(TestIntegersAllPublic), ExpectedResult = 3)]
[TestCase(typeof(TestIntegersSomePublic), ExpectedResult = 3)]
[TestCase(typeof(TestIntegersStatic), ExpectedResult = 0)]
[TestCase(typeof(TestIntegersWithTestObject), ExpectedResult = 1)]
[TestCase(typeof(TestIntegersStatic), k_StaticNonPublic, ExpectedResult = 1)]
[TestCase(typeof(TestIntegersWithTestObject), k_InstanceNonPublic, ExpectedResult = 0)]
[TestCase(typeof(TestIntegersAllPublic), k_InstanceNonPublic, ExpectedResult = 0)]
[TestCase(typeof(TestIntegersSomePublic), k_InstanceNonPublic, ExpectedResult = 1)]
[TestCase(typeof(TestIntegersStatic), k_StaticPublic, ExpectedResult = 1)]
[TestCase(typeof(TestIntegersAllPublic), k_InstancePublic, ExpectedResult = 3)]
[TestCase(typeof(TestIntegersSomePublic), k_InstancePublic, ExpectedResult = 2)]
[TestCase(typeof(TestIntegersWithTestObject), k_InstancePublic, ExpectedResult = 1)]
[TestCase(typeof(TestIntegersAllPublic), k_StaticNonPublic, ExpectedResult = 0)]
[TestCase(typeof(TestIntegersAllPublic), k_StaticPublic, ExpectedResult = 0)]
public int ForEachFieldOfType(Type type, BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)
{
int count = 0;
Activator.CreateInstance(type).ForEachFieldOfType<int>(value => count++, flags);
return count;
}
}
}