< 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:8
Uncovered lines:0
Coverable lines:8
Total lines:63
Line coverage:100% (8 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%110100%
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;
 3
 4namespace DCL.ECSRuntime
 5{
 6    public class ECSComponentsFactory
 7    {
 8        public delegate IECSComponent ECSComponentBuilder();
 9
 8210        private readonly Dictionary<int, ECSComponentBuilder> components =
 11            new Dictionary<int, ECSComponentBuilder>();
 12
 13        /// <summary>
 14        /// read only dictionary containing components builders
 15        /// </summary>
 8216        public IReadOnlyDictionary<int, ECSComponentBuilder> componentBuilders => components;
 17
 18        /// <summary>
 19        /// put component to the components builder dictionary
 20        /// </summary>
 21        /// <param name="componentId"></param>
 22        /// <param name="deserializer"></param>
 23        /// <param name="handlerBuilder"></param>
 24        /// <typeparam name="ModelType"></typeparam>
 25        public void AddOrReplaceComponent<ModelType>(
 26            int componentId,
 27            Func<object, ModelType> deserializer,
 28            Func<IECSComponentHandler<ModelType>> handlerBuilder)
 29        {
 150330            components[componentId] = CreateComponentBuilder(deserializer, handlerBuilder);
 150331        }
 32
 33        /// <summary>
 34        /// Remove component to the components builder dictionary
 35        /// </summary>
 36        /// <param name="componentId"></param>
 37        public void RemoveComponent(int componentId)
 38        {
 7639            components.Remove(componentId);
 7640        }
 41
 42        /// <summary>
 43        /// creates a component builder
 44        /// </summary>
 45        /// <param name="deserializer"></param>
 46        /// <param name="handlerBuilder"></param>
 47        /// <typeparam name="ModelType"></typeparam>
 48        /// <returns>component builder</returns>
 49        public static ECSComponentBuilder CreateComponentBuilder<ModelType>(
 50            Func<object, ModelType> deserializer,
 51            Func<IECSComponentHandler<ModelType>> handlerBuilder)
 52        {
 152353            return () => BuildComponent(deserializer, handlerBuilder);
 54        }
 55
 56        private static IECSComponent BuildComponent<ModelType>(
 57            Func<object, ModelType> deserializer,
 58            Func<IECSComponentHandler<ModelType>> handlerBuilder)
 59        {
 90660            return new ECSComponent<ModelType>(deserializer, handlerBuilder);
 61        }
 62    }
 63}