Ejemplo n.º 1
0
        public void W051_AddNewPart_ToOpenXmlPackage()
        {
            using (var stream = GetStream(TestFiles.Hyperlink, true))
                using (var doc = WordprocessingDocument.Open(stream, true))
                {
                    var pkg  = (OpenXmlPackage)doc;
                    var wpcp = pkg.AddNewPart <RibbonExtensibilityPart>("application/xml", "rid1232131");
                    var v    = new OpenXmlValidator(FileFormatVersions.Office2013);
                    var errs = v.Validate(doc);

                    Assert.Empty(errs);
                }
        }
Ejemplo n.º 2
0
        public void P003_PptxCreation_Stream()
        {
            using (var ms = new MemoryStream())
                using (var doc = PresentationDocument.Create(ms, PresentationDocumentType.Presentation))
                {
                    CreatePresentation(doc);

                    var v    = new OpenXmlValidator(FileFormatVersions.Office2013);
                    var errs = v.Validate(doc);

                    Assert.Empty(errs);
                }
        }
Ejemplo n.º 3
0
        public void W052_CreateElementFromOuterXml()
        {
            using (var stream = GetStream(TestFiles.UnknownElement))
                using (var doc = WordprocessingDocument.Open(stream, false))
                {
                    var mdp  = doc.MainDocumentPart;
                    var cnt  = mdp.Document.Descendants().Count();
                    var v    = new OpenXmlValidator(FileFormatVersions.Office2013);
                    var errs = v.Validate(doc);

                    Assert.Single(errs);
                }
        }
Ejemplo n.º 4
0
        private void Bug663834(OpenXmlValidator validator)
        {
            DocumentFormat.OpenXml.Wordprocessing.StatusText st = new StatusText();
            st.Val = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111";

            var errors = validator.Validate(st);

            Assert.Equal(1, errors.Count());
            Assert.Equal(ValidationErrorType.Schema, errors.First().ErrorType);
            Assert.Equal("Sch_AttributeValueDataTypeDetailed", errors.First().Id);
            AssertValidationErrorCategory("Sch_MaxLengthConstraintFailed", errors.First());
            Assert.True(errors.First().Description.EndsWith("The length must be smaller than or equal to 140."));
        }
Ejemplo n.º 5
0
        private void Bug423988(OpenXmlValidator validator)
        {
            var shape = new DocumentFormat.OpenXml.Drawing.Spreadsheet.Shape();

            shape.TextBody = new DocumentFormat.OpenXml.Drawing.Spreadsheet.TextBody();
            var errors = validator.Validate(shape);

            Assert.Equal(1, errors.Count());
            Assert.Same(shape, errors.First().Node);
            Assert.Same(shape.TextBody, errors.First().RelatedNode);
            Assert.Equal(ValidationErrorType.Schema, errors.First().ErrorType);
            Assert.Equal("Sch_UnexpectedElementContentExpectingComplex", errors.First().Id);
        }
Ejemplo n.º 6
0
        public void W021_OuterXml()
        {
            using (var stream = GetStream(TestFiles.Document))
                using (var doc = WordprocessingDocument.Open(stream, false))
                {
                    var mdp       = doc.MainDocumentPart;
                    var firstPara = mdp.Document.Body.FirstChild;
                    var s         = firstPara.OuterXml;
                    var v         = new OpenXmlValidator(FileFormatVersions.Office2013);

                    Assert.Single(v.Validate(doc));
                }
        }
Ejemplo n.º 7
0
        private void Bug669663(OpenXmlValidator validator)
        {
            var framePr = new FrameProperties();

            framePr.Height = 32767;

            var errors = validator.Validate(framePr);

            Assert.Equal(1, errors.Count());
            Assert.Equal(ValidationErrorType.Schema, errors.First().ErrorType);
            Assert.Equal("Sch_AttributeValueDataTypeDetailed", errors.First().Id);
            AssertValidationErrorCategory("Sch_MaxInclusiveConstraintFailed", errors.First());
        }
