示例#1
0
        public void SyntaxNote_Paired()
        {
            //If any element specified in the relational condition is present, then all must be present

            //true
            List <string> content1 = new List <string>()
            {
                "01", "02", "03", "04", "05", "06"
            };
            List <string> content2 = new List <string>()
            {
                "01",
            };
            List <string> content3 = new List <string>()
            {
                "01", "", "", "", "", "06"
            };

            //false
            List <string> content4 = new List <string>()
            {
                "01", "02", "03", "", "05", "06"
            };
            List <string> content5 = new List <string>()
            {
                "01", "", "03", "04"
            };
            List <string> content6 = new List <string>()
            {
                "01", "", "03"
            };

            var syntaxNote = SyntaxNoteFactory.GetSyntaxNote("P020304");

            bool res1 = syntaxNote.IsValid(content1.ToArray());
            bool res2 = syntaxNote.IsValid(content2.ToArray());
            bool res3 = syntaxNote.IsValid(content3.ToArray());
            bool res4 = syntaxNote.IsValid(content4.ToArray());
            bool res5 = syntaxNote.IsValid(content5.ToArray());
            bool res6 = syntaxNote.IsValid(content6.ToArray());

            Assert.IsTrue(res1);
            Assert.IsTrue(res2);
            Assert.IsTrue(res3);

            Assert.IsFalse(res4);
            Assert.IsFalse(res5);
            Assert.IsFalse(res6);
        }
示例#2
0
        public void SyntaxNote_Exclusions()
        {
            //Not more than one can be present

            //true
            List <string> content1 = new List <string>()
            {
                "01", "02", "", "", "05", "06"
            };
            List <string> content2 = new List <string>()
            {
                "01", "02"
            };
            List <string> content3 = new List <string>()
            {
                "01", "", "", "04", "", "06"
            };
            List <string> content4 = new List <string>()
            {
                "01", "", "", "", "05", "06"
            };
            List <string> content5 = new List <string>()
            {
                "01"
            };

            //false
            List <string> content6 = new List <string>()
            {
                "01", "02", "03", "", "05", "06"
            };

            var syntaxNote = SyntaxNoteFactory.GetSyntaxNote("E020304");

            bool res1 = syntaxNote.IsValid(content1.ToArray());
            bool res2 = syntaxNote.IsValid(content2.ToArray());
            bool res3 = syntaxNote.IsValid(content3.ToArray());
            bool res4 = syntaxNote.IsValid(content4.ToArray());
            bool res5 = syntaxNote.IsValid(content5.ToArray());
            bool res6 = syntaxNote.IsValid(content6.ToArray());

            Assert.IsTrue(res1);
            Assert.IsTrue(res2);
            Assert.IsTrue(res3);
            Assert.IsTrue(res4);
            Assert.IsTrue(res5);
            Assert.IsFalse(res6);
        }
示例#3
0
        public void SyntaxNote_ListConditional()
        {
            //If the first element specified is present, then at least one of the remaining elements must be present

            //true
            List <string> content1 = new List <string>()
            {
                "01", "02", "03", "04", "", "06"
            };
            List <string> content2 = new List <string>()
            {
                "01", "02"
            };
            List <string> content3 = new List <string>()
            {
                "01", "02", "", "04", "", "06"
            };

            //false
            List <string> content4 = new List <string>()
            {
                "01", "02", "03", "", "", "", "07"
            };
            List <string> content5 = new List <string>()
            {
                "01", "02", "03"
            };

            var syntaxNote = SyntaxNoteFactory.GetSyntaxNote("L030406");

            bool res1 = syntaxNote.IsValid(content1.ToArray());
            bool res2 = syntaxNote.IsValid(content2.ToArray());
            bool res3 = syntaxNote.IsValid(content3.ToArray());
            bool res4 = syntaxNote.IsValid(content4.ToArray());
            bool res5 = syntaxNote.IsValid(content5.ToArray());

            Assert.IsTrue(res1);
            Assert.IsTrue(res2);
            Assert.IsTrue(res3);

            Assert.IsFalse(res4);
            Assert.IsFalse(res5);
        }
示例#4
0
        public void SyntaxNote_Required()
        {
            //At least one specified in the relational condition must be present

            //true
            List <string> content1 = new List <string>()
            {
                "01", "02", "03", "04", "05", "06"
            };
            List <string> content2 = new List <string>()
            {
                "01", "02"
            };
            List <string> content3 = new List <string>()
            {
                "01", "", "", "04", "", "06"
            };

            //false
            List <string> content4 = new List <string>()
            {
                "01", "", "", "", "05", "06"
            };
            List <string> content5 = new List <string>()
            {
                "01"
            };

            var syntaxNote = SyntaxNoteFactory.GetSyntaxNote("R020304");

            bool res1 = syntaxNote.IsValid(content1.ToArray());
            bool res2 = syntaxNote.IsValid(content2.ToArray());
            bool res3 = syntaxNote.IsValid(content3.ToArray());
            bool res4 = syntaxNote.IsValid(content4.ToArray());
            bool res5 = syntaxNote.IsValid(content5.ToArray());

            Assert.IsTrue(res1);
            Assert.IsTrue(res2);
            Assert.IsTrue(res3);

            Assert.IsFalse(res4);
            Assert.IsFalse(res5);
        }
示例#5
0
        public static void ValidateSegment(EdiSegment seg, int rowPos, IValidatedEntity validationScope)
        {
            int i = 0;

            foreach (var dataElement in seg.Content)
            {
                if (dataElement is EdiSimpleDataElement)
                {
                    EdiSimpleDataElement el = (EdiSimpleDataElement)dataElement;
                    ValidateSimpleDataElement(el, seg.Name, rowPos, i + 1, validationScope);
                }
                else if (dataElement is EdiCompositeDataElement)
                {
                    EdiCompositeDataElement c = (EdiCompositeDataElement)dataElement;
                    foreach (EdiSimpleDataElement el in c.Content)
                    {
                        ValidateSimpleDataElement(el, seg.Name, rowPos, i + 1, validationScope);
                    }
                }
                i++;
            }

            var syntaxNotes = ((MapSegment)seg.Definition).SyntaxNotes;

            if (syntaxNotes != null && syntaxNotes.Count > 0)
            {
                foreach (var sn in syntaxNotes)
                {
                    var syntaxNote = SyntaxNoteFactory.GetSyntaxNote(sn);
                    if (!syntaxNote.IsValid(seg.Content.Select(e => e.Val).ToArray()))
                    {
                        AddError(seg.Name, rowPos, null, $"Syntax note violation '{syntaxNote}'", validationScope);
                    }
                }
            }
        }