File size: 2,468 Bytes
18a519f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using NUnit.Framework;
using UnityEngine;
using UnityEngine.UI;

[Category("Canvas")]
public class RootCanvasTests : TestBehaviourBase<UnityEngine.Canvas>
{
    // A simple nested canvas hierarchy
    // m_TestObject
    //     └ rootCanvasChild
    //              └ emptyChildGameObject
    //                          └ baseCanvas
    private UnityEngine.Canvas rootCanvasChild;
    private GameObject emptyChildGameObject;
    private UnityEngine.Canvas baseCanvas;

    [SetUp]
    public override void TestSetup()
    {
        base.TestSetup();

        var rootChildGO = new GameObject("root child");
        rootCanvasChild = rootChildGO.AddComponent<Canvas>();

        emptyChildGameObject = new GameObject("empty");

        var baseGO = new GameObject("base");
        baseCanvas = baseGO.AddComponent<Canvas>();

        baseCanvas.transform.SetParent(emptyChildGameObject.transform);
        emptyChildGameObject.transform.SetParent(rootChildGO.transform);
        rootChildGO.transform.SetParent(m_TestObject.transform);
    }

    [Test]
    public void IsRootCanvasTest()
    {
        Assert.IsFalse(baseCanvas.isRootCanvas);
        Assert.IsFalse(rootCanvasChild.isRootCanvas);
        Assert.IsTrue(m_TestObject.isRootCanvas);
    }

    [Test]
    public void CorrectRootCanvasReturned()
    {
        Assert.AreEqual(m_TestObject, m_TestObject.rootCanvas);
        Assert.AreEqual(m_TestObject, rootCanvasChild.rootCanvas);
        Assert.AreEqual(m_TestObject, baseCanvas.rootCanvas);
    }

    [Test]
    public void NotRootCanvasAnchorsDontGetReset()
    {
        var rect = rootCanvasChild.GetComponent<RectTransform>();

        rect.anchorMin = Vector2.zero;
        rect.anchorMax = Vector2.one;

        Assert.IsTrue(rect.anchorMin == Vector2.zero);
        Assert.IsTrue(rect.anchorMax == Vector2.one);

        m_TestObject.gameObject.SetActive(false);

        Assert.IsTrue(rect.anchorMin == Vector2.zero);
        Assert.IsTrue(rect.anchorMax == Vector2.one);
    }

    [Test]
    public void ChildOfDisabledCanvasCantReceiveClicks()
    {
        rootCanvasChild.gameObject.AddComponent<Image>();
        var raycasts = GraphicRegistry.GetRaycastableGraphicsForCanvas(rootCanvasChild);

        Assert.IsTrue(raycasts.Count == 1);

        m_TestObject.gameObject.SetActive(false);
        raycasts = GraphicRegistry.GetRaycastableGraphicsForCanvas(rootCanvasChild);

        Assert.IsTrue(raycasts.Count == 0);
    }
}