Ejemplo n.º 8
0
        public void W024_LastChild_LookupPrefix()
        {
            using (var stream = GetStream(TestFiles.Document))
                using (var doc = WordprocessingDocument.Open(stream, false))
                {
                    var mdp       = doc.MainDocumentPart;
                    var firstPara = mdp.Document.Body.LastChild;
                    var p         = firstPara.LookupPrefix("http://schemas.openxmlformats.org/wordprocessingml/2006/main");
                    var v         = new OpenXmlValidator(FileFormatVersions.Office2013);

                    Assert.Single(v.Validate(doc));
                }
        }
Ejemplo n.º 9
0
        public void W039_ChangeDocumentType()
        {
            using (var stream = GetStream(TestFiles.Document, true))
                using (var package = Package.Open(stream, FileMode.Open, FileAccess.ReadWrite))
                    using (var doc = WordprocessingDocument.Open(package))
                    {
                        doc.ChangeDocumentType(WordprocessingDocumentType.Template);

                        var v = new OpenXmlValidator(FileFormatVersions.Office2013);

                        Assert.Single(v.Validate(doc));
                    }
        }
Ejemplo n.º 10
0
        public void SemanticErrorValue()
        {
            var validator = new OpenXmlValidator();
            var element   = new TestElement
            {
                Condition = ExpectedConditionValue,
            };

            var error = Assert.Single(validator.Validate(element));

            Assert.Equal("Sem_AttributeRequiredConditionToValue", error.Id);
            Assert.Equal(ValidationErrorType.Semantic, error.ErrorType);
        }
Ejemplo n.º 11
0
        public void W041_AddAlternativeFormatImportPart()
        {
            using (var stream = GetStream(TestFiles.Hyperlink, true))
                using (var doc = WordprocessingDocument.Open(stream, true))
                {
                    doc.MainDocumentPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.Html);

                    var v    = new OpenXmlValidator(FileFormatVersions.Office2013);
                    var errs = v.Validate(doc);

                    Assert.Empty(errs);
                }
        }
Ejemplo n.º 12
0
        public void PTagWithStyle()
        {
            using MemoryStream mem = new MemoryStream();
            WordDocument doc = new WordDocument(mem);

            doc.Process(new HtmlParser(TestUtility.GetHtmlFromFile("/Html/ptagwithstyle.htm")));

            Assert.IsNotNull(doc.Document.Body);
            Assert.AreEqual(1, doc.Document.Body.ChildElements.Count);

            Paragraph para = doc.Document.Body.ChildElements[0] as Paragraph;

            Assert.IsNotNull(para);
            Assert.AreEqual(1, para.ChildElements.Count);

            Run run = para.ChildElements[0] as Run;

            Assert.IsNotNull(run);
            Assert.AreEqual(2, run.ChildElements.Count);

            RunProperties properties = run.ChildElements[0] as RunProperties;

            Assert.IsNotNull(properties);
            Assert.AreEqual(3, properties.ChildElements.Count);

            RunFonts fonts = properties.ChildElements[0] as RunFonts;

            Assert.IsNotNull(fonts);
            Assert.AreEqual("Arial,Verdana", fonts.Ascii.Value);

            Bold bold = properties.ChildElements[1] as Bold;

            Assert.IsNotNull(bold);

            FontSize fontSize = properties.ChildElements[2] as FontSize;

            Assert.IsNotNull(fontSize);
            Assert.AreEqual("24", fontSize.Val.Value);

            Word.Text text = run.ChildElements[1] as Word.Text;
            Assert.IsNotNull(text);
            Assert.AreEqual(0, text.ChildElements.Count);
            Assert.AreEqual("Test", text.InnerText.Trim());


            OpenXmlValidator validator = new OpenXmlValidator();
            var errors = validator.Validate(doc.WordprocessingDocument);

            errors.PrintValidationErrors();
            Assert.AreEqual(0, errors.Count());
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Validates the file and prints result to console
        /// </summary>
        /// <param name="file">Path to the file</param>
        private static bool ValidateFile(string file)
        {
            ConsoleColor color   = Console.ForegroundColor;
            bool         isValid = false;

            try
            {
                Console.WriteLine("File name: {0}", file);

                OpenXmlValidator validator = new OpenXmlValidator();

                using (var doc = GetOpenXmlPackage(file))
                {
                    var errors = validator.Validate(doc);
                    if (errors.Any())
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Found {0} validation errors: ", errors.Count());

                        int count = 0;
                        foreach (ValidationErrorInfo error in errors)
                        {
                            count++;
                            Console.WriteLine("Error " + count);
                            Console.WriteLine("Part: " + error.Part.Uri);
                            Console.WriteLine("Description: " + error.Description);
                            Console.WriteLine("Path: " + error.Path.XPath);
                        }
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.WriteLine("Document valid");
                        isValid = true;
                    }

                    Console.WriteLine();
                }
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Exception occured while validating file: {0} - {1}", e.GetType().ToString(), e.Message);
            }
            finally
            {
                Console.ForegroundColor = color;
            }

            return(isValid);
        }
