< Summary

Class:AssetPromiseKeeper_Mock_Tests.BlockedAndMasterPromisesShould
Assembly:AssetPromiseKeeper_Basic_Tests
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/AssetManager/Common/Mock/Tests/BlockedAndMasterPromisesShould.cs
Covered lines:79
Uncovered lines:0
Coverable lines:79
Total lines:130
Line coverage:100% (79 of 79)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ResolveCorrectlyIfKeepIsCalledWhenBlockedPromisesAreBeingProcessed()0%10100100%
FailCorrectlyIfMasterPromiseFails()0%660100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/AssetManager/Common/Mock/Tests/BlockedAndMasterPromisesShould.cs

#LineLine coverage
 1using DCL;
 2using System.Collections;
 3using System.Collections.Generic;
 4using UnityEngine;
 5using UnityEngine.Assertions;
 6using UnityEngine.TestTools;
 7
 8namespace AssetPromiseKeeper_Mock_Tests
 9{
 10    public class BlockedAndMasterPromisesShould
 11    {
 12        [UnityTest]
 13        public IEnumerator ResolveCorrectlyIfKeepIsCalledWhenBlockedPromisesAreBeingProcessed()
 14        {
 115            Time.maximumDeltaTime = 0.016f;
 16
 117            var library = new AssetLibrary_Mock();
 118            var keeper = new AssetPromiseKeeper_Mock(library);
 19
 120            string id = "1";
 21
 122            var promList = new List<AssetPromise_Mock>();
 23
 124            var mischievousPromise = new AssetPromise_Mock();
 125            mischievousPromise.idGenerator = id;
 126            mischievousPromise.loadTime = 0.01f;
 27
 128            var mischievousPromise2 = new AssetPromise_Mock();
 129            mischievousPromise2.idGenerator = id;
 130            mischievousPromise2.loadTime = 0.01f;
 31
 10032            for (int i = 0; i < 49; i++)
 33            {
 4934                AssetPromise_Mock tmpProm = new AssetPromise_Mock();
 4935                tmpProm.idGenerator = id;
 4936                tmpProm.loadTime = 0.01f;
 4937                keeper.Keep(tmpProm);
 4938                promList.Add(tmpProm);
 39            }
 40
 10041            for (int i = 0; i < promList.Count; i++)
 42            {
 4943                AssetPromise_Mock prom = promList[i];
 4944                yield return prom;
 45
 4946                if (i == 25)
 47                {
 148                    keeper.Keep(mischievousPromise);
 149                    keeper.Keep(mischievousPromise2);
 250                    yield return new DCL.WaitUntil(() => mischievousPromise.keepWaiting == false, 2.0f);
 251                    yield return new DCL.WaitUntil(() => mischievousPromise2.keepWaiting == false, 2.0f);
 152                    Assert.IsFalse(mischievousPromise.keepWaiting, "While blocked promises are being resolved, new promi
 153                    Assert.IsFalse(mischievousPromise2.keepWaiting, "While blocked promises are being resolved, new prom
 54                }
 55            }
 156        }
 57
 58        [UnityTest]
 59        public IEnumerator FailCorrectlyIfMasterPromiseFails()
 60        {
 161            var library = new AssetLibrary_Mock();
 162            var keeper = new AssetPromiseKeeper_Mock(library);
 63
 164            string id = "1";
 165            AssetPromise_Mock prom = new AssetPromise_Mock();
 166            prom.idGenerator = id;
 167            Asset_Mock asset = null;
 168            bool failEventCalled1 = false;
 169            prom.OnSuccessEvent += (x) => { asset = x; };
 370            prom.OnFailEvent += (x) => { failEventCalled1 = true; };
 71
 172            prom.forceFail = true;
 73
 174            AssetPromise_Mock prom2 = new AssetPromise_Mock();
 175            prom2.idGenerator = id;
 176            Asset_Mock asset2 = null;
 177            bool failEventCalled2 = false;
 178            prom2.OnSuccessEvent += (x) => { asset2 = x; };
 379            prom2.OnFailEvent += (x) => { failEventCalled2 = true; };
 80
 181            AssetPromise_Mock prom3 = new AssetPromise_Mock();
 182            prom3.idGenerator = id;
 183            Asset_Mock asset3 = null;
 184            bool failEventCalled3 = false;
 185            prom3.OnSuccessEvent += (x) => { asset3 = x; };
 386            prom3.OnFailEvent += (x) => { failEventCalled3 = true; };
 87
 188            keeper.Keep(prom);
 189            keeper.Keep(prom2);
 190            keeper.Keep(prom3);
 91
 192            Assert.AreEqual(3, keeper.waitingPromisesCount);
 93
 194            yield return prom;
 195            yield return prom2;
 196            yield return prom3;
 97
 198            Assert.AreEqual(0, keeper.waitingPromisesCount);
 99
 1100            Assert.AreNotEqual(AssetPromiseState.FINISHED, prom.state);
 1101            Assert.AreNotEqual(AssetPromiseState.FINISHED, prom2.state);
 1102            Assert.AreNotEqual(AssetPromiseState.FINISHED, prom3.state);
 103
 1104            Assert.IsTrue(failEventCalled1);
 1105            Assert.IsTrue(failEventCalled2);
 1106            Assert.IsTrue(failEventCalled3);
 107
 1108            Assert.IsFalse(asset != null);
 1109            Assert.IsFalse(asset2 != null);
 1110            Assert.IsFalse(asset3 != null);
 111
 1112            Assert.IsFalse(library.Contains(asset));
 1113            Assert.AreNotEqual(1, library.masterAssets.Count);
 114
 1115            AssetPromise_Mock prom4 = new AssetPromise_Mock();
 1116            prom4.idGenerator = id;
 1117            Asset_Mock asset4 = null;
 3118            prom4.OnSuccessEvent += (x) => { asset4 = x; };
 119
 1120            keeper.Keep(prom4);
 121
 1122            yield return prom4;
 123
 1124            Assert.IsTrue(asset4 != null);
 1125            Assert.IsTrue(library.Contains(asset4));
 1126            Assert.AreEqual(1, library.masterAssets.Count);
 1127        }
 128
 129    }
 130}