| | 1 | | using NUnit.Framework; |
| | 2 | | using System.Collections.Generic; |
| | 3 | | using UnityEditor; |
| | 4 | |
|
| | 5 | | namespace Tests |
| | 6 | | { |
| | 7 | | public class ScenesViewControllerShould |
| | 8 | | { |
| | 9 | | private IScenesViewController scenesViewController; |
| | 10 | | private Listener_Mock listenerMock; |
| | 11 | |
|
| | 12 | | [SetUp] |
| | 13 | | public void SetUp() |
| | 14 | | { |
| | 15 | | const string prefabAssetPath = |
| | 16 | | "Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuilderProjectsPanel/Prefabs/SceneCardView.prefab"; |
| 1 | 17 | | var prefab = AssetDatabase.LoadAssetAtPath<SceneCardView>(prefabAssetPath); |
| | 18 | |
|
| 1 | 19 | | scenesViewController = new ScenesViewController(prefab); |
| 1 | 20 | | listenerMock = new Listener_Mock(); |
| | 21 | |
|
| 1 | 22 | | scenesViewController.OnDeployedSceneRemoved += ((IDeployedSceneListener)listenerMock).OnSceneRemoved; |
| 1 | 23 | | scenesViewController.OnDeployedSceneAdded += ((IDeployedSceneListener)listenerMock).OnSceneAdded; |
| 1 | 24 | | scenesViewController.OnDeployedScenesSet += ((IDeployedSceneListener)listenerMock).OnSetScenes; |
| | 25 | |
|
| 1 | 26 | | scenesViewController.OnProjectSceneRemoved += ((IProjectSceneListener)listenerMock).OnSceneRemoved; |
| 1 | 27 | | scenesViewController.OnProjectSceneAdded += ((IProjectSceneListener)listenerMock).OnSceneAdded; |
| 1 | 28 | | scenesViewController.OnProjectScenesSet += ((IProjectSceneListener)listenerMock).OnSetScenes; |
| 1 | 29 | | } |
| | 30 | |
|
| | 31 | | [TearDown] |
| 2 | 32 | | public void TearDown() { scenesViewController.Dispose(); } |
| | 33 | |
|
| | 34 | | [Test] |
| | 35 | | public void CallListenerEventsCorrectly() |
| | 36 | | { |
| 1 | 37 | | scenesViewController.SetScenes(new ISceneData[] { new SceneData() { id = "1", isDeployed = true } }); |
| | 38 | |
|
| 1 | 39 | | Assert.AreEqual(1, listenerMock.deployedScenes.Count); |
| 1 | 40 | | Assert.AreEqual(1, listenerMock.setScenes.Count); |
| 1 | 41 | | Assert.AreEqual(0, listenerMock.addedScenes.Count); |
| 1 | 42 | | Assert.AreEqual(0, listenerMock.removedScenes.Count); |
| 1 | 43 | | Assert.AreEqual(0, listenerMock.projectScenes.Count); |
| | 44 | |
|
| 1 | 45 | | listenerMock.Clear(); |
| | 46 | |
|
| 1 | 47 | | scenesViewController.SetScenes(new ISceneData[] |
| | 48 | | { |
| | 49 | | new SceneData() { id = "1", isDeployed = true }, |
| | 50 | | new SceneData() { id = "2", isDeployed = true } |
| | 51 | | }); |
| | 52 | |
|
| 1 | 53 | | Assert.AreEqual(2, listenerMock.deployedScenes.Count); |
| 1 | 54 | | Assert.AreEqual(0, listenerMock.setScenes.Count); |
| 1 | 55 | | Assert.AreEqual(1, listenerMock.addedScenes.Count); |
| 1 | 56 | | Assert.AreEqual(0, listenerMock.removedScenes.Count); |
| 1 | 57 | | Assert.AreEqual(0, listenerMock.projectScenes.Count); |
| | 58 | |
|
| 1 | 59 | | listenerMock.Clear(); |
| | 60 | |
|
| 1 | 61 | | scenesViewController.SetScenes(new ISceneData[] |
| | 62 | | { |
| | 63 | | new SceneData() { id = "1", isDeployed = true }, |
| | 64 | | new SceneData() { id = "2", isDeployed = false } |
| | 65 | | }); |
| | 66 | |
|
| 1 | 67 | | Assert.AreEqual(1, listenerMock.deployedScenes.Count); |
| 1 | 68 | | Assert.AreEqual(1, listenerMock.setScenes.Count); |
| 1 | 69 | | Assert.AreEqual(0, listenerMock.addedScenes.Count); |
| 1 | 70 | | Assert.AreEqual(1, listenerMock.removedScenes.Count); |
| 1 | 71 | | Assert.AreEqual(1, listenerMock.projectScenes.Count); |
| | 72 | |
|
| 1 | 73 | | listenerMock.Clear(); |
| | 74 | |
|
| 1 | 75 | | scenesViewController.SetScenes(new ISceneData[] |
| | 76 | | { |
| | 77 | | new SceneData() { id = "1", isDeployed = true }, |
| | 78 | | new SceneData() { id = "2", isDeployed = false } |
| | 79 | | }); |
| | 80 | |
|
| 1 | 81 | | Assert.AreEqual(1, listenerMock.deployedScenes.Count); |
| 1 | 82 | | Assert.AreEqual(0, listenerMock.setScenes.Count); |
| 1 | 83 | | Assert.AreEqual(0, listenerMock.addedScenes.Count); |
| 1 | 84 | | Assert.AreEqual(0, listenerMock.removedScenes.Count); |
| 1 | 85 | | Assert.AreEqual(1, listenerMock.projectScenes.Count); |
| | 86 | |
|
| 1 | 87 | | listenerMock.Clear(); |
| | 88 | |
|
| 1 | 89 | | scenesViewController.SetScenes(new ISceneData[] |
| | 90 | | { |
| | 91 | | new SceneData() { id = "1", isDeployed = false }, |
| | 92 | | new SceneData() { id = "2", isDeployed = false } |
| | 93 | | }); |
| | 94 | |
|
| 1 | 95 | | Assert.AreEqual(0, listenerMock.deployedScenes.Count); |
| 1 | 96 | | Assert.AreEqual(0, listenerMock.setScenes.Count); |
| 1 | 97 | | Assert.AreEqual(1, listenerMock.addedScenes.Count); |
| 1 | 98 | | Assert.AreEqual(1, listenerMock.removedScenes.Count); |
| 1 | 99 | | Assert.AreEqual(2, listenerMock.projectScenes.Count); |
| 1 | 100 | | } |
| | 101 | | } |
| | 102 | |
|
| | 103 | | class Listener_Mock : IDeployedSceneListener, IProjectSceneListener |
| | 104 | | { |
| | 105 | | public List<string> setScenes = new List<string>(); |
| | 106 | | public List<string> addedScenes = new List<string>(); |
| | 107 | | public List<string> removedScenes = new List<string>(); |
| | 108 | |
|
| | 109 | | public List<string> deployedScenes = new List<string>(); |
| | 110 | | public List<string> projectScenes = new List<string>(); |
| | 111 | |
|
| | 112 | | public void Clear() |
| | 113 | | { |
| | 114 | | setScenes.Clear(); |
| | 115 | | addedScenes.Clear(); |
| | 116 | | removedScenes.Clear(); |
| | 117 | | } |
| | 118 | |
|
| | 119 | | void IDeployedSceneListener.OnSetScenes(Dictionary<string, ISceneCardView> scenes) |
| | 120 | | { |
| | 121 | | foreach (var view in scenes.Values) |
| | 122 | | { |
| | 123 | | setScenes.Add(view.sceneData.id); |
| | 124 | | deployedScenes.Add(view.sceneData.id); |
| | 125 | | } |
| | 126 | | } |
| | 127 | |
|
| | 128 | | void IDeployedSceneListener.OnSceneAdded(ISceneCardView scene) |
| | 129 | | { |
| | 130 | | addedScenes.Add(scene.sceneData.id); |
| | 131 | | deployedScenes.Add(scene.sceneData.id); |
| | 132 | | } |
| | 133 | |
|
| | 134 | | void IDeployedSceneListener.OnSceneRemoved(ISceneCardView scene) |
| | 135 | | { |
| | 136 | | removedScenes.Add(scene.sceneData.id); |
| | 137 | | deployedScenes.Remove(scene.sceneData.id); |
| | 138 | | } |
| | 139 | |
|
| | 140 | | void IProjectSceneListener.OnSetScenes(Dictionary<string, ISceneCardView> scenes) |
| | 141 | | { |
| | 142 | | foreach (var view in scenes.Values) |
| | 143 | | { |
| | 144 | | setScenes.Add(view.sceneData.id); |
| | 145 | | projectScenes.Add(view.sceneData.id); |
| | 146 | | } |
| | 147 | | } |
| | 148 | |
|
| | 149 | | void IProjectSceneListener.OnSceneAdded(ISceneCardView scene) |
| | 150 | | { |
| | 151 | | addedScenes.Add(scene.sceneData.id); |
| | 152 | | projectScenes.Add(scene.sceneData.id); |
| | 153 | | } |
| | 154 | |
|
| | 155 | | void IProjectSceneListener.OnSceneRemoved(ISceneCardView scene) |
| | 156 | | { |
| | 157 | | removedScenes.Add(scene.sceneData.id); |
| | 158 | | projectScenes.Remove(scene.sceneData.id); |
| | 159 | | } |
| | 160 | | } |
| | 161 | | } |