Ejemplo n.º 14
0
        public void Bug704004(FileFormatVersions version)
        {
            var validator = new OpenXmlValidator(version);

            //<w:p>
            //    <ve:AlternateContent />
            //    <w:r>
            //        <w:t>Acb</w:t>
            //        <w:rPr>
            //            <w:rFonts w:hint="eastAsia"/>
            //        </w:rPr>
            //    </w:r>
            //</w:p>
            Paragraph        p   = new Paragraph();
            AlternateContent acb = p.AppendChild(new AlternateContent());

            // one error, w:rPr should before the w:t
            p.AppendChild(new Run(
                              new DocumentFormat.OpenXml.Wordprocessing.Text()
            {
                Text = "Acb"
            },
                              new RunProperties(new RunFonts()
            {
                Hint = FontTypeHintValues.EastAsia
            })));

            // an empty "AlternateContent"
            var errors = validator.Validate(p); // should no hang, no OOM

            Assert.Equal(2, errors.Count());
            Assert.Equal("Sch_IncompleteContentExpectingComplex", errors.First().Id);
            Assert.Same(p.FirstChild, errors.First().Node);  // acb should have a choice
            Assert.Same(p.FirstChild.NextSibling().FirstChild.NextSibling(), errors.ElementAt(1).RelatedNode);

            // append an empty "Choice"
            p.AddNamespaceDeclaration("w14", "http://w14");
            acb.AppendChild(new AlternateContentChoice()
            {
                Requires = "w14"
            });
            errors = validator.Validate(p); // should no hang, no OOM
            Assert.Single(errors);
            Assert.Same(p.FirstChild.NextSibling().FirstChild.NextSibling(), errors.ElementAt(0).RelatedNode);

            // append an empty "Fallback"
            acb.AppendChild(new AlternateContentFallback());
            errors = validator.Validate(p); // should no hang, no OOM
            Assert.Single(errors);
            Assert.Same(p.FirstChild.NextSibling().FirstChild.NextSibling(), errors.ElementAt(0).RelatedNode);
        }
Ejemplo n.º 15
0
        public void TestRunBackgroundColor()
        {
            using (MemoryStream mem = new MemoryStream())
            {
                WordDocument doc = new WordDocument(mem);

                doc.Process(new HtmlParser("<p><span style='background-color:#ccc;color:#000'>one</span><span>two</span></p>"));

                Assert.IsNotNull(doc.Document.Body);
                Assert.AreEqual(1, doc.Document.Body.ChildElements.Count);

                Paragraph para = doc.Document.Body.ChildElements[0] as Paragraph;
                Assert.IsNotNull(para);
                Assert.AreEqual(2, para.ChildElements.Count);

                Run run = para.ChildElements[0] as Run;
                Assert.IsNotNull(run);
                Assert.AreEqual(2, run.ChildElements.Count);

                RunProperties properties = run.ChildElements[0] as RunProperties;
                Assert.IsNotNull(properties);

                Word.Color color = properties.ChildElements[0] as Word.Color;
                Assert.IsNotNull(color);
                Assert.AreEqual("000000", color.Val.Value);

                Word.Shading shading = properties.ChildElements[1] as Word.Shading;
                Assert.IsNotNull(shading);
                Assert.AreEqual("cccccc", shading.Fill.Value);
                Assert.AreEqual(Word.ShadingPatternValues.Clear, shading.Val.Value);

                Word.Text text = run.ChildElements[1] as Word.Text;
                Assert.IsNotNull(text);
                Assert.AreEqual(0, text.ChildElements.Count);
                Assert.AreEqual("one", text.InnerText);

                run = para.ChildElements[1] as Run;
                Assert.IsNotNull(run);
                Assert.AreEqual(1, run.ChildElements.Count);

                text = run.ChildElements[0] as Word.Text;
                Assert.IsNotNull(text);
                Assert.AreEqual(0, text.ChildElements.Count);
                Assert.AreEqual("two", text.InnerText);

                OpenXmlValidator validator = new OpenXmlValidator();
                var errors = validator.Validate(doc.WordprocessingDocument);
                errors.PrintValidationErrors();
                Assert.AreEqual(0, errors.Count());
            }
        }
