< Summary

Class:DCL.ECSComponents.Utils.UIFontUpdater
Assembly:DCL.ECSComponents.UIComponentsUtils
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/ECSComponents/UIComponentsUtils/UIFontUpdater.cs
Covered lines:15
Uncovered lines:3
Coverable lines:18
Total lines:44
Line coverage:83.3% (15 of 18)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
UIFontUpdater(...)0%110100%
Update(...)0%2.012088.89%
ChangeFont(...)0%2100%
Dispose()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/ECSComponents/UIComponentsUtils/UIFontUpdater.cs

#LineLine coverage
 1using UnityEngine.UIElements;
 2
 3namespace DCL.ECSComponents.Utils
 4{
 5    public struct UIFontUpdater
 6    {
 7        private Font? lastFont;
 8        private AssetPromise_Font lastPromise;
 9        private readonly VisualElement targetElement;
 10        private readonly AssetPromiseKeeper_Font fontPromiseKeeper;
 11
 12        public UIFontUpdater(VisualElement targetElement, AssetPromiseKeeper_Font fontPromiseKeeper)
 13        {
 414            this.targetElement = targetElement;
 415            this.fontPromiseKeeper = fontPromiseKeeper;
 416            lastFont = null;
 417            lastPromise = null;
 418        }
 19
 20        public void Update(Font newFont)
 21        {
 122            if (lastFont == newFont)
 023                return;
 24
 125            lastFont = newFont;
 126            var prevPromise = lastPromise;
 27
 128            lastPromise = new AssetPromise_Font(newFont.ToFontName());
 129            lastPromise.OnSuccessEvent += ChangeFont;
 130            fontPromiseKeeper.Keep(lastPromise);
 131            fontPromiseKeeper.Forget(prevPromise);
 132        }
 33
 34        private void ChangeFont(Asset_Font font)
 35        {
 036            targetElement.style.unityFont = font.font.sourceFontFile;
 037        }
 38
 39        public void Dispose()
 40        {
 241            fontPromiseKeeper.Forget(lastPromise);
 242        }
 43    }
 44}