< Summary

Information
Class: ValidateLib.Metadata.Parsers.DescriptorParserBase<T>
Assembly: validatelib.dll
File(s): C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\Metadata\Parsers\DescriptorParserBase.cs
Line coverage
94%
Covered lines: 18
Uncovered lines: 1
Coverable lines: 19
Total lines: 58
Line coverage: 94.7%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBlocks covered Blocks not covered
DescriptorParserBase(...)60
ParseJToken(...)375

File(s)

C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\Metadata\Parsers\DescriptorParserBase.cs

#LineLine coverage
 1using Newtonsoft.Json.Linq;
 2using ValidateLib.ErrorsAndWarnings.Warnings;
 3using ValidateLib.Metadata.Descriptors;
 4using ValidateLib.Metadata.Descriptors.Interfaces;
 5
 6namespace ValidateLib.Metadata.Parsers
 7{
 8    /// <summary>
 9    /// Class that is defaul parser for descriptors.
 10    /// </summary>
 11    /// <typeparam name="T"> Derived descriptor we want to parse. </typeparam>
 12    public abstract class DescriptorParserBase<T> : IParser<T> where T : DescriptorBase, Descriptors.Interfaces.IParsabl
 13    {
 114        public T Descriptor { get; set; } = new T();
 115        public List<Warning> Warnings { get; set; }
 16
 117        public DescriptorParserBase(List<Warning> warnings, T? descriptor = null)
 18        {
 119            if (descriptor != null) Descriptor = descriptor;
 120            Warnings = warnings;
 121        }
 22        /// <summary>
 23        /// Parser json value object into a derived descriptor.
 24        /// </summary>
 25        /// <param name="jToken"> json value containing the object</param>
 26        /// <param name="propertyName"> name of the property containing this object, needed for error messages.</param>
 27        /// <returns> Descriptor parsed. </returns>
 28        public virtual T ParseJToken(JToken jToken, string propertyName)
 29        {
 130            if (jToken.Type != JTokenType.Object)
 31            {
 132                if (jToken.Type == JTokenType.String)
 033                    Warnings.Add(WarningFactory.GetObjectStringNormalizationProblemWarning(jToken.ToString(), propertyNa
 34                else
 135                    Warnings.Add(WarningFactory.GetObjectPropertyWrongValueWarning(jToken, propertyName));
 136                Descriptor.IsInvalid = true;
 137                return Descriptor;
 38            }
 39            else
 40            {
 141                foreach (JProperty property in jToken)
 42                {
 143                    var propertyParser = Descriptor.GetPropertyParser(property, Warnings);
 144                    if (propertyParser == null)
 45                    {
 146                        Warnings.Add(WarningFactory.GetUnknownPropertyWarning(property));
 47                    }
 48                    else
 49                    {
 150                        propertyParser.ParseProperty(property);
 51                    }
 52                }
 153                if (Descriptor is IRequiredPropertyValidatable) ((IRequiredPropertyValidatable)Descriptor).CheckRequired
 154                return Descriptor;
 55            }
 56        }
 57    }
 58}