Newer
Older
HoloAnatomy / Assets / HoloToolkit-UnitTests / Editor / Utilities / UnityNullConstraintTests.cs
SURFACEBOOK2\jackwynne on 25 May 2018 2 KB v1
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using NUnit.Framework;
using NUnit.Framework.Constraints;
using UnityEngine;

namespace HoloToolkit.Unity.Tests
{
    public class UnityNullConstraintTests
    {
        [Test]
        public void TestObjectUnityNullConstraint()
        {
            var obj = CreateDestroyedObject();
            var constraint = new UnityNullConstraint();
            Assert.That(constraint.ApplyTo(obj).IsSuccess, Is.True);
        }

        [Test]
        public void TestObjectUsingUnityIsDirect()
        {
            var gameObject = new GameObject();
            Object.DestroyImmediate(gameObject);
            Assert.That(gameObject, Is.UnityNull);
        }

        [Test]
        public void TestNotUnityNull()
        {
            Assert.That(new GameObject(), Is.Not.UnityNull());
        }

        [Test]
        public void TestActualNull()
        {
            Assert.That(null, Is.UnityNull);
        }

        [Test]
        public void TestNullCheckFailWithNormalObjects()
        {
            Assert.That(new object(), Is.Not.UnityNull());
        }

        [Test]
        public void TestChainedCompare()
        {
            var obj = CreateDestroyedObject();
            Assert.That(obj, Is.UnityNull.And.Not.Null);
        }

        [Test]
        public void TestCompareAgainstNormalNullConstraint()
        {
            var obj = CreateDestroyedObject();
            var result1 = new UnityNullConstraint().ApplyTo(obj).IsSuccess;
            var result2 = new NullConstraint().ApplyTo(obj).IsSuccess;
            Assert.That(result1, Is.Not.EqualTo(result2));
        }

        [Test]
        public void TestTransformUnityNullConstraint()
        {
            var transform = new GameObject().transform;
            Object.DestroyImmediate(transform.gameObject);
            Assert.That(transform, Is.UnityNull);
        }

        private static GameObject CreateDestroyedObject()
        {
            var gameObject = new GameObject();
            Object.DestroyImmediate(gameObject);
            return gameObject;
        }
    }
}