Newer
Older
HoloAnatomy / Assets / HoloToolkit-UnitTests / Editor / Utilities / CameraCacheTests.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 UnityEngine;

namespace HoloToolkit.Unity.Tests
{
    public class CameraCacheTests
    {
        [SetUp]
        public void ClearScene()
        {
            TestUtils.ClearScene();
        }

        [Test]
        public void GetNullCameraFromCache()
        {
            Assert.That(CameraCache.Main, Is.UnityNull);
        }

        [Test]
        public void GetNullCameraFromCacheAfterDelete()
        {

            var mainCamera = TestUtils.CreateMainCamera();
            var unused = CameraCache.Main;
            Object.DestroyImmediate(mainCamera.gameObject);
            Assert.That(CameraCache.Main, Is.UnityNull);
        }

        [Test]
        public void GetMainCameraFromCache()
        {
            var mainCamera = TestUtils.CreateMainCamera();
            Assert.That(CameraCache.Main, Is.EqualTo(mainCamera));
        }

        [Test]
        public void GetMainFromCacheWithMultiple()
        {
            var mainCamera = TestUtils.CreateMainCamera();
            var unused = CameraCache.Main;
            TestUtils.CreateMainCamera();
            Assert.That(CameraCache.Main, Is.EqualTo(mainCamera));
        }

        [Test]
        public void GetMainFromCacheAfterDelete()
        {
            var mainCamera = TestUtils.CreateMainCamera();
            var unused = CameraCache.Main;
            var secondMainCamera = TestUtils.CreateMainCamera();
            Object.DestroyImmediate(mainCamera.gameObject);
            Assert.That(CameraCache.Main, Is.EqualTo(secondMainCamera));
        }

        [Test]
        public void ManualMainCameraRefresh()
        {
            TestUtils.CreateMainCamera();
            var unused = CameraCache.Main;
            var secondMainCamera = TestUtils.CreateMainCamera();
            CameraCache.Refresh(secondMainCamera);
            Assert.That(CameraCache.Main, Is.EqualTo(secondMainCamera));
        }

        [Test]
        public void ManualMainCameraRefreshGetFirstAfterDelete()
        {
            var mainCamera = TestUtils.CreateMainCamera();
            var unused = CameraCache.Main;
            var secondMainCamera = TestUtils.CreateMainCamera();
            CameraCache.Refresh(secondMainCamera);
            Object.DestroyImmediate(secondMainCamera.gameObject);
            Assert.That(CameraCache.Main, Is.EqualTo(mainCamera));
        }
    }
}