示例#1
0
        private void CheckNodeTypes(XmlNodeType controlNodeType,
                                    XmlNodeType testNodeType,
                                    DiffResult result,
                                    ReaderWithState control,
                                    ReaderWithState test)
        {
            ReaderWithState readerToAdvance = null;

            if (controlNodeType.Equals(XmlNodeType.XmlDeclaration))
            {
                readerToAdvance = control;
            }
            else if (testNodeType.Equals(XmlNodeType.XmlDeclaration))
            {
                readerToAdvance = test;
            }

            if (readerToAdvance != null)
            {
                DifferenceFound(DifferenceType.HAS_XML_DECLARATION_PREFIX_ID,
                                controlNodeType, testNodeType, result);
                readerToAdvance.Read();
                CompareNodes(result, control, test);
            }
            else
            {
                DifferenceFound(DifferenceType.NODE_TYPE_ID, controlNodeType,
                                testNodeType, result);
            }
        }
示例#2
0
        private void CheckEndElement(ReaderWithState reader, DiffResult result)
        {
            bool readResult = reader.Read();

            if (!readResult ||
                reader.Reader.NodeType != XmlNodeType.EndElement)
            {
                DifferenceFound(DifferenceType.CHILD_NODELIST_LENGTH_ID, result);
            }
        }
示例#3
0
        private void CompareText(DiffResult result, ReaderWithState control,
                                 ReaderWithState test)
        {
            string controlText = control.Reader.Value;
            string testText    = test.Reader.Value;

            if (!String.Equals(controlText, testText))
            {
                DifferenceFound(DifferenceType.TEXT_VALUE_ID, result);
            }
        }
示例#4
0
 private void Compare(DiffResult result, XmlReader controlReader,
                      XmlReader testReader) {
     try {
         ReaderWithState control = new ReaderWithState(controlReader);
         ReaderWithState test = new ReaderWithState(testReader);
         do {
             control.Read();
             test.Read();
             Compare(result, control, test);
         } while (control.HasRead && test.HasRead) ;
     } catch (FlowControlException e) {       
         Console.Out.WriteLine(e.Message);
     }
 }        
示例#5
0
 private void Compare(DiffResult result, XmlReader controlReader,
                      XmlReader testReader)
 {
     try {
         ReaderWithState control = new ReaderWithState(controlReader);
         ReaderWithState test    = new ReaderWithState(testReader);
         do
         {
             control.Read();
             test.Read();
             Compare(result, control, test);
         } while (control.HasRead && test.HasRead);
     } catch (FlowControlException e) {
         Console.Out.WriteLine(e.Message);
     }
 }
示例#6
0
 private void Compare(DiffResult result, ReaderWithState control,
                      ReaderWithState test)
 {
     if (control.HasRead)
     {
         if (test.HasRead)
         {
             CompareNodes(result, control, test);
             CheckEmptyOrAtEndElement(result, control, test);
         }
         else
         {
             DifferenceFound(DifferenceType.CHILD_NODELIST_LENGTH_ID, result);
         }
     }
 }
示例#7
0
 private void CheckEmptyOrAtEndElement(DiffResult result,
                                       ReaderWithState control,
                                       ReaderWithState test)
 {
     if (control.LastElementWasEmpty)
     {
         if (!test.LastElementWasEmpty)
         {
             CheckEndElement(test, result);
         }
     }
     else
     {
         if (test.LastElementWasEmpty)
         {
             CheckEndElement(control, result);
         }
     }
 }
示例#8
0
        private void CompareNodes(DiffResult result, ReaderWithState control,
                                  ReaderWithState test)
        {
            XmlNodeType controlNodeType = control.Reader.NodeType;
            XmlNodeType testNodeType    = test.Reader.NodeType;

            if (!controlNodeType.Equals(testNodeType))
            {
                CheckNodeTypes(controlNodeType, testNodeType, result,
                               control, test);
            }
            else if (controlNodeType == XmlNodeType.Element)
            {
                CompareElements(result, control, test);
            }
            else if (controlNodeType == XmlNodeType.Text)
            {
                CompareText(result, control, test);
            }
        }
示例#9
0
        private void CompareElements(DiffResult result, ReaderWithState control,
                                     ReaderWithState test)
        {
            string controlTagName = control.Reader.Name;
            string testTagName    = test.Reader.Name;

            if (!String.Equals(controlTagName, testTagName))
            {
                DifferenceFound(DifferenceType.ELEMENT_TAG_NAME_ID, result);
            }
            else
            {
                XmlAttribute[] controlAttributes =
                    GetNonSpecialAttributes(control);
                XmlAttribute[] testAttributes = GetNonSpecialAttributes(test);
                if (controlAttributes.Length != testAttributes.Length)
                {
                    DifferenceFound(DifferenceType.ELEMENT_NUM_ATTRIBUTES_ID, result);
                }
                CompareAttributes(result, controlAttributes, testAttributes);
            }
        }
