public void TestParseNullProcess()
        {
            var root         = new XElement(this.documentRoot);
            var startElement = TraverseUtils.TagElement(root, "Table");
            var parser       = new TableParser();

            parser.Parse(null, startElement);
        }
        public void TestParseMissingEndTableTag()
        {
            var processorMock = new TagProcessorMock <TableProcessor>();
            var parser        = new TableParser();

            var root = new XElement(this.documentRoot);

            TraverseUtils.TagElement(root, "EndTable").Remove();
            var startElement = TraverseUtils.TagElement(root, "Table");

            parser.Parse(processorMock, startElement);
        }
Beispiel #3
0
        private TableTag GetTableTag(XElement root)
        {
            XElement     table           = root.Element(WordMl.TableName);
            const string ItemsSource     = "//Test/Certificates/Certificate";
            int?         dynamicRowValue = 4;

            return(new TableTag
            {
                Table = table,
                ItemsSource = ItemsSource,
                DynamicRow = dynamicRowValue,
                TagTable = TraverseUtils.TagElement(root, "Table"),
                TagEndTable = TraverseUtils.TagElement(root, "EndTable"),
            });
        }
Beispiel #4
0
        public void TestRepeaterNotClosed()
        {
            const string TagName     = "EndRepeater";
            var          endRepeater = TraverseUtils.TagElement(this.documentRoot, TagName);

            endRepeater.Remove();
            var parser = new RepeaterParser();

            try
            {
                parser.Parse(new TagProcessorMock <RepeaterProcessor>(), this.documentRoot.Descendants(WordMl.SdtName).First());
                Assert.Fail("An exception shoud've been thrown");
            }
            catch (Exception e)
            {
                Assert.AreEqual(string.Format(MessageStrings.TagNotFoundOrEmpty, TagName), e.Message);
            }
        }
        public void TestParseCplx()
        {
            using (var docStream = AssemblyResourceHelper.GetResourceStream(this, "document_dontworking_if.xml"))
            {
                var doc          = XDocument.Load(docStream);
                var documentRoot = doc.Root.Element(WordMl.WordMlNamespace + "body");

                var parser          = new IfParser();
                var startElement    = TraverseUtils.TagElement(documentRoot, "If");
                var endElement      = TraverseUtils.TagElement(documentRoot, "EndIf");
                var parentProcessor = new RootProcessor();
                parser.Parse(parentProcessor, startElement);

                var          ifProcessor = (IfProcessor)parentProcessor.Processors.First();
                var          ifTag       = ifProcessor.Tag;
                const string IfCondition = "//test/condition";

                Assert.IsNotNull(ifProcessor);

                //Assert.IsTrue(IfCondition.Equals(ifTag.Conidition));
                CollectionAssert.AreEqual(Encoding.UTF8.GetBytes(IfCondition), Encoding.UTF8.GetBytes(ifTag.Conidition));

                Assert.AreEqual(startElement, ifTag.StartIf);
                Assert.AreEqual(endElement, ifTag.EndIf);

                var elements = ifTag.IfContent.ToList();

                Assert.AreEqual(1, elements.Count());

                /*
                 * Assert.IsTrue(elements.Take(6).All(e => e.Name.Equals(WordMl.TextRunName)));
                 * Assert.IsTrue(elements.Skip(6).Take(1).All(e => e.Name.Equals(WordMl.ParagraphName)));
                 * Assert.IsTrue(elements.Skip(7).Take(1).All(e => e.Name.Equals(WordMl.ParagraphPropertiesName)));
                 * Assert.IsTrue(elements.Skip(8).Take(1).All(e => e.Name.Equals(WordMl.BookmarkStartName)));
                 * Assert.IsTrue(elements.Skip(9).Take(4).All(e => e.Name.Equals(WordMl.TextRunName)));
                 * Assert.IsTrue(elements.Skip(13).Take(1).All(e => e.Name.Equals(WordMl.ProofingErrorAnchorName)));
                 * Assert.IsTrue(elements.Skip(14).Take(1).All(e => e.Name.Equals(WordMl.TextRunName)));
                 * Assert.IsTrue(elements.Skip(15).Take(1).All(e => e.Name.Equals(WordMl.ProofingErrorAnchorName)));
                 * Assert.IsTrue(elements.Skip(16).Take(1).All(e => e.Name.Equals(WordMl.TextRunName)));
                 */
                Assert.AreEqual(startElement, ifTag.StartIf);
                Assert.AreEqual(endElement, ifTag.EndIf);
            }
        }
        public void TestParse()
        {
            using (var docStream = AssemblyResourceHelper.GetResourceStream(this, "IfParserTest.xml"))
            {
                var doc          = XDocument.Load(docStream);
                var documentRoot = doc.Root.Element(WordMl.WordMlNamespace + "body");

                var parser          = new IfParser();
                var startElement    = TraverseUtils.TagElement(documentRoot, "If");
                var endElement      = TraverseUtils.TagElement(documentRoot, "EndIf");
                var parentProcessor = new RootProcessor();
                parser.Parse(parentProcessor, startElement);

                var          ifProcessor = (IfProcessor)parentProcessor.Processors.First();
                var          ifTag       = ifProcessor.Tag;
                const string IfCondition = "//test/condition";

                Assert.IsNotNull(ifProcessor);
                Assert.AreEqual(IfCondition, ifTag.Conidition);
                var content = ifTag.IfContent.ToList();
                Assert.AreEqual(1, content.Count);
                Assert.AreEqual(WordMl.ParagraphName, content[0].Name);
                var paragraphChildren = content[0].Elements().ToList();
                Assert.AreEqual(6, paragraphChildren.Count());
                Assert.AreEqual(WordMl.ParagraphPropertiesName, paragraphChildren[0].Name);
                Assert.AreEqual(WordMl.ProofingErrorAnchorName, paragraphChildren[1].Name);
                Assert.AreEqual(WordMl.TextRunName, paragraphChildren[2].Name);
                Assert.AreEqual("Hello", paragraphChildren[2].Value);
                Assert.AreEqual(WordMl.ProofingErrorAnchorName, paragraphChildren[3].Name);
                Assert.AreEqual(WordMl.TextRunName, paragraphChildren[4].Name);
                Assert.AreEqual(", World!", paragraphChildren[4].Value);
                Assert.AreEqual(WordMl.SdtName, paragraphChildren[5].Name);
                Assert.IsTrue(paragraphChildren[5].IsTag("text"));
                Assert.AreEqual(startElement, ifTag.StartIf);
                Assert.AreEqual(endElement, ifTag.EndIf);

                var textProcessor = (TextProcessor)ifProcessor.Processors.FirstOrDefault();
                Assert.IsNotNull(textProcessor);
                Assert.IsNotNull(textProcessor.TextTag);
                Assert.AreEqual("//test/text", textProcessor.TextTag.Expression);
            }
        }
        public void TestParseVariousOrderTag()
        {
            var processorMock = new TagProcessorMock <TableProcessor>();
            var parser        = new TableParser();

            var root      = new XElement(this.documentRoot);
            var paragraph = root.Element(WordMl.ParagraphName);
            //var itemsElement = TraverseUtils.TagElement(root, "Items");
            //itemsElement.AddBeforeSelf(paragraph);
            //var dynamicRowElement = TraverseUtils.TagElement(root, "DynamicRow");
            //dynamicRowElement.AddBeforeSelf(paragraph);
            //var contentElement = TraverseUtils.TagElement(root, "Content");
            //contentElement.AddBeforeSelf(paragraph);
            //var endContentElement = TraverseUtils.TagElement(root, "EndContent");
            //endContentElement.AddBeforeSelf(paragraph);
            var tableElement = root.Element(WordMl.TableName);

            Assert.IsNotNull(tableElement);
            tableElement.AddBeforeSelf(paragraph);
            var endTableElement = TraverseUtils.TagElement(root, "EndTable");

            endTableElement.AddBeforeSelf(paragraph);
            var startElement = TraverseUtils.TagElement(root, "Table");

            parser.Parse(processorMock, startElement);
            var processor = processorMock.InnerProcessor;
            var tag       = processor.TableTag;

            Assert.AreEqual(4, tag.DynamicRow);
            Assert.AreEqual("//test/certificates", tag.ItemsSource);
            Assert.AreEqual(tableElement, tag.Table);
            this.CheckTagElements(tag);

            //  itemsElement.Remove();
            //endTableElement.AddBeforeSelf(itemsElement);

            parser.Parse(processorMock, startElement);
            processor = processorMock.InnerProcessor;
            tag       = processor.TableTag;
            Assert.AreEqual(4, tag.DynamicRow);
            Assert.AreEqual("//test/certificates", tag.ItemsSource);
            Assert.AreEqual(tableElement, tag.Table);
            this.CheckTagElements(tag);

            //dynamicRowElement.Remove();
            //endTableElement.AddBeforeSelf(dynamicRowElement);

            parser.Parse(processorMock, startElement);
            processor = processorMock.InnerProcessor;
            tag       = processor.TableTag;
            Assert.AreEqual(4, tag.DynamicRow);
            Assert.AreEqual("//test/certificates", tag.ItemsSource);
            Assert.AreEqual(tableElement, tag.Table);
            this.CheckTagElements(tag);

            //contentElement.Remove();
            tableElement.Remove();
            //endContentElement.Remove();
            //endTableElement.AddBeforeSelf(contentElement);
            endTableElement.AddBeforeSelf(tableElement);
            //endTableElement.AddBeforeSelf(endContentElement);

            parser.Parse(processorMock, startElement);
            processor = processorMock.InnerProcessor;
            tag       = processor.TableTag;
            Assert.AreEqual(4, tag.DynamicRow);
            Assert.AreEqual("//test/certificates", tag.ItemsSource);
            Assert.AreEqual(tableElement, tag.Table);
            this.CheckTagElements(tag);
        }