示例#1
0
        private void CompareAttributes(DiffResult result, int controlAttributeCount)
        {
            string controlAttrValue, controlAttrName;
            string testAttrValue, testAttrName;

            _controlReader.MoveToFirstAttribute();
            _testReader.MoveToFirstAttribute();
            for (int i = 0; i < controlAttributeCount; ++i)
            {
                controlAttrName = _controlReader.Name;
                testAttrName    = _testReader.Name;

                controlAttrValue = _controlReader.Value;
                testAttrValue    = _testReader.Value;

                if (!String.Equals(controlAttrName, testAttrName))
                {
                    DifferenceFound(DifferenceType.ATTR_SEQUENCE_ID, result);

                    if (!_testReader.MoveToAttribute(controlAttrName))
                    {
                        DifferenceFound(DifferenceType.ATTR_NAME_NOT_FOUND_ID, result);
                    }
                    testAttrValue = _testReader.Value;
                }

                if (!String.Equals(controlAttrValue, testAttrValue))
                {
                    DifferenceFound(DifferenceType.ATTR_VALUE_ID, result);
                }

                _controlReader.MoveToNextAttribute();
                _testReader.MoveToNextAttribute();
            }
        }
示例#2
0
 private void DifferenceFound(DifferenceType differenceType,
                              XmlNodeType controlNodeType,
                              XmlNodeType testNodeType,
                              DiffResult result)
 {
     DifferenceFound(new Difference(differenceType, controlNodeType, testNodeType),
                     result);
 }
示例#3
0
 private void DifferenceFound(Difference difference, DiffResult result)
 {
     result.DifferenceFound(this, difference);
     if (!ContinueComparison(difference))
     {
         throw new FlowControlException(difference);
     }
 }
示例#4
0
 private void CheckEndElement(XmlReader reader, ref bool readResult, DiffResult result)
 {
     readResult = reader.Read();
     if (!readResult || reader.NodeType != XmlNodeType.EndElement)
     {
         DifferenceFound(DifferenceType.CHILD_NODELIST_LENGTH_ID, result);
     }
 }
示例#5
0
        private void CompareText(DiffResult result)
        {
            string controlText = _controlReader.Value;
            string testText    = _testReader.Value;

            if (!String.Equals(controlText, testText))
            {
                DifferenceFound(DifferenceType.TEXT_VALUE_ID, result);
            }
        }
示例#6
0
 ///<summary></summary>
 public DiffResult Compare()
 {
     if (_diffResult == null)
     {
         _diffResult = new DiffResult();
         if (!_controlReader.Equals(_testReader))
         {
             Compare(_diffResult);
         }
     }
     return(_diffResult);
 }
示例#7
0
		///<summary></summary>
		public DiffResult Compare()
		{
			if (_diffResult == null)
			{
				_diffResult = new DiffResult();
				if (!_controlReader.Equals(_testReader))
				{
					Compare(_diffResult);
				}
			}
			return _diffResult;
		}
示例#8
0
        private void CompareNodes(DiffResult result)
        {
            XmlNodeType controlNodeType = _controlReader.NodeType;
            XmlNodeType testNodeType    = _testReader.NodeType;

            if (!controlNodeType.Equals(testNodeType))
            {
                CheckNodeTypes(controlNodeType, testNodeType, result);
            }
            else if (controlNodeType == XmlNodeType.Element)
            {
                CompareElements(result);
            }
            else if (controlNodeType == XmlNodeType.Text)
            {
                CompareText(result);
            }
        }
示例#9
0
 private void CheckEmptyOrAtEndElement(DiffResult result,
                                       ref bool controlRead, ref bool testRead)
 {
     if (_controlReader.IsEmptyElement)
     {
         if (!_testReader.IsEmptyElement)
         {
             CheckEndElement(_testReader, ref testRead, result);
         }
     }
     else
     {
         if (_testReader.IsEmptyElement)
         {
             CheckEndElement(_controlReader, ref controlRead, result);
         }
     }
 }
示例#10
0
        private void Compare(DiffResult result)
        {
            bool controlRead, testRead;

            try
            {
                do
                {
                    controlRead = _controlReader.Read();
                    testRead    = _testReader.Read();
                    Compare(result, ref controlRead, ref testRead);
                } while (controlRead && testRead);
            }
            catch (FlowControlException e)
            {
                Console.Out.WriteLine(e.Message);
            }
        }
