< Summary

Information
Class: Ice.CompositeSliceLoader
Assembly: Ice
File(s): /_/csharp/src/Ice/CompositeSliceLoader.cs
Tag: 91_21789722663
Line coverage
100%
Covered lines: 7
Uncovered lines: 0
Coverable lines: 7
Total lines: 38
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage
100%
Covered methods: 3
Total methods: 3
Method coverage: 100%

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
add(...)100%11100%
newInstance(...)100%44100%

File(s)

/_/csharp/src/Ice/CompositeSliceLoader.cs

#LineLine coverage
 1// Copyright (c) ZeroC, Inc.
 2
 3#nullable enable
 4
 5namespace Ice;
 6
 7/// <summary>
 8/// Implements <see cref="SliceLoader" /> by combining multiple SliceLoader instances.
 9/// </summary>
 10public sealed class CompositeSliceLoader : SliceLoader
 11{
 12    private readonly List<SliceLoader> _loaders;
 13
 14    /// <summary>
 15    /// Initializes a new instance of the <see cref="CompositeSliceLoader" /> class.
 16    /// </summary>
 17    /// <param name="loaders">The initial Slice loaders to use.</param>
 118    public CompositeSliceLoader(params SliceLoader[] loaders) => _loaders = new List<SliceLoader>(loaders);
 19
 20    /// <summary>
 21    /// Adds a <see cref="SliceLoader" /> instance to this <see cref="CompositeSliceLoader" />.
 22    /// </summary>
 23    /// <param name="loader">The Slice loader to add.</param>
 124    public void add(SliceLoader loader) => _loaders.Add(loader);
 25
 26    /// <inheritdoc />
 27    public object? newInstance(string typeId)
 28    {
 129        foreach (SliceLoader loader in _loaders)
 30        {
 131            if (loader.newInstance(typeId) is object instance)
 32            {
 133                return instance;
 34            }
 35        }
 136        return null;
 137    }
 38}