/*
* Copyright (c) 2013 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.apidiff;
import com.emc.storageos.apidiff.util.XmlDiff;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.StringReader;
/**
* Tests basic functions of class XmlDiff
*/
public class XmlDiffTest {
private Document oldDocument;
private Document newDocument;
@Before
public void setUp() throws IOException, JDOMException {
SAXBuilder saxBuilder = new SAXBuilder();
saxBuilder.setReuseParser(true);
String source = "<tag_changes>\n" +
" <same>" +
" <tag>...</tag>" +
" </same>\n" +
" <add>" +
" </add>\n" +
" <!--...more \"add\" elements...-->\n" +
" <remove>" +
" <tag>...</tag>" +
" </remove>\n" +
" <!--...more \"remove\" elements...-->\n" +
"</tag_changes>";
String dest = "<tag_changes>\n" +
" <same>" +
" <tag>...</tag>" +
" </same>\n" +
" <add>" +
" <tag>...</tag>" +
" </add>\n" +
" <!--...more \"add\" elements...-->\n" +
" <remove>" +
" </remove>\n" +
"</tag_changes>";
oldDocument = saxBuilder.build(new StringReader(source));
newDocument = saxBuilder.build(new StringReader(dest));
}
@Test
public void testSameElement() {
Element oldElement = oldDocument.getRootElement().getChild("same").clone();
Element newElement = newDocument.getRootElement().getChild("same").clone();
boolean ret = XmlDiff.compareElement(oldElement, newElement);
Assert.assertTrue(ret);
}
@Test
public void testElementAdd() {
Element oldElement = oldDocument.getRootElement().getChild("add").clone();
Element newElement = newDocument.getRootElement().getChild("add").clone();
boolean ret = XmlDiff.compareElement(oldElement, newElement);
Assert.assertFalse(ret);
Assert.assertEquals(oldElement.getChildren().size() + 1, newElement.getChildren().size());
}
@Test
public void testElementRemove() {
Element oldElement = oldDocument.getRootElement().getChild("remove").clone();
Element newElement = newDocument.getRootElement().getChild("remove").clone();
boolean ret = XmlDiff.compareElement(oldElement, newElement);
Assert.assertFalse(ret);
Assert.assertEquals(oldElement.getChildren().size() - 1, newElement.getChildren().size());
}
}