< Summary

Class:DCL.ECSRuntime.ECSComponentsGroupWithout[T1,T2]
Assembly:DCL.ECSRuntime.ComponentsGroup
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSRuntime/ComponentsGroup/ECSComponentsGroupWithoutCouple.cs
Covered lines:32
Uncovered lines:2
Coverable lines:34
Total lines:98
Line coverage:94.1% (32 of 34)
Covered branches:0
Total branches:0
Covered methods:10
Total methods:10
Method coverage:100% (10 of 10)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ECSComponentsGroupWithout(...)0%110100%
DCL.ECSRuntime.IECSReadOnlyComponentsGroup<T1,T2>.get_group()0%110100%
MatchEntity(...)0%330100%
ShouldAddOnComponentAdd(...)0%220100%
ShouldRemoveOnComponentRemove(...)0%220100%
ShouldAddOnComponentRemove(...)0%110100%
ShouldRemoveOnComponentAdd(...)0%110100%
Add(...)0%110100%
Remove(...)0%3.143075%
Update(...)0%4.034087.5%

File(s)

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

#LineLine coverage
 1using DCL.Controllers;
 2using DCL.Models;
 3using System.Collections.Generic;
 4using UnityEngine.Assertions;
 5
 6namespace DCL.ECSRuntime
 7{
 8    public class ECSComponentsGroupWithout<T1, T2> : IECSComponentsGroup, IECSReadOnlyComponentsGroup<T1, T2>
 9    {
 10        private readonly IECSComponent component1;
 11        private readonly IECSComponent component2;
 12        private readonly IECSComponent excludedComponent;
 2613        private readonly List<ECSComponentsGroupData<T1, T2>> list = new List<ECSComponentsGroupData<T1, T2>>();
 14
 1115        IReadOnlyList<ECSComponentsGroupData<T1, T2>> IECSReadOnlyComponentsGroup<T1, T2>.group => list;
 16
 2617        public ECSComponentsGroupWithout(IECSComponent component1, IECSComponent component2, IECSComponent excludedCompo
 18        {
 2619            Assert.IsNotNull(component1, $"component1 must not be null");
 2620            Assert.IsNotNull(component2, $"component2 must not be null");
 2621            Assert.IsNotNull(excludedComponent, $"excludedComponent must not be null");
 2622            this.component1 = component1;
 2623            this.component2 = component2;
 2624            this.excludedComponent = excludedComponent;
 2625        }
 26
 27        bool IECSComponentsGroup.MatchEntity(IParcelScene scene, IDCLEntity entity)
 28        {
 3229            return component1.HasComponent(scene, entity)
 30                   && component2.HasComponent(scene, entity)
 31                   && !excludedComponent.HasComponent(scene, entity);
 32        }
 33
 34        bool IECSComponentsGroup.ShouldAddOnComponentAdd(IECSComponent component)
 35        {
 5636            return component == component1 || component == component2;
 37        }
 38
 39        bool IECSComponentsGroup.ShouldRemoveOnComponentRemove(IECSComponent component)
 40        {
 241            return component == component1 || component == component2;
 42        }
 43
 44        bool IECSComponentsGroup.ShouldAddOnComponentRemove(IECSComponent component)
 45        {
 646            return component == excludedComponent;
 47        }
 48
 49        bool IECSComponentsGroup.ShouldRemoveOnComponentAdd(IECSComponent component)
 50        {
 651            return component == excludedComponent;
 52        }
 53
 54        void IECSComponentsGroup.Add(IParcelScene scene, IDCLEntity entity)
 55        {
 1056            ((ECSComponent<T1>)component1).TryGet(scene, entity.entityId, out var componentData1);
 1057            ((ECSComponent<T2>)component2).TryGet(scene, entity.entityId, out var componentData2);
 58
 1059            ECSComponentsGroupData<T1, T2> data = new ECSComponentsGroupData<T1, T2>
 60            (
 61                scene: scene,
 62                entity: entity,
 63                componentData1: componentData1,
 64                componentData2: componentData2
 65            );
 66
 1067            list.Add(data);
 1068        }
 69
 70        bool IECSComponentsGroup.Remove(IDCLEntity entity)
 71        {
 1672            for (int i = 0; i < list.Count; i++)
 73            {
 874                ECSComponentsGroupData<T1, T2> data = list[i];
 75
 876                if (data.entity != entity)
 77                    continue;
 78
 879                list.RemoveAt(i);
 880                return true;
 81            }
 82
 083            return false;
 84        }
 85
 86        void IECSComponentsGroup.Update(IParcelScene scene, IDCLEntity entity, IECSComponent component)
 87        {
 788            long entityId = entity.entityId;
 789            if (!Utils.TryGetDataIndex(list, entity, out int index))
 090                return;
 91
 792            if (Utils.TryGetComponentData<T1>(scene, entityId, component1, component, out var d1))
 193                list[index] = list[index].With(d1);
 794            if (Utils.TryGetComponentData<T2>(scene, entityId, component2, component, out var d2))
 695                list[index] = list[index].With(d2);
 796        }
 97    }
 98}