public void Compare2()
        {
            // sibling/following/preceding
            XNodeDocumentOrderComparer c = XNode.DocumentOrderComparer;
            XElement el = XElement.Parse("<n1><n11><n111/><n112/></n11><n12><n121><n1211/><n1212/></n121></n12></n1>");

            Assert.IsTrue(c.Compare(el.FirstNode, el.LastNode) < 0, "#3-1");                         // following-sibling
            Assert.IsTrue(c.Compare(el.LastNode, el.FirstNode) > 0, "#3-2");                         // preceding-sibling
            Assert.IsTrue(c.Compare(el.FirstNode, ((XContainer)el.LastNode).FirstNode) < 0, "#3-3"); // following
            Assert.IsTrue(c.Compare(((XContainer)el.LastNode).FirstNode, el.FirstNode) > 0, "#3-4"); // preceding
        }
        public void Compare1()
        {
            // ancestors/descendants
            XNodeDocumentOrderComparer c = XNode.DocumentOrderComparer;
            XElement el = XElement.Parse("<foo><bar/></foo>");

            Assert.IsTrue(c.Compare(el, el.FirstNode) < 0, "#1-1");
            Assert.IsTrue(c.Compare(el.FirstNode, el) > 0, "#1-2");

            XDocument doc = XDocument.Parse("<foo><bar/></foo>");

            Assert.IsTrue(c.Compare(doc, doc.FirstNode) < 0, "#2-1");
            Assert.IsTrue(c.Compare(doc.FirstNode, doc) > 0, "#2-2");

            el = XDocument.Parse("<root><foo><f1/><f2/></foo><bar/></root>").Root;
            XElement e2 = el.FirstNode as XElement;

            Assert.IsTrue(c.Compare(e2, e2.FirstNode) < 0, "#3-1");
            Assert.IsTrue(c.Compare(e2, e2.LastNode) < 0, "#3-2");
        }