< 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/ECSComponentsGroupCouple.cs
Covered lines:30
Uncovered lines:2
Coverable lines:32
Total lines:93
Line coverage:93.7% (30 of 32)
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
ECSComponentsGroup(...)0%110100%
DCL.ECSRuntime.IECSReadOnlyComponentsGroup<T1,T2>.get_group()0%110100%
MatchEntity(...)0%220100%
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/ECSComponentsGroupCouple.cs

#LineLine coverage
 1using DCL.Controllers;
 2using DCL.Models;
 3using System.Collections.Generic;
 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;
 4112        private readonly List<ECSComponentsGroupData<T1, T2>> list = new List<ECSComponentsGroupData<T1, T2>>();
 13
 3514        IReadOnlyList<ECSComponentsGroupData<T1, T2>> IECSReadOnlyComponentsGroup<T1, T2>.group => list;
 15
 4116        public ECSComponentsGroup(IECSComponent component1, IECSComponent component2)
 17        {
 4118            Assert.IsNotNull(component1, $"component1 must not be null");
 4119            Assert.IsNotNull(component2, $"component2 must not be null");
 4120            this.component1 = component1;
 4121            this.component2 = component2;
 4122        }
 23
 24        bool IECSComponentsGroup.MatchEntity(IParcelScene scene, IDCLEntity entity)
 25        {
 4026            return component1.HasComponent(scene, entity) && component2.HasComponent(scene, entity);
 27        }
 28
 29        bool IECSComponentsGroup.ShouldAddOnComponentAdd(IECSComponent component)
 30        {
 10731            return component == component1 || component == component2;
 32        }
 33
 34        bool IECSComponentsGroup.ShouldRemoveOnComponentRemove(IECSComponent component)
 35        {
 336            return component == component1 || component == component2;
 37        }
 38
 39        bool IECSComponentsGroup.ShouldAddOnComponentRemove(IECSComponent component)
 40        {
 1041            return false;
 42        }
 43
 44        bool IECSComponentsGroup.ShouldRemoveOnComponentAdd(IECSComponent component)
 45        {
 146            return false;
 47        }
 48
 49        void IECSComponentsGroup.Add(IParcelScene scene, IDCLEntity entity)
 50        {
 1951            ((ECSComponent<T1>)component1).TryGet(scene, entity.entityId, out var componentData1);
 1952            ((ECSComponent<T2>)component2).TryGet(scene, entity.entityId, out var componentData2);
 53
 1954            ECSComponentsGroupData<T1, T2> data = new ECSComponentsGroupData<T1, T2>
 55            (
 56                scene: scene,
 57                entity: entity,
 58                componentData1: componentData1,
 59                componentData2: componentData2
 60            );
 61
 1962            list.Add(data);
 1963        }
 64
 65        bool IECSComponentsGroup.Remove(IDCLEntity entity)
 66        {
 2867            for (int i = 0; i < list.Count; i++)
 68            {
 1469                ECSComponentsGroupData<T1, T2> data = list[i];
 70
 1471                if (data.entity != entity)
 72                    continue;
 73
 1474                list.RemoveAt(i);
 1475                return true;
 76            }
 77
 078            return false;
 79        }
 80
 81        void IECSComponentsGroup.Update(IParcelScene scene, IDCLEntity entity, IECSComponent component)
 82        {
 6083            long entityId = entity.entityId;
 6084            if (!Utils.TryGetDataIndex(list, entity, out int index))
 085                return;
 86
 6087            if (Utils.TryGetComponentData<T1>(scene, entityId, component1, component, out var d1))
 3288                list[index] = list[index].With(d1);
 6089            if (Utils.TryGetComponentData<T2>(scene, entityId, component2, component, out var d2))
 2490                list[index] = list[index].With(d2);
 6091        }
 92    }
 93}