< Summary

Information
Class: Fluorite.Strainer.Services.Configuration.StrainerModuleTypeValidator
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Services/Configuration/StrainerModuleTypeValidator.cs
Line coverage
100%
Covered lines: 13
Uncovered lines: 0
Coverable lines: 13
Total lines: 28
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
GetValidModuleTypes(...)100%44100%

File(s)

/builds/fluorite/strainer/src/Strainer/Services/Configuration/StrainerModuleTypeValidator.cs

#LineLine coverage
 1using Fluorite.Strainer.Services.Modules;
 2
 3namespace Fluorite.Strainer.Services.Configuration;
 4
 5public class StrainerModuleTypeValidator : IStrainerModuleTypeValidator
 6{
 7    public ICollection<Type> GetValidModuleTypes(IReadOnlyCollection<Type> types)
 8    {
 109        Guard.Against.Null(types);
 10
 1011        var validModuleTypes = types
 812            .Where(type => !type.IsAbstract && typeof(IStrainerModule).IsAssignableFrom(type))
 1013            .ToList();
 14
 1015        var invalidModuleTypes = types.Except(validModuleTypes);
 1016        if (invalidModuleTypes.Any())
 17        {
 218            throw new InvalidOperationException(
 219                string.Format(
 220                    "Valid Strainer module must be a non-abstract class implementing `{0}`. " +
 221                    "Invalid types:\n{1}",
 222                    typeof(IStrainerModule).FullName,
 423                    string.Join("\n", invalidModuleTypes.Select(invalidType => invalidType.FullName))));
 24        }
 25
 826        return validModuleTypes;
 27    }
 28}