< Summary

Information
Class: ValidateLib.Metadata.Parsers.NaturalLanguageParser
Assembly: validatelib.dll
File(s): C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\Metadata\Parsers\NaturalLanguageParser.cs
Line coverage
95%
Covered lines: 19
Uncovered lines: 1
Coverable lines: 20
Total lines: 53
Line coverage: 95%
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
NaturalLanguageParser(...)30
ParseJToken(...)320
GetValidValuesFromArray(...)210

File(s)

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

#LineLine coverage
 1using Newtonsoft.Json.Linq;
 2using ValidateLib.ErrorsAndWarnings.Warnings;
 3using ValidateLib.Metadata.Properties;
 4using ValidateLib.UtilityClasses;
 5
 6namespace ValidateLib.Metadata.Parsers
 7{
 8    internal class NaturalLanguageParser : IParser<NaturalLanguageProperty>
 9    {
 010        public NaturalLanguageProperty Descriptor { get => throw new NotImplementedException(); set => throw new NotImpl
 111        public List<Warning> Warnings { get; set; }
 112        public NaturalLanguageParser(List<Warning> warnings)
 13        {
 114            Warnings = warnings;
 115        }
 16
 17        public NaturalLanguageProperty ParseJToken(JToken jToken, string propertyName)
 18        {
 119            if (jToken.Type != JTokenType.Object)
 20            {
 121                Warnings.Add(WarningFactory.GetLinkPropertyNotAbsoluteWarning(jToken, propertyName));
 122                return new NaturalLanguageProperty(new Dictionary<string, string[]>());
 23            }
 24            else
 25            {
 126                var objectValue = (JObject)jToken;
 127                var titlesMap = new Dictionary<string, string[]>();
 128                foreach (var jproperty in objectValue.Properties())
 29                {
 130                    if (jproperty.Value.Type != JTokenType.Array)
 31                        continue;
 132                    if (!LanguageUtilityClass.IsCorrectLanguageCode(jproperty.Name))
 33                        continue;
 34
 135                    titlesMap[jproperty.Name] = GetValidValuesFromArray((JArray)jproperty.Value, propertyName);
 36
 37                }
 138                return new NaturalLanguageProperty(titlesMap);
 39            }
 40        }
 41
 42        string[] GetValidValuesFromArray(JArray array, string propertyName)
 43        {
 144            List<string> ValidValues = new List<string>();
 145            foreach (var value in array)
 46            {
 147                if (value.Type == JTokenType.String) ValidValues.Add(value.ToString());
 148                else Warnings.Add(WarningFactory.GetNaturalLanguageWrongValue(value, propertyName));
 49            }
 150            return ValidValues.ToArray();
 51        }
 52    }
 53}