Ejemplo n.º 16
0
        public void W038_DocxCreation_Package()
        {
            using (var stream = GetStream(TestFiles.Document, true))
                using (var package = Package.Open(stream, FileMode.Open, FileAccess.ReadWrite))
                    using (var doc = WordprocessingDocument.Open(package))
                    {
                        var cnt    = doc.MainDocumentPart.Document.Descendants().Count();
                        var v      = new OpenXmlValidator(FileFormatVersions.Office2013);
                        var errs   = v.Validate(doc);
                        var errcnt = errs.Count();

                        Assert.True(errcnt == 416 || errcnt == 2); // v3.0 correctly reports fewer errors than v2.5.1
                    }
        }
Ejemplo n.º 17
0
        public void Validator2010BugRegressionTest()
        {
            this.MyTestInitialize(TestContext.GetCurrentMethod());

            OpenXmlValidator validator = new OpenXmlValidator(FileFormatVersions.Office2010);

            Bug662644(validator);
            Bug662650(validator);
            Bug663841(validator);
            Bug663834(validator);
            Bug669663(validator);
            Bug704004(validator);
            Bug743591(validator);
        }
Ejemplo n.º 18
0
        public void Bug669663(FileFormatVersions version)
        {
            var validator = new OpenXmlValidator(version);

            var framePr = new FrameProperties();

            framePr.Height = 32767;

            var errors = validator.Validate(framePr);

            Assert.Single(errors);
            Assert.Equal(ValidationErrorType.Schema, errors.First().ErrorType);
            Assert.Equal("Sch_AttributeValueDataTypeDetailed", errors.First().Id);
        }
Ejemplo n.º 19
0
        public void W006_RemoveCommentsPart()
        {
            using (var stream = GetStream(TestFiles.CommentsDocx, true))
                using (var doc = WordprocessingDocument.Open(stream, true))
                {
                    var commentsPart = doc.MainDocumentPart.WordprocessingCommentsPart;
                    doc.MainDocumentPart.DeletePart(commentsPart);

                    var v    = new OpenXmlValidator(FileFormatVersions.Office2013);
                    var errs = v.Validate(doc);

                    Assert.Equal(3, errs.Count());
                }
        }
Ejemplo n.º 20
0
        public void TableAllProperties()
        {
            using (MemoryStream mem = new MemoryStream())
            {
                WordDocument doc = new WordDocument(mem);

                doc.Process(new HtmlParser("<table border='1' style='width:500px' cellpadding='2'><tr><td>1</td><td>2</td></tr><tr><td colspan='2'>1</td></tr></table>"));

                OpenXmlValidator validator = new OpenXmlValidator();
                var errors = validator.Validate(doc.WordprocessingDocument);
                errors.PrintValidationErrors();
                Assert.AreEqual(0, errors.Count());
            }
        }
Ejemplo n.º 21
0
        public void W010_HyperlinkRelationships()
        {
            using (var stream = GetStream(TestFiles.Hyperlink))
                using (var doc = WordprocessingDocument.Open(stream, false))
                {
                    var mdp          = doc.MainDocumentPart;
                    var extRels      = mdp.HyperlinkRelationships;
                    var hyperlinkRel = extRels.First();
                    var v            = new OpenXmlValidator(FileFormatVersions.Office2013);
                    var errs         = v.Validate(doc);

                    Assert.Empty(errs);
                }
        }
