12using System.Reflection;
19 public abstract class GraphicRendererTestBase : LeapTestBase {
21 protected LeapGraphicRenderer renderer {
get;
private set; }
23 protected LeapGraphic oneGraphic {
get;
private set; }
25 protected LeapGraphicGroup firstGroup {
get;
private set; }
27 protected LeapGraphicGroup secondGroup {
get;
private set; }
29 private string _sceneToUnload;
32 protected virtual void Teardown() {
33 UnityEngine.Object.DestroyImmediate(renderer.gameObject);
35 if (!
string.IsNullOrEmpty(_sceneToUnload)) {
36 SceneManager.UnloadSceneAsync(_sceneToUnload);
37 _sceneToUnload =
null;
53 protected override void InitTest(
string objectName) {
54 base.InitTest(objectName);
56 renderer = testObj.GetComponent<LeapGraphicRenderer>();
58 oneGraphic = renderer.GetComponentInChildren<LeapGraphic>(includeInactive:
true);
60 firstGroup = renderer.groups[0];
62 secondGroup = renderer.groups.Count > 1 ? renderer.groups[1] :
null;
70 protected void LoadScene(
string sceneName) {
71 _sceneToUnload = sceneName;
72 SceneManager.LoadScene(sceneName, LoadSceneMode.Additive);
80 protected LeapGraphic CreateGraphic(
string prefabName) {
81 var prefab = EditorResources.Load<GameObject>(prefabName);
83 obj.transform.SetParent(renderer.transform);
85 var graphic = obj.GetComponent<LeapGraphic>();
87 if (oneGraphic ==
null) {
98 protected object shallowCopy(
object obj) {
99 Assert.That(obj, Is.Not.Null);
101 var copy = Activator.CreateInstance(obj.GetType());
103 foreach (var field
in copy.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)) {
104 field.SetValue(copy, field.GetValue(obj));
114 protected void assertValueFieldsEqual(
object a,
object b) {
115 Assert.That(a, Is.Not.Null);
116 Assert.That(b, Is.Not.Null);
118 Assert.That(a.GetType(), Is.EqualTo(b.GetType()));
120 foreach (var field
in a.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)) {
121 if (!field.FieldType.IsValueType) {
125 var valueA = field.GetValue(a);
126 var valueB = field.GetValue(b);
127 Assert.That(valueA, Is.EqualTo(valueB),
"Field " + field.Name +
" did not match");