Initial commit
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Assertions;
|
||||
using UnityEngine.TestTools;
|
||||
|
||||
namespace BracerLib.Tests.Properties
|
||||
{
|
||||
public class PropertyTests : TestBase
|
||||
{
|
||||
public class SomeObject : MonoBehaviour
|
||||
{
|
||||
public DependencyA dependencyA;
|
||||
|
||||
[SerializeField]
|
||||
private DependencyB dependencyB1;
|
||||
[SerializeField]
|
||||
private DependencyB dependencyB2;
|
||||
[SerializeField]
|
||||
private DependencyB dependencyB3;
|
||||
|
||||
private DependencyC dependencyC;
|
||||
private DependencyD dependencyD;
|
||||
private ValueDependency valueDependency;
|
||||
private int someValue;
|
||||
|
||||
public DependencyB DependencyB1 => dependencyB1;
|
||||
public DependencyB DependencyB2 => dependencyB2;
|
||||
public DependencyB DependencyB3 => dependencyB3;
|
||||
public DependencyC DependencyC => dependencyC;
|
||||
public DependencyD DependencyD => dependencyD;
|
||||
public ValueDependency ValueDependency => valueDependency;
|
||||
public int SomeValue => someValue;
|
||||
}
|
||||
|
||||
public class DependencyA : MonoBehaviour
|
||||
{
|
||||
public int Value => 1;
|
||||
}
|
||||
|
||||
public class DependencyB : MonoBehaviour
|
||||
{
|
||||
public int Value => 2;
|
||||
}
|
||||
|
||||
public class DependencyC : MonoBehaviour
|
||||
{
|
||||
public int Value => 3;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class DependencyD { }
|
||||
|
||||
public struct ValueDependency
|
||||
{
|
||||
public int Value;
|
||||
}
|
||||
|
||||
private GameObject setupGameObject;
|
||||
private SomeObject setupSomeObject;
|
||||
private DependencyA setupDependencyA;
|
||||
|
||||
protected override IEnumerator UnityOneTimeSetUp()
|
||||
{
|
||||
setupGameObject = new GameObject("setup");
|
||||
setupSomeObject = setupGameObject.AddComponent<SomeObject>();
|
||||
setupDependencyA = setupGameObject.AddComponent<DependencyA>();
|
||||
|
||||
setupSomeObject.dependencyA = setupDependencyA;
|
||||
RegisterOneTimeTestObject(setupSomeObject);
|
||||
|
||||
yield return null;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestProperties()
|
||||
{
|
||||
Assert.IsNotNull(setupSomeObject);
|
||||
Assert.IsNotNull(setupDependencyA);
|
||||
|
||||
// Set Serialized private Mono
|
||||
var depB = new[] { setupGameObject.AddComponent<DependencyB>(), setupGameObject.AddComponent<DependencyB>(), setupGameObject.AddComponent<DependencyB>() };
|
||||
SetObjectReference(setupSomeObject, "dependencyB1", depB[0]);
|
||||
SetObjectReferences(setupSomeObject, ("dependencyB2", depB[1]), ("dependencyB3", depB[2]));
|
||||
|
||||
// Set Reflected private Mono
|
||||
var depC = setupGameObject.AddComponent<DependencyC>();
|
||||
SetReflectedValue(setupSomeObject, "dependencyC", depC);
|
||||
|
||||
// Set Reflected private POCO
|
||||
// Set Reflected private value
|
||||
var depD = new DependencyD();
|
||||
var valueDependency = new ValueDependency { Value = 255 };
|
||||
SetReflectedValues(setupSomeObject, ("dependencyD", depD), ("valueDependency", valueDependency));
|
||||
|
||||
yield return null;
|
||||
|
||||
Assert.IsNotNull(depB[0]);
|
||||
Assert.IsNotNull(setupSomeObject.DependencyB1);
|
||||
Assert.AreEqual(depB[0], setupSomeObject.DependencyB1);
|
||||
|
||||
Assert.IsNotNull(depB[1]);
|
||||
Assert.IsNotNull(setupSomeObject.DependencyB2);
|
||||
Assert.AreEqual(depB[1], setupSomeObject.DependencyB2);
|
||||
|
||||
Assert.IsNotNull(depB[2]);
|
||||
Assert.IsNotNull(setupSomeObject.DependencyB3);
|
||||
Assert.AreEqual(depB[2], setupSomeObject.DependencyB3);
|
||||
|
||||
Assert.IsNotNull(depC);
|
||||
Assert.IsNotNull(setupSomeObject.DependencyC);
|
||||
Assert.AreEqual(depC, setupSomeObject.DependencyC);
|
||||
|
||||
Assert.IsNotNull(depD);
|
||||
Assert.IsNotNull(setupSomeObject.DependencyD);
|
||||
Assert.AreEqual(depD, setupSomeObject.DependencyD);
|
||||
|
||||
Assert.AreEqual(setupSomeObject.ValueDependency.Value, valueDependency.Value);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TestPropertyErrors()
|
||||
{
|
||||
yield return null;
|
||||
|
||||
SetReflectedValue(setupSomeObject, "someFakeValue", 1);
|
||||
LogAssert.Expect(LogType.Warning, "There is no property someFakeValue to the target object.");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user