Ejemplo n.º 22
0
        public void W007_GetPartById_DeleteParts()
        {
            using (var stream = GetStream(TestFiles.CommentsDocx, true))
                using (var doc = WordprocessingDocument.Open(stream, true))
                {
                    var partList = new[] { doc.MainDocumentPart.GetPartById("rId1") };
                    doc.MainDocumentPart.DeleteParts(partList);

                    var v    = new OpenXmlValidator(FileFormatVersions.Office2013);
                    var errs = v.Validate(doc);

                    Assert.Empty(errs);
                }
        }
Ejemplo n.º 23
0
        public void W022_InnerXml_InnerText()
        {
            using (var stream = GetStream(TestFiles.Document))
                using (var doc = WordprocessingDocument.Open(stream, false))
                {
                    var mdp       = doc.MainDocumentPart;
                    var firstPara = mdp.Document.Body.FirstChild;
                    var s         = firstPara.InnerXml;
                    var s2        = firstPara.InnerText;
                    var v         = new OpenXmlValidator(FileFormatVersions.Office2013);

                    Assert.Equal(2, v.Validate(doc).Count());
                }
        }
Ejemplo n.º 24
0
        public void W018_RemoveAttributes()
        {
            using (var stream = GetStream(TestFiles.Document))
                using (var doc = WordprocessingDocument.Open(stream, false))
                {
                    var mdp       = doc.MainDocumentPart;
                    var firstPara = mdp.Document.Body.FirstChild;
                    firstPara.RemoveAttribute("displacedByCustomXml", "http://schemas.openxmlformats.org/wordprocessingml/2006/main");

                    var v = new OpenXmlValidator(FileFormatVersions.Office2013);

                    Assert.Equal(2, v.Validate(doc).Count());
                }
        }
Ejemplo n.º 25
0
        private static void ValidateOpenXml(OpenXmlElement element)
        {
            OpenXmlValidator validator = new OpenXmlValidator(FileFormatVersions.Office2010);
            IEnumerable <ValidationErrorInfo> validationErrors = validator.Validate(element);
            var filteredErrors = validationErrors.Where(y =>
                                                        y.Description != "The 'http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing:editId' attribute is not declared.");

            foreach (var error in filteredErrors)
            {
                Console.WriteLine("{0} {1}", error.Path.XPath, error.Description);
            }

            Assert.AreEqual(0, filteredErrors.Count());
        }
Ejemplo n.º 26
0
        public void AcbValidationTest()
        {
            MCContext           mcContext = new MCContext();
            ParagraphProperties pPr;
            Run       run1, run2;
            Paragraph p = new Paragraph(pPr = new ParagraphProperties()
            {
                WordWrap = new WordWrap()
                {
                    Val = true
                }
            },
                                        new OpenXmlMiscNode(System.Xml.XmlNodeType.Comment, "<!-- comments -->"),
                                        run1 = new Run(new Text("Text 1.")),
                                        run2 = new Run(new Text("Text 2.")));

            p.AddNamespaceDeclaration("w14test", "http://w14.com");

            OpenXmlUnknownElement ignorableElement = new OpenXmlUnknownElement("w14test", "span", "http://w14.com");

            ignorableElement.MCAttributes = new MarkupCompatibilityAttributes()
            {
                Ignorable = "w14test"
            };
            p.InsertAfter(ignorableElement, pPr);

            Run runInAcb         = new Run(new Text("Text in ACB."));
            Run run2InAcb        = new Run(new Text("Text 2 in ACB."));
            AlternateContent acb = new AlternateContent(new AlternateContentChoice()
            {
                Requires = "w14test"
            },
                                                        new AlternateContentFallback(runInAcb, run2InAcb));

            p.InsertAfter(acb, pPr);

            var validator = new OpenXmlValidator();
            var errors    = validator.Validate(p);

            Assert.Empty(errors);

            p.AppendChild(new OpenXmlUnknownElement("w15test", "art", "http://w15.com"));
            errors = validator.Validate(p);
            Assert.Single(errors);
            p.RemoveChild(p.LastChild);

            acb.LastChild.Append(new OpenXmlUnknownElement("w15test", "art", "http://w15.com"));
            errors = validator.Validate(p);
            Assert.Single(errors);
        }
