public override void Test(Archive archive)
        {
            ValidateXml(archive.GetStructureDescriptionFileName(), _archiveReader.GetStructureContentAsStream(archive),
                        GetStructureDescriptionXmlSchemaStream(archive));

            ValidateXml(archive.GetContentDescriptionFileName(), _archiveReader.GetContentAsStream(archive),
                        GetContentDescriptionXmlSchemaStream(archive), GetMetadataCatalogXmlSchemaStream(archive));
        }
Exemple #2
0
        private List <INoark5Test> RunContentTests(Archive archive)
        {
            List <INoark5Test> contentTests = _testProvider.GetContentTests(archive);

            SubscribeTestsToReadElementEvent(contentTests);

            using (var reader = XmlReader.Create(_archiveContentReader.GetContentAsStream(archive)))
            {
                RaiseEventStartParsingFile();

                var path = new Stack <string>();

                while (ReadNextNode(reader))
                {
                    if (reader.IsEmptyElement)
                    {
                        continue;
                    }

                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:
                        path.Push(reader.LocalName);
                        RaiseReadStartElementEvent(CreateReadElementEventArgs(reader, path));
                        break;

                    case XmlNodeType.Attribute:
                        RaiseReadAttributeEvent(CreateReadElementEventArgs(reader, path));
                        break;

                    case XmlNodeType.Text:
                        RaiseReadElementValueEvent(CreateReadElementEventArgs(reader, path));
                        break;

                    case XmlNodeType.EndElement:
                        path.Pop();
                        RaiseReadEndElementEvent(CreateReadElementEventArgs(reader, path));
                        _statusEventHandler.RaiseEventRecordProcessingStopped();
                        break;

                    case XmlNodeType.XmlDeclaration:
                    case XmlNodeType.ProcessingInstruction:
                    case XmlNodeType.Comment:
                    case XmlNodeType.Whitespace:
                        break;
                    }
                }
                RaiseEventFinishedParsingFile();
            }
            return(contentTests);
        }