< Summary

Class:UIComponents.CollapsableSortedList.CollapsableListToggleButton
Assembly:UIComponents
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/UIComponents/Scripts/Components/CollapsableSortedList/CollapsableListToggleButton.cs
Covered lines:15
Uncovered lines:6
Coverable lines:21
Total lines:60
Line coverage:71.4% (15 of 21)
Covered branches:0
Total branches:0
Covered methods:3
Total methods:5
Method coverage:60% (3 of 5)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Awake()0%3.043083.33%
RefreshControl()0%2100%
Toggle(...)0%3.023087.5%
SetInteractability(...)0%330100%
Toggle()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/UIComponents/Scripts/Components/CollapsableSortedList/CollapsableListToggleButton.cs

#LineLine coverage
 1using DCL.Helpers;
 2using System;
 3using UnityEngine;
 4using UnityEngine.UI;
 5
 6namespace UIComponents.CollapsableSortedList
 7{
 8    public class CollapsableListToggleButton : BaseComponentView
 9    {
 10        [SerializeField] private bool toggleOnAwake;
 11        [SerializeField] private Button toggleButton;
 12        [SerializeField] private Transform toggleButtonIcon;
 13        [SerializeField] private Image toggleImage;
 14        [SerializeField] private RectTransform containerRectTransform;
 15        [SerializeField] private CollapsableListToggleButtonModel model;
 16        [SerializeField] private Color disabledColor;
 17
 18        public event Action<bool> OnToggled;
 19
 20        private Color originalColor;
 21
 22        public override void Awake()
 23        {
 8324            base.Awake();
 25
 8326            originalColor = toggleImage?.color ?? Color.black;
 8327            toggleButton.onClick.AddListener(Toggle);
 28
 8329            if (toggleOnAwake)
 030                Toggle();
 8331        }
 32
 33        public override void RefreshControl()
 34        {
 035            Toggle(model.isToggled);
 036        }
 37
 38        public void Toggle(bool toggled)
 39        {
 440            containerRectTransform.gameObject.SetActive(toggled);
 441            var absScale = Mathf.Abs(toggleButtonIcon.localScale.y);
 442            var scale = toggled ? absScale : -absScale;
 443            toggleButtonIcon.localScale = new Vector3(toggleButtonIcon.localScale.x, scale, 1f);
 444            Utils.ForceRebuildLayoutImmediate(containerRectTransform);
 445            model.isToggled = toggled;
 446            OnToggled?.Invoke(toggled);
 047        }
 48
 49        public void SetInteractability(bool interactable)
 50        {
 651            toggleButton.interactable = interactable;
 652            toggleImage.color = interactable ? originalColor : disabledColor;
 653        }
 54
 55        private void Toggle()
 56        {
 057            Toggle(!containerRectTransform.gameObject.activeSelf);
 058        }
 59    }
 60}