< Summary

Information
Class: ValidateLib.TabularData.Validation.ValidationRules.PrimaryKeyRowValidationRule
Assembly: validatelib.dll
File(s): C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\TabularData\Validation\ValidationRules\PrimaryKeyRowValidationRule.cs
Line coverage
93%
Covered lines: 15
Uncovered lines: 1
Coverable lines: 16
Total lines: 46
Line coverage: 93.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
PrimaryKeyRowValidationRule()30
ValidateRow(...)130
GetPrimaryKeyValueString(...)221

File(s)

C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\TabularData\Validation\ValidationRules\PrimaryKeyRowValidationRule.cs

#LineLine coverage
 1using System.Text;
 2using ValidateLib.ErrorsAndWarnings.Errors;
 3using ValidateLib.ErrorsAndWarnings.Errors.ValidationErrors;
 4using ValidateLib.TabularData.AnnotatedTabularDataModel;
 5
 6namespace ValidateLib.TabularData.Validation.ValidationRules
 7{
 8    public class PrimaryKeyRowValidationRule : IRowValidationRule
 9    {
 110        Dictionary<string, bool> primaryKeyValues = new Dictionary<string, bool>();
 11        public List<Error> ValidateRow(Row annotatedRow)
 12        {
 113            List<Error> errors = new List<Error>();
 114            if (annotatedRow.primaryKeyDescriptor is null)
 115                return errors;
 16
 17
 118            string primaryKeyString = GetPrimaryKeyValueString(annotatedRow);
 19
 120            if (primaryKeyValues.ContainsKey(primaryKeyString))
 21            {
 122                errors.Add(ErrorFactory.GetDuplicateInPKValidationError(annotatedRow, GetPrimaryKeyValueString(annotated
 23            }
 24            else
 25            {
 126                primaryKeyValues[primaryKeyString] = true;
 27            }
 128            return errors;
 29        }
 30
 31        string GetPrimaryKeyValueString(Row annotatedRow, string delimiter = "")
 32        {
 133            StringBuilder primaryKey = new StringBuilder();
 134            foreach (var cell in annotatedRow.cells)
 35            {
 136                if (cell.column is null)
 037                    break;
 138                if (cell.column.isPartOfPrimaryKey)
 39                {
 140                    primaryKey.Append(delimiter + cell.stringValue);
 41                }
 42            }
 143            return primaryKey.ToString();
 44        }
 45    }
 46}