< Summary

Class:DCL.ECSRuntime.ECSComponentsGroup[T1,T2]
Assembly:DCL.ECSRuntime.ComponentsGroup
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSRuntime/ComponentsGroup/ECSComponentsGroup.cs
Covered lines:19
Uncovered lines:0
Coverable lines:19
Total lines:60
Line coverage:100% (19 of 19)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ECSComponentsGroup(...)0%110100%
DCL.ECSRuntime.IECSReadOnlyComponentsGroup<T1,T2>.get_group()0%110100%
Match(...)0%220100%
Match(...)0%220100%
Add(...)0%110100%
Remove(...)0%3.023087.5%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSRuntime/ComponentsGroup/ECSComponentsGroup.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using DCL.Controllers;
 3using DCL.Models;
 4using UnityEngine.Assertions;
 5
 6namespace DCL.ECSRuntime
 7{
 8    public class ECSComponentsGroup<T1, T2> : IECSComponentsGroup, IECSReadOnlyComponentsGroup<T1, T2>
 9    {
 10        private readonly IECSComponent component1;
 11        private readonly IECSComponent component2;
 1112        private readonly List<ECSComponentsGroupData<T1, T2>> list = new List<ECSComponentsGroupData<T1, T2>>();
 13
 6014        IReadOnlyList<ECSComponentsGroupData<T1, T2>> IECSReadOnlyComponentsGroup<T1, T2>.group => list;
 15
 1116        public ECSComponentsGroup(IECSComponent component1, IECSComponent component2)
 17        {
 1118            Assert.IsNotNull(component1, $"component1 must not be null");
 1119            Assert.IsNotNull(component2, $"component2 must not be null");
 1120            this.component1 = component1;
 1121            this.component2 = component2;
 1122        }
 23
 24        bool IECSComponentsGroup.Match(IParcelScene scene, IDCLEntity entity)
 25        {
 3726            return component1.HasComponent(scene, entity) && component2.HasComponent(scene, entity);
 27        }
 28
 29        bool IECSComponentsGroup.Match(IECSComponent component)
 30        {
 5531            return component == component1 || component == component2;
 32        }
 33
 34        void IECSComponentsGroup.Add(IParcelScene scene, IDCLEntity entity)
 35        {
 1636            ECSComponentsGroupData<T1, T2> data = new ECSComponentsGroupData<T1, T2>
 37            (
 38                scene: scene,
 39                entity: entity,
 40                componentData1: ((ECSComponent<T1>)component1).Get(scene, entity),
 41                componentData2: ((ECSComponent<T2>)component2).Get(scene, entity)
 42            );
 1643            list.Add(data);
 1644        }
 45
 46        bool IECSComponentsGroup.Remove(IDCLEntity entity)
 47        {
 3048            for (int i = 0; i < list.Count; i++)
 49            {
 350                ECSComponentsGroupData<T1, T2> data = list[i];
 351                if (data.entity != entity)
 52                    continue;
 53
 354                list.RemoveAt(i);
 355                return true;
 56            }
 1257            return false;
 58        }
 59    }
 60}