示例#10
0
        private XmlAttribute[] GetNonSpecialAttributes(ReaderWithState r)
        {
            ArrayList l      = new ArrayList();
            int       length = r.Reader.AttributeCount;

            if (length > 0)
            {
                XmlDocument doc = new XmlDocument();
                r.Reader.MoveToFirstAttribute();
                for (int i = 0; i < length; i++)
                {
                    XmlAttribute a = doc.CreateAttribute(r.Reader.Name,
                                                         r.Reader.NamespaceURI);
                    if (!IsXMLNSAttribute(a))
                    {
                        a.Value = r.Reader.Value;
                        l.Add(a);
                    }
                    r.Reader.MoveToNextAttribute();
                }
            }
            return((XmlAttribute[])l.ToArray(typeof(XmlAttribute)));
        }
示例#11
0
 private void CompareNodes(DiffResult result, ReaderWithState control,
                           ReaderWithState test)
 {
     XmlNodeType controlNodeType = control.Reader.NodeType;
     XmlNodeType testNodeType = test.Reader.NodeType;
     if (!controlNodeType.Equals(testNodeType))
     {
         CheckNodeTypes(controlNodeType, testNodeType, result,
                        control, test);
     }
     else if (controlNodeType == XmlNodeType.Element)
     {
         CompareElements(result, control, test);
     }
     else if (controlNodeType == XmlNodeType.Text)
     {
         CompareText(result, control, test);
     }
 }
示例#12
0
        private void CheckNodeTypes(XmlNodeType controlNodeType,
                                    XmlNodeType testNodeType,
                                    DiffResult result,
                                    ReaderWithState control,
                                    ReaderWithState test)
        {
            ReaderWithState readerToAdvance = null;
            if (controlNodeType.Equals(XmlNodeType.XmlDeclaration))
            {
                readerToAdvance = control;
            }
            else if (testNodeType.Equals(XmlNodeType.XmlDeclaration))
            {
                readerToAdvance = test;
            }

            if (readerToAdvance != null)
            {
                DifferenceFound(DifferenceType.HAS_XML_DECLARATION_PREFIX_ID,
                                controlNodeType, testNodeType, result);
                readerToAdvance.Read();
                CompareNodes(result, control, test);
            }
            else
            {
                DifferenceFound(DifferenceType.NODE_TYPE_ID, controlNodeType,
                                testNodeType, result);
            }
        }
示例#13
0
 private void CompareElements(DiffResult result, ReaderWithState control,
                              ReaderWithState test)
 {
     string controlTagName = control.Reader.Name;
     string testTagName = test.Reader.Name;
     if (!String.Equals(controlTagName, testTagName))
     {
         DifferenceFound(DifferenceType.ELEMENT_TAG_NAME_ID, result);
     }
     else
     {
         XmlAttribute[] controlAttributes =
             GetNonSpecialAttributes(control);
         XmlAttribute[] testAttributes = GetNonSpecialAttributes(test);
         if (controlAttributes.Length != testAttributes.Length)
         {
             DifferenceFound(DifferenceType.ELEMENT_NUM_ATTRIBUTES_ID, result);
         }
         CompareAttributes(result, controlAttributes, testAttributes);
     }
 }
示例#14
0
 private void Compare(DiffResult result, ReaderWithState control,
                      ReaderWithState test)
 {
     if (control.HasRead)
     {
         if (test.HasRead)
         {
             CompareNodes(result, control, test);
             CheckEmptyOrAtEndElement(result, control, test);
         }
         else
         {
             DifferenceFound(DifferenceType.CHILD_NODELIST_LENGTH_ID, result);
         }
     }
 }
示例#15
0
 private void CheckEndElement(ReaderWithState reader, DiffResult result)
 {
     bool readResult = reader.Read();
     if (!readResult
         || reader.Reader.NodeType != XmlNodeType.EndElement)
     {
         DifferenceFound(DifferenceType.CHILD_NODELIST_LENGTH_ID, result);
     }
 }
示例#16
0
 private XmlAttribute[] GetNonSpecialAttributes(ReaderWithState r)
 {
     ArrayList l = new ArrayList();
     int length = r.Reader.AttributeCount;
     if (length > 0)
     {
         XmlDocument doc = new XmlDocument();
         r.Reader.MoveToFirstAttribute();
         for (int i = 0; i < length; i++)
         {
             XmlAttribute a = doc.CreateAttribute(r.Reader.Name,
                                                  r.Reader.NamespaceURI);
             if (!IsXMLNSAttribute(a))
             {
                 a.Value = r.Reader.Value;
                 l.Add(a);
             }
             r.Reader.MoveToNextAttribute();
         }
     }
     return (XmlAttribute[]) l.ToArray(typeof (XmlAttribute));
 }
示例#17
0
 private void CheckEmptyOrAtEndElement(DiffResult result,
                                       ReaderWithState control,
                                       ReaderWithState test)
 {
     if (control.LastElementWasEmpty)
     {
         if (!test.LastElementWasEmpty)
         {
             CheckEndElement(test, result);
         }
     }
     else
     {
         if (test.LastElementWasEmpty)
         {
             CheckEndElement(control, result);
         }
     }
 }
示例#18
0
 private void CompareText(DiffResult result, ReaderWithState control,
                          ReaderWithState test)
 {
     string controlText = control.Reader.Value;
     string testText = test.Reader.Value;
     if (!String.Equals(controlText, testText))
     {
         DifferenceFound(DifferenceType.TEXT_VALUE_ID, result);
     }
 }