// Path: src/test/org/diffxml/diffxml/TestDocHelper.java
// public final class TestDocHelper {
// 
//     /**
//      * Private constructor.
//      */
//     private TestDocHelper() {
//         //SHouldn't be called
//     }
//     
//     /**
//      * Create an XML Document from a string of XML.
//      * 
//      * Calls fail if any exception is thrown.
//      * 
//      * @param xml The XML to turn into a document.
//      * @return A DOM document representing the string.
//      */
//     public static Document createDocument(final String xml) {
//         
//         Document ret = null;
//         DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
//         DOMOps.initParser(fac);
//                 
//         try {
//             ByteArrayInputStream is = new ByteArrayInputStream(
//                     xml.getBytes("utf-8"));
//             ret = fac.newDocumentBuilder().parse(is);
//         } catch (UnsupportedEncodingException e) {
//             fail("No utf-8 encoder!");
//         } catch (ParserConfigurationException e) {
//             fail("Error configuring parser: " + e.getMessage());
//         } catch (IOException e) {
//             fail("Caught IOException: " + e.getMessage());
//         } catch (SAXException e) {
//             fail("Caught SAXexception: " + e.getMessage());
//         }
//         
//         return ret;
// 
//     }
// }


import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.diffxml.diffxml.TestDocHelper;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
/*
diffxml and patchxml - diff and patch for XML files

Copyright 2013 Adrian Mouat

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

*/
package org.diffxml.diffxml.fmes;



/**
 * Test the NodeFifo works.
 * 
 * Essentially a first-in-first-out form a stack with extra Node operations.
 * 
 * @author Adrian Mouat
 *
 */
public class NodeFifoTest {

    /**
     * Test an empty fifo is empty.
     */
    @Test
    public void testEmptyFifo() {
        
        NodeFifo fifo = new NodeFifo();
        assertTrue(fifo.isEmpty());
        assertNull(fifo.pop());
    }
    
    /**
     * Test nodes are pushed and popped in the right order.
     */
    @Test
    public final void testPushPopOrder() {
        
// Path: src/test/org/diffxml/diffxml/TestDocHelper.java
// public final class TestDocHelper {
// 
//     /**
//      * Private constructor.
//      */
//     private TestDocHelper() {
//         //SHouldn't be called
//     }
//     
//     /**
//      * Create an XML Document from a string of XML.
//      * 
//      * Calls fail if any exception is thrown.
//      * 
//      * @param xml The XML to turn into a document.
//      * @return A DOM document representing the string.
//      */
//     public static Document createDocument(final String xml) {
//         
//         Document ret = null;
//         DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
//         DOMOps.initParser(fac);
//                 
//         try {
//             ByteArrayInputStream is = new ByteArrayInputStream(
//                     xml.getBytes("utf-8"));
//             ret = fac.newDocumentBuilder().parse(is);
//         } catch (UnsupportedEncodingException e) {
//             fail("No utf-8 encoder!");
//         } catch (ParserConfigurationException e) {
//             fail("Error configuring parser: " + e.getMessage());
//         } catch (IOException e) {
//             fail("Caught IOException: " + e.getMessage());
//         } catch (SAXException e) {
//             fail("Caught SAXexception: " + e.getMessage());
//         }
//         
//         return ret;
// 
//     }
// }


// Path: src/test/org/diffxml/diffxml/fmes/NodeFifoTest.java
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.diffxml.diffxml.TestDocHelper;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Node;

/*
diffxml and patchxml - diff and patch for XML files

Copyright 2013 Adrian Mouat

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

*/
package org.diffxml.diffxml.fmes;



/**
 * Test the NodeFifo works.
 * 
 * Essentially a first-in-first-out form a stack with extra Node operations.
 * 
 * @author Adrian Mouat
 *
 */
public class NodeFifoTest {

    /**
     * Test an empty fifo is empty.
     */
    @Test
    public void testEmptyFifo() {
        
        NodeFifo fifo = new NodeFifo();
        assertTrue(fifo.isEmpty());
        assertNull(fifo.pop());
    }
    
    /**
     * Test nodes are pushed and popped in the right order.
     */
    @Test
    public final void testPushPopOrder() {
        
        Document testDoc = TestDocHelper.createDocument("<a><b><c/></b></a>");