示例#11
0
 private void Compare(DiffResult result, ref bool controlRead, ref bool testRead)
 {
     if (controlRead)
     {
         if (testRead)
         {
             CompareNodes(result);
             CheckEmptyOrAtEndElement(result, ref controlRead, ref testRead);
         }
         else
         {
             DifferenceFound(DifferenceType.CHILD_NODELIST_LENGTH_ID, result);
         }
     }
     //jh added this; under a condition I haven't got into an xdiff test yet, the
     // 'test' guy still had more children, and this fact was being missed by the above code
     if (controlRead != testRead)
     {
         DifferenceFound(DifferenceType.CHILD_NODELIST_LENGTH_ID, result);
     }
 }
示例#12
0
        private void CompareElements(DiffResult result)
        {
            string controlTagName = _controlReader.Name;
            string testTagName    = _testReader.Name;

            if (!String.Equals(controlTagName, testTagName))
            {
                DifferenceFound(DifferenceType.ELEMENT_TAG_NAME_ID, result);
            }
            else
            {
                int controlAttributeCount = _controlReader.AttributeCount;
                int testAttributeCount    = _testReader.AttributeCount;
                if (controlAttributeCount != testAttributeCount)
                {
                    DifferenceFound(DifferenceType.ELEMENT_NUM_ATTRIBUTES_ID, result);
                }
                else
                {
                    CompareAttributes(result, controlAttributeCount);
                }
            }
        }
示例#13
0
		private void Compare(DiffResult result, ref bool controlRead, ref bool testRead)
		{
			if (controlRead)
			{
				if (testRead)
				{
					CompareNodes(result);
					CheckEmptyOrAtEndElement(result, ref controlRead, ref testRead);
				}
				else
				{
					DifferenceFound(DifferenceType.CHILD_NODELIST_LENGTH_ID, result);
				}
			}
			//jh added this; under a condition I haven't got into an xdiff test yet, the
			// 'test' guy still had more children, and this fact was being missed by the above code
			if (controlRead != testRead)
			{
					DifferenceFound(DifferenceType.CHILD_NODELIST_LENGTH_ID, result);
			}
		}
示例#14
0
		private void CheckNodeTypes(XmlNodeType controlNodeType, XmlNodeType testNodeType, DiffResult result)
		{
			XmlReader readerToAdvance = null;
			if (controlNodeType.Equals(XmlNodeType.XmlDeclaration))
			{
				readerToAdvance = _controlReader;
			}
			else if (testNodeType.Equals(XmlNodeType.XmlDeclaration))
			{
				readerToAdvance = _testReader;
			}

			if (readerToAdvance != null)
			{
				DifferenceFound(DifferenceType.HAS_XML_DECLARATION_PREFIX_ID,
								controlNodeType, testNodeType, result);
				readerToAdvance.Read();
				CompareNodes(result);
			}
			else
			{
				DifferenceFound(DifferenceType.NODE_TYPE_ID, controlNodeType,
								testNodeType, result);
			}
		}
示例#15
0
		private void CompareElements(DiffResult result)
		{
			string controlTagName = _controlReader.Name;
			string testTagName = _testReader.Name;
			if (!String.Equals(controlTagName, testTagName))
			{
				DifferenceFound(DifferenceType.ELEMENT_TAG_NAME_ID, result);
			}
			else
			{
				int controlAttributeCount = _controlReader.AttributeCount;
				int testAttributeCount = _testReader.AttributeCount;
				if (controlAttributeCount != testAttributeCount)
				{
					DifferenceFound(DifferenceType.ELEMENT_NUM_ATTRIBUTES_ID, result);
				}
				else
				{
					CompareAttributes(result, controlAttributeCount);
				}
			}
		}
示例#16
0
		private void CompareAttributes(DiffResult result, int controlAttributeCount)
		{
			string controlAttrValue, controlAttrName;
			string testAttrValue, testAttrName;

			_controlReader.MoveToFirstAttribute();
			_testReader.MoveToFirstAttribute();
			for (int i = 0; i < controlAttributeCount; ++i)
			{

				controlAttrName = _controlReader.Name;
				testAttrName = _testReader.Name;

				controlAttrValue = _controlReader.Value;
				testAttrValue = _testReader.Value;

				if (!String.Equals(controlAttrName, testAttrName))
				{
					DifferenceFound(DifferenceType.ATTR_SEQUENCE_ID, result);

					if (!_testReader.MoveToAttribute(controlAttrName))
					{
						DifferenceFound(DifferenceType.ATTR_NAME_NOT_FOUND_ID, result);
					}
					testAttrValue = _testReader.Value;
				}

				if (!String.Equals(controlAttrValue, testAttrValue))
				{
					DifferenceFound(DifferenceType.ATTR_VALUE_ID, result);
				}

				_controlReader.MoveToNextAttribute();
				_testReader.MoveToNextAttribute();
			}
		}
