< Summary

Class:DCL.AssetPromise_Font
Assembly:AssetPromiseKeeper
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/AssetManager/Font/AssetPromise_Font.cs
Covered lines:31
Uncovered lines:0
Coverable lines:31
Total lines:81
Line coverage:100% (31 of 31)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
AssetPromise_Font(...)0%110100%
OnAfterLoadOrReuse()0%110100%
OnBeforeLoadOrReuse()0%110100%
OnCancelLoading()0%110100%
Cleanup()0%110100%
OnLoad(...)0%2.032080%
>c__DisplayClass9_0/<<OnLoad()0%660100%
AddToLibrary()0%2.062075%
GetId()0%110100%
CleanCT()0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/AssetManager/Font/AssetPromise_Font.cs

#LineLine coverage
 1using Cysharp.Threading.Tasks;
 2using MainScripts.DCL.Controllers.AssetManager;
 3using MainScripts.DCL.Controllers.AssetManager.Font;
 4using System;
 5using System.Threading;
 6
 7namespace DCL
 8{
 9    public class AssetPromise_Font : AssetPromise<Asset_Font>
 10    {
 11        private readonly AssetSource permittedSources;
 12        private readonly string src;
 13        private CancellationTokenSource cancellationTokenSource;
 14
 15        private Service<IFontAssetResolver> fontResolver;
 16
 3717        public AssetPromise_Font(string src, AssetSource permittedSources = AssetSource.ALL)
 18        {
 3719            this.permittedSources = permittedSources;
 3720            this.src = src;
 3721        }
 22
 3523        protected override void OnAfterLoadOrReuse() { }
 24
 3925        protected override void OnBeforeLoadOrReuse() { }
 26
 27        protected override void OnCancelLoading()
 28        {
 429            CleanCT();
 430        }
 31
 32        public override void Cleanup()
 33        {
 3834            base.Cleanup();
 3835            CleanCT();
 3836        }
 37
 38        protected override void OnLoad(Action OnSuccess, Action<Exception> OnFail)
 39        {
 40            //Adding a null-check here. If the promise is kept while active, we should not fire it up again
 3241            if (cancellationTokenSource != null) return;
 42
 3243            cancellationTokenSource = new CancellationTokenSource();
 3244            LaunchRequest().Forget();
 45
 46            async UniTaskVoid LaunchRequest()
 47            {
 9648                FontResponse result = await fontResolver.Ref.GetFontAsync(permittedSources, src, cancellationTokenSource
 49
 3250                if (result.IsSuccess)
 51                {
 2852                    FontSuccessResponse successResponse = result.GetSuccessResponse();
 2853                    asset.font = successResponse.Font;
 2854                    OnSuccess?.Invoke();
 55                }
 456                else { OnFail?.Invoke(result.GetFailResponse().Exception); }
 3257            }
 3258        }
 59
 60        protected override bool AddToLibrary()
 61        {
 2862            if (!library.Add(asset)) { return false; }
 63
 2864            asset = library.Get(asset.id);
 2865            return true;
 66        }
 67
 68        public override object GetId() =>
 21769            src;
 70
 71        private void CleanCT()
 72        {
 4273            if (cancellationTokenSource != null)
 74            {
 2975                cancellationTokenSource.Cancel();
 2976                cancellationTokenSource.Dispose();
 2977                cancellationTokenSource = null;
 78            }
 4279        }
 80    }
 81}