< Summary

Class:DCL.ECSRuntime.ECSComponentsFactory
Assembly:DCL.ECSRuntime.Factory
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSRuntime/Factory/ECSComponentsFactory.cs
Covered lines:5
Uncovered lines:3
Coverable lines:8
Total lines:65
Line coverage:62.5% (5 of 8)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ECSComponentsFactory()0%110100%
AddOrReplaceComponent[ModelType](...)0%110100%
RemoveComponent(...)0%2100%
CreateComponentBuilder[ModelType](...)0%110100%
BuildComponent[ModelType](...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSRuntime/Factory/ECSComponentsFactory.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL.Controllers;
 4
 5namespace DCL.ECSRuntime
 6{
 7    public class ECSComponentsFactory
 8    {
 9        public delegate IECSComponent ECSComponentBuilder(IParcelScene scene);
 10
 58011        private readonly Dictionary<int, ECSComponentBuilder> components =
 12            new Dictionary<int, ECSComponentBuilder>();
 13
 14        /// <summary>
 15        /// read only dictionary containing components builders
 16        /// </summary>
 017        public IReadOnlyDictionary<int, ECSComponentBuilder> componentBuilders => components;
 18
 19        /// <summary>
 20        /// put component to the components builder dictionary
 21        /// </summary>
 22        /// <param name="componentId"></param>
 23        /// <param name="deserializer"></param>
 24        /// <param name="handlerBuilder"></param>
 25        /// <typeparam name="ModelType"></typeparam>
 26        public void AddOrReplaceComponent<ModelType>(
 27            int componentId,
 28            Func<object, ModelType> deserializer,
 29            Func<IECSComponentHandler<ModelType>> handlerBuilder)
 30        {
 1031            components[componentId] = CreateComponentBuilder(deserializer, handlerBuilder);
 1032        }
 33
 34        /// <summary>
 35        /// Remove component to the components builder dictionary
 36        /// </summary>
 37        /// <param name="componentId"></param>
 38        public void RemoveComponent(int componentId)
 39        {
 040            components.Remove(componentId);
 041        }
 42
 43        /// <summary>
 44        /// creates a component builder
 45        /// </summary>
 46        /// <param name="deserializer"></param>
 47        /// <param name="handlerBuilder"></param>
 48        /// <typeparam name="ModelType"></typeparam>
 49        /// <returns>component builder</returns>
 50        public static ECSComponentBuilder CreateComponentBuilder<ModelType>(
 51            Func<object, ModelType> deserializer,
 52            Func<IECSComponentHandler<ModelType>> handlerBuilder)
 53        {
 1854            return (scene) => BuildComponent(scene, deserializer, handlerBuilder);
 55        }
 56
 57        private static IECSComponent BuildComponent<ModelType>(
 58            IParcelScene scene,
 59            Func<object, ModelType> deserializer,
 60            Func<IECSComponentHandler<ModelType>> handlerBuilder)
 61        {
 1262            return new ECSComponent<ModelType>(scene, deserializer, handlerBuilder);
 63        }
 64    }
 65}