| | 1 | | using DCL.Rendering; |
| | 2 | | using NUnit.Framework; |
| | 3 | | using System.Collections; |
| | 4 | | using System.Linq; |
| | 5 | | using UnityEngine; |
| | 6 | | using UnityEngine.TestTools; |
| | 7 | |
|
| | 8 | | namespace CullingControllerTests |
| | 9 | | { |
| | 10 | | public class CullingObjectsTrackerShould |
| | 11 | | { |
| | 12 | | [UnityTest] |
| | 13 | | public IEnumerator FilterIgnoredLayerMasksCorrectly() |
| | 14 | | { |
| | 15 | | // Arrange |
| 1 | 16 | | int layer = 5; |
| 1 | 17 | | int layerMask = 1 << layer; |
| 1 | 18 | | var tracker = new CullingObjectsTracker(); |
| 1 | 19 | | tracker.SetIgnoredLayersMask(layerMask); |
| | 20 | |
|
| 1 | 21 | | var testGameObjectA = new GameObject(); |
| 1 | 22 | | var originalRendererA = testGameObjectA.AddComponent<MeshRenderer>(); |
| 1 | 23 | | testGameObjectA.layer = layer; |
| | 24 | |
|
| 1 | 25 | | var testGameObjectB = new GameObject(); |
| 1 | 26 | | var originalRendererB = testGameObjectB.AddComponent<MeshRenderer>(); |
| 1 | 27 | | testGameObjectB.layer = 0; |
| | 28 | |
|
| 1 | 29 | | var testGameObjectC = new GameObject(); |
| 1 | 30 | | var originalRendererC = testGameObjectC.AddComponent<SkinnedMeshRenderer>(); |
| 1 | 31 | | testGameObjectC.layer = layer; |
| | 32 | |
|
| 1 | 33 | | var testGameObjectD = new GameObject(); |
| 1 | 34 | | var originalRendererD = testGameObjectD.AddComponent<SkinnedMeshRenderer>(); |
| 1 | 35 | | testGameObjectD.layer = 0; |
| | 36 | |
|
| | 37 | | Renderer[] renderers = null; |
| 3 | 38 | | Renderer obtainedRendererA = null, obtainedRendererB = null, obtainedRendererC = null, obtainedRendererD = n |
| | 39 | |
|
| | 40 | | // Act |
| 1 | 41 | | yield return tracker.PopulateRenderersList(); |
| | 42 | |
|
| 1 | 43 | | renderers = tracker.GetRenderers(); |
| 19 | 44 | | obtainedRendererA = renderers.FirstOrDefault( x => x == originalRendererA ); |
| 2 | 45 | | obtainedRendererB = renderers.FirstOrDefault( x => x == originalRendererB ); |
| 2 | 46 | | obtainedRendererC = tracker.GetSkinnedRenderers().FirstOrDefault( x => x == originalRendererC ); |
| 2 | 47 | | obtainedRendererD = tracker.GetSkinnedRenderers().FirstOrDefault( x => x == originalRendererD ); |
| | 48 | |
|
| | 49 | | // Assert |
| 1 | 50 | | Assert.IsTrue(originalRendererA != null); |
| 1 | 51 | | Assert.IsTrue(originalRendererB != null); |
| 1 | 52 | | Assert.IsTrue(originalRendererC != null); |
| 1 | 53 | | Assert.IsTrue(originalRendererD != null); |
| | 54 | |
|
| 1 | 55 | | Assert.IsTrue(obtainedRendererA == null, "Renderer should be null because it has an invalid layer"); |
| 1 | 56 | | Assert.IsTrue(obtainedRendererB != null, "Renderer should not be null because it has a valid layer"); |
| 1 | 57 | | Assert.IsTrue(obtainedRendererC == null, "Skinned renderer should be null because it has a invalid layer"); |
| 1 | 58 | | Assert.IsTrue(obtainedRendererD != null, "Skinned renderer should not be null because it has a valid layer") |
| | 59 | |
|
| | 60 | | // Cleanup |
| 1 | 61 | | Object.Destroy(testGameObjectA); |
| 1 | 62 | | Object.Destroy(testGameObjectB); |
| 1 | 63 | | Object.Destroy(testGameObjectC); |
| 1 | 64 | | Object.Destroy(testGameObjectD); |
| | 65 | |
|
| 1 | 66 | | yield return null; |
| 1 | 67 | | } |
| | 68 | |
|
| | 69 | | [Test] |
| | 70 | | [TestCase(true)] |
| | 71 | | [TestCase(false)] |
| | 72 | | public void ForcePopulateRenderersListCorrectly(bool includeInactives) |
| | 73 | | { |
| | 74 | | // Arrange |
| 2 | 75 | | var tracker = new CullingObjectsTracker(); |
| 2 | 76 | | var testGameObject = new GameObject(); |
| 2 | 77 | | var originalRenderer = testGameObject.AddComponent<MeshRenderer>(); |
| 2 | 78 | | testGameObject.SetActive(false); |
| | 79 | |
|
| | 80 | | // Act |
| 2 | 81 | | tracker.ForcePopulateRenderersList(includeInactives); |
| | 82 | |
|
| 2 | 83 | | Renderer[] renderers = tracker.GetRenderers(); |
| 20 | 84 | | Renderer obtainedRenderer = tracker.GetRenderers().FirstOrDefault(x => x == originalRenderer); |
| | 85 | |
|
| | 86 | | // Assert |
| 2 | 87 | | Assert.IsTrue(originalRenderer != null); |
| | 88 | |
|
| 2 | 89 | | if (includeInactives) |
| 1 | 90 | | Assert.IsTrue(obtainedRenderer != null, "Renderer should not be null because it is taking on account the |
| | 91 | | else |
| 1 | 92 | | Assert.IsTrue(obtainedRenderer == null, "Renderer should be null because it is not taking on account the |
| | 93 | |
|
| | 94 | | // Cleanup |
| 2 | 95 | | Object.Destroy(testGameObject); |
| 2 | 96 | | } |
| | 97 | | } |
| | 98 | | } |