示例#17
0
		private void CompareText(DiffResult result)
		{
			string controlText = _controlReader.Value;
			string testText = _testReader.Value;
			if (!String.Equals(controlText, testText))
			{
				DifferenceFound(DifferenceType.TEXT_VALUE_ID, result);
			}
		}
示例#18
0
		private void DifferenceFound(DifferenceType differenceType, DiffResult result)
		{
			DifferenceFound(new Difference(differenceType), result);
		}
示例#19
0
 private void DifferenceFound(DifferenceType differenceType, DiffResult result)
 {
     DifferenceFound(new Difference(differenceType), result);
 }
示例#20
0
		private void DifferenceFound(Difference difference, DiffResult result)
		{
			result.DifferenceFound(this, difference);
			if (!ContinueComparison(difference))
			{
				throw new FlowControlException(difference);
			}
		}
示例#21
0
		private void DifferenceFound(DifferenceType differenceType,
									 XmlNodeType controlNodeType,
									 XmlNodeType testNodeType,
									 DiffResult result)
		{
			DifferenceFound(new Difference(differenceType, controlNodeType, testNodeType),
							result);
		}
示例#22
0
        private void CheckNodeTypes(XmlNodeType controlNodeType, XmlNodeType testNodeType, DiffResult result)
        {
            XmlReader readerToAdvance = null;

            if (controlNodeType.Equals(XmlNodeType.XmlDeclaration))
            {
                readerToAdvance = _controlReader;
            }
            else if (testNodeType.Equals(XmlNodeType.XmlDeclaration))
            {
                readerToAdvance = _testReader;
            }

            if (readerToAdvance != null)
            {
                DifferenceFound(DifferenceType.HAS_XML_DECLARATION_PREFIX_ID,
                                controlNodeType, testNodeType, result);
                readerToAdvance.Read();
                CompareNodes(result);
            }
            else
            {
                DifferenceFound(DifferenceType.NODE_TYPE_ID, controlNodeType,
                                testNodeType, result);
            }
        }
示例#23
0
		private void CheckEmptyOrAtEndElement(DiffResult result,
											  ref bool controlRead, ref bool testRead)
		{
			if (_controlReader.IsEmptyElement)
			{
				if (!_testReader.IsEmptyElement)
				{
					CheckEndElement(_testReader, ref testRead, result);
				}
			}
			else
			{
				if (_testReader.IsEmptyElement)
				{
					CheckEndElement(_controlReader, ref controlRead, result);
				}
			}
		}
示例#24
0
		private void CompareNodes(DiffResult result)
		{
			XmlNodeType controlNodeType = _controlReader.NodeType;
			XmlNodeType testNodeType = _testReader.NodeType;
			if (!controlNodeType.Equals(testNodeType))
			{
				CheckNodeTypes(controlNodeType, testNodeType, result);
			}
			else if (controlNodeType == XmlNodeType.Element)
			{
				CompareElements(result);
			}
			else if (controlNodeType == XmlNodeType.Text)
			{
				CompareText(result);
			}
		}
示例#25
0
		private void Compare(DiffResult result)
		{
			bool controlRead, testRead;
			try
			{
				do
				{
					controlRead = _controlReader.Read();
					testRead = _testReader.Read();
					Compare(result, ref controlRead, ref testRead);
				} while (controlRead && testRead);
			}
			catch (FlowControlException e)
			{
				Console.Out.WriteLine(e.Message);
			}
		}
示例#26
0
		private void CheckEndElement(XmlReader reader, ref bool readResult, DiffResult result)
		{
			readResult = reader.Read();
			if (!readResult || reader.NodeType != XmlNodeType.EndElement)
			{
				DifferenceFound(DifferenceType.CHILD_NODELIST_LENGTH_ID, result);
			}
		}