コード例 #1
0
        /// <summary>
        /// Compares the 2 Xml subtrees.
        /// </summary>
        /// <param name="lhs">The left-hand side Xml subtree</param>
        /// <param name="rhs">The right-hand side Xml subtree</param>
        /// <param name="filter">The XmlNodeType filter to apply during comparison</param>
        public void CompareXML(XmlNode lhs, XmlNode rhs, IXmlNodeFilter filter)
        {
            bool lhsFilter = filter.Filter(lhs);
            bool rhsFilter = filter.Filter(rhs);

            Assert.AreEqual(lhsFilter, rhsFilter);

            // At this point, lhsFilter and rhsFilter are known to be equal.
            // If both elements should be filtered, avoid comparing the subtrees altogether.
            if (!lhsFilter)
            {
                _CompareXML(lhs, rhs, filter);
            }
        }
コード例 #2
0
        /// <summary>
        /// Compares the 2 Xml subtrees.
        /// </summary>
        /// <param name="lhs">The left-hand side Xml subtree</param>
        /// <param name="rhs">The right-hand side Xml subtree</param>
        /// <param name="filter">The XmlNodeType filter to apply during comparison</param>
        public void CompareXML(XmlNode lhs, XmlNode rhs, IXmlNodeFilter filter)
        {
            bool lhsFilter = filter.Filter(lhs);
            bool rhsFilter = filter.Filter(rhs);

            Assert.AreEqual(lhsFilter, rhsFilter);

            // At this point, lhsFilter and rhsFilter are known to be equal.
            // If both elements should be filtered, avoid comparing the subtrees altogether.
            if (!lhsFilter)
            {
                _CompareXML(lhs, rhs, filter);
            }
        }
コード例 #3
0
        /// <summary>
        /// Compares the 2 Xml collections.
        /// </summary>
        /// <param name="lhs">The left-hand side Xml collection enumerator</param>
        /// <param name="rhs">The right-hand side Xml collection enumerator</param>
        /// <param name="filter">The XmlNodeType filter to apply during comparison</param>
        private void CompareXML(IEnumerator lhs, IEnumerator rhs, IXmlNodeFilter filter)
        {
            bool lhsNext = lhs != null && lhs.MoveNext();
            bool rhsNext = rhs != null && rhs.MoveNext();

            while (lhsNext && rhsNext)
            {
                XmlNode lhsChild = (XmlNode)lhs.Current;
                XmlNode rhsChild = (XmlNode)rhs.Current;

                if (filter.Filter(lhsChild))
                {
                    lhsNext = lhs.MoveNext();
                    continue;
                }
                else if (filter.Filter(rhsChild))
                {
                    rhsNext = rhs.MoveNext();
                    continue;
                }

                _CompareXML(lhsChild, rhsChild, filter);

                lhsNext = lhs.MoveNext();
                rhsNext = rhs.MoveNext();
            }

            // Ensure that any remaining nodes are filtered
            // and not important for the comparison process
            while (lhsNext)
            {
                Assert.IsTrue(filter.Filter((XmlNode)lhs.Current));
                lhsNext = lhs.MoveNext();
            }

            while (rhsNext)
            {
                Assert.IsTrue(filter.Filter((XmlNode)rhs.Current));
                rhsNext = rhs.MoveNext();
            }
        }
コード例 #4
0
        /// <summary>
        /// Compares the 2 Xml collections.
        /// </summary>
        /// <param name="lhs">The left-hand side Xml collection enumerator</param>
        /// <param name="rhs">The right-hand side Xml collection enumerator</param>
        /// <param name="filter">The XmlNodeType filter to apply during comparison</param>
        private void CompareXML(IEnumerator lhs, IEnumerator rhs, IXmlNodeFilter filter)
        {
            bool lhsNext = lhs != null && lhs.MoveNext();
            bool rhsNext = rhs != null && rhs.MoveNext();

            while (lhsNext && rhsNext)
            {
                XmlNode lhsChild = (XmlNode)lhs.Current;
                XmlNode rhsChild = (XmlNode)rhs.Current;

                if (filter.Filter(lhsChild))
                {
                    lhsNext = lhs.MoveNext();
                    continue;
                }
                else if (filter.Filter(rhsChild))
                {
                    rhsNext = rhs.MoveNext();
                    continue;
                }

                _CompareXML(lhsChild, rhsChild, filter);

                lhsNext = lhs.MoveNext();
                rhsNext = rhs.MoveNext();
            }

            // Ensure that any remaining nodes are filtered
            // and not important for the comparison process
            while (lhsNext)
            {
                Assert.IsTrue(filter.Filter((XmlNode)lhs.Current));
                lhsNext = lhs.MoveNext();
            }

            while (rhsNext)
            {
                Assert.IsTrue(filter.Filter((XmlNode)rhs.Current));
                rhsNext = rhs.MoveNext();
            }
        }