Ejemplo n.º 27
0
        private void Bug662644(OpenXmlValidator validator)
        {
            DocumentFormat.OpenXml.Office2010.Excel.FormControlProperties fp = new DocumentFormat.OpenXml.Office2010.Excel.FormControlProperties();

            var errors = validator.Validate(fp);

            Assert.Empty(errors);

            fp.AppendChild(new DocumentFormat.OpenXml.Office2010.Excel.BorderColor());
            errors = validator.Validate(fp);
            Assert.Single(errors);
            Assert.Equal(ValidationErrorType.Schema, errors.First().ErrorType);
            Assert.Equal("Sch_InvalidElementContentExpectingComplex", errors.First().Id);
        }
Ejemplo n.º 28
0
        public void W025_ClearAllAttributes()
        {
            using (var stream = GetStream(TestFiles.Document))
                using (var doc = WordprocessingDocument.Open(stream, false))
                {
                    var mdp       = doc.MainDocumentPart;
                    var firstPara = mdp.Document.Body.LastChild;

                    firstPara.ClearAllAttributes();

                    var v = new OpenXmlValidator(FileFormatVersions.Office2013);

                    Assert.Equal(2, v.Validate(doc).Count());
                }
        }
Ejemplo n.º 29
0
        public void W030_DeleteReferenceRelationship2()
        {
            using (var stream = GetStream(TestFiles.Document, true))
                using (var doc = WordprocessingDocument.Open(stream, true))
                {
                    var mdp = doc.MainDocumentPart;
                    var r   = mdp.GetReferenceRelationship("rId26");

                    mdp.DeleteReferenceRelationship("rId26");

                    var v = new OpenXmlValidator(FileFormatVersions.Office2013);

                    Assert.Equal(3, v.Validate(doc).Count());
                }
        }
Ejemplo n.º 30
0
        public void Category1_14Test()
        {
            OpenXmlValidator o12Validator = new OpenXmlValidator(FileFormatVersions.Office2007);
            OpenXmlValidator o14Validator = new OpenXmlValidator(FileFormatVersions.Office2010);

            TableColumn column = new TableColumn();

            column.TotalsRowFunction = TotalsRowFunctionValues.Custom;
            Assert.False(ErrorShowsUp(o12Validator.Validate(column), "Attribute 'totalsRowLabel' should be absent when the value of attribute 'totalsRowFunction' is 'custom'."));
            Assert.False(ErrorShowsUp(o14Validator.Validate(column), "Attribute 'totalsRowLabel' should be absent when the value of attribute 'totalsRowFunction' is 'custom'."));

            column.TotalsRowLabel = "somevalue";
            Assert.True(ErrorShowsUp(o12Validator.Validate(column), "Attribute 'totalsRowLabel' should be absent when the value of attribute 'totalsRowFunction' is 'custom'."));
            Assert.True(ErrorShowsUp(o14Validator.Validate(column), "Attribute 'totalsRowLabel' should be absent when the value of attribute 'totalsRowFunction' is 'custom'."));
        }
Ejemplo n.º 31
0
    static void Main(string[] args)
    {
        string newPresentation = "DeckFromImages.pptx";
        string presentationTemplate = "PresentationTemplate.pptx";
        string presentationFolder = @"C:\Temp\";
        string imageFolder = @"C:\Temp";
        string[] imageFileExtensions =
          new[] { "*.jpg", "*.jpeg", "*.gif", "*.bmp", "*.png", "*.tif" };

        // Make a copy of the template presentation. This will throw an
        // exception if the template presentation does not exist.
        File.Copy(presentationFolder + presentationTemplate,
          presentationFolder + newPresentation, true);

        // Get the image files in the image folder.
        List<string> imageFileNames = GetImageFileNames(imageFolder,
          imageFileExtensions);

        // Create new slides for the images.
        if (imageFileNames.Count() > 0)
            CreateSlides(imageFileNames,
              presentationFolder + newPresentation);

        // Validate the new presentation.
        OpenXmlValidator validator = new OpenXmlValidator();

        var errors = validator.Validate(
          presentationFolder + newPresentation);

        if (errors.Count() > 0)
        {
            Console.WriteLine("The deck creation process completed but " +
              "the created presentation failed to validate.");
            Console.WriteLine("There are " + errors.Count() +
              " errors:\r\n");

            DisplayValidationErrors(errors);
        }
        else
            Console.WriteLine("The deck creation process completed and " +
              "the created presentation validated with 0 errors.");
    }