< Summary

Class:ColorSelector
Assembly:AvatarEditorHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/AvatarEditorHUD/Scripts/ColorSelector.cs
Covered lines:27
Uncovered lines:14
Coverable lines:41
Total lines:101
Line coverage:65.8% (27 of 41)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ColorSelector()0%110100%
Populate(...)0%220100%
Cleanup()0%2.262060%
Select(...)0%220100%
SelectRandom()0%20400%
Select(...)0%330100%
ToggleClicked(...)0%12300%
GetColorToggle(...)0%330100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/AvatarEditorHUD/Scripts/ColorSelector.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using DCL.Helpers;
 3using UnityEngine;
 4using UnityEngine.UI;
 5
 6[RequireComponent(typeof(ToggleGroup))]     //Temporary untill ColorSelector and its dependencies are ported to UICompon
 7public class ColorSelector : MonoBehaviour, IColorSelector
 8{
 9    [SerializeField]
 10    private ColorToggle colorTogglePrefab;
 11
 12    [SerializeField]
 13    private RectTransform colorContainer;
 14
 15    public event System.Action<Color> OnColorSelectorChange;
 16
 17    private ColorToggle currentToggle;
 18
 25219    private List<ColorToggle> colorToggles = new List<ColorToggle>();
 20
 21    public void Populate(IReadOnlyList<Color> colors)
 22    {
 24023        int colorNumber = colors.Count;
 24
 528025        for (int i = 0; i < colorNumber; ++i)
 26        {
 240027            ColorToggle newToggle = Instantiate(colorTogglePrefab, colorContainer);
 240028            newToggle.Initialize(colors[i], false);
 240029            newToggle.OnClicked += ToggleClicked;
 240030            colorToggles.Add(newToggle);
 31        }
 24032    }
 33
 34    public void Cleanup()
 35    {
 38436        for (int i = 0; i < colorToggles.Count; i++)
 37        {
 038            DestroyImmediate(colorToggles[i]);
 39        }
 19240    }
 41
 42    public void Select(Color color)
 43    {
 42944        ColorToggle toggle = GetColorToggle(color);
 42945        if (toggle == currentToggle)
 37946            return;
 5047        Select(toggle);
 5048    }
 49
 50    public void SelectRandom()
 51    {
 052        if (colorToggles.Count == 0)
 053            return;
 54
 055        ColorToggle toggle = colorToggles[Random.Range(0, colorToggles.Count)];
 056        if (toggle == currentToggle)
 057            return;
 58
 059        Select(toggle);
 060        OnColorSelectorChange?.Invoke(currentToggle.color);
 061    }
 62
 63    private void Select(ColorToggle colorToggle)
 64    {
 5065        if (currentToggle != null)
 66        {
 1567            currentToggle.selected = false;
 68        }
 69
 5070        currentToggle = colorToggle;
 71
 5072        if (colorToggle)
 73        {
 3574            colorToggle.selected = true;
 75        }
 5076    }
 77
 78    private void ToggleClicked(ColorToggle toggle)
 79    {
 080        if (toggle == currentToggle)
 081            return;
 82
 083        Select(toggle);
 084        OnColorSelectorChange?.Invoke(currentToggle.color);
 085    }
 86
 87    private ColorToggle GetColorToggle(Color color)
 88    {
 42989        int colorTogglesCount = colorToggles.Count;
 839890        for (int i = 0; i < colorTogglesCount; i++)
 91        {
 382592            Color current = colorToggles[i].color;
 382593            if (color.AproxComparison(current))
 94            {
 5595                return colorToggles[i];
 96            }
 97        }
 98
 37499        return null;
 100    }
 101}