blob: 9e081d94d1adfbf46cd0d7fbdb17a1705e359d90 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.oxm.platform;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.eclipse.persistence.platform.xml.XMLComparer;
import org.eclipse.persistence.testing.oxm.OXTestCase;
import org.w3c.dom.Attr;
import org.w3c.dom.CDATASection;
import org.w3c.dom.Comment;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentFragment;
import org.w3c.dom.DocumentType;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Element;
import org.w3c.dom.EntityReference;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.ProcessingInstruction;
import org.w3c.dom.Text;
public class XMLComparerTestCases extends OXTestCase {
private XMLComparer xmlComparer;
private DocumentBuilder documentBuilder;
private Document document;
public XMLComparerTestCases(String name) {
super(name);
}
@Override
public void setUp() throws Exception {
xmlComparer = new XMLComparer();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
documentBuilder = dbf.newDocumentBuilder();
document = documentBuilder.newDocument();
}
public void testNode_BothNull() {
assertTrue(xmlComparer.isNodeEqual(null, null));
}
public void testNode_controlNull() {
assertFalse(xmlComparer.isNodeEqual(null, document));
}
public void testNode_testNull() {
assertFalse(xmlComparer.isNodeEqual(document, null));
}
public void testNode_differentTypes() {
Text test = document.createTextNode("a");
assertFalse(xmlComparer.isNodeEqual(document, test));
}
public void testAttribute_same1() {
Attr control = document.createAttribute("a");
Attr test = document.createAttribute("a");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_same2() {
Attr control = document.createAttributeNS("a", "b");
Attr test = document.createAttributeNS("a", "b");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_same3() {
Attr control = document.createAttribute("a");
control.setValue("c");
Attr test = document.createAttribute("a");
test.setValue("c");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_same4() {
Attr control = document.createAttributeNS("a", "b");
control.setValue("c");
Attr test = document.createAttributeNS("a", "b");
test.setValue("c");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_same5() {
Attr control = document.createAttributeNS("ns1:a", "b");
control.setValue("c");
Attr test = document.createAttributeNS("ns1:a", "b");
test.setValue("c");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_diff1() {
Attr control = document.createAttribute("a");
Attr test = document.createAttribute("x");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_diff2a() {
Attr control = document.createAttributeNS("a", "b");
Attr test = document.createAttribute("a");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_diff2b() {
Attr control = document.createAttributeNS("a", "b");
Attr test = document.createAttributeNS("a", "y");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_diff2c() {
Attr control = document.createAttributeNS("a", "b");
Attr test = document.createAttributeNS("x", "b");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_diff3a() {
Attr control = document.createAttribute("a");
control.setValue("c");
Attr test = document.createAttribute("a");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_diff3b() {
Attr control = document.createAttribute("a");
control.setValue("c");
Attr test = document.createAttribute("a");
test.setValue("z");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_diff4a() {
Attr control = document.createAttributeNS("a", "b");
control.setValue("c");
Attr test = document.createAttributeNS("a", "b");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_diff4b() {
Attr control = document.createAttributeNS("a", "b");
control.setValue("c");
Attr test = document.createAttributeNS("a", "b");
test.setValue("z");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_diff5a() {
Attr control = document.createAttributeNS("ns1:a", "b");
control.setValue("c");
Attr test = document.createAttributeNS("a", "b");
test.setValue("c");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testAttribute_diff5b() {
Attr control = document.createAttributeNS("ns1:a", "b");
control.setValue("c");
Attr test = document.createAttributeNS("ns2:a", "b");
test.setValue("c");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testCDATASection_same() {
CDATASection control = document.createCDATASection("a");
CDATASection test = document.createCDATASection("a");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testCDATASection_diff() {
CDATASection control = document.createCDATASection("a");
CDATASection test = document.createCDATASection("x");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testComment_same() {
Comment control = document.createComment("a");
Comment test = document.createComment("a");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testComment_diff() {
Comment control = document.createComment("a");
Comment test = document.createComment("b");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testDocument_same1() {
Document control = documentBuilder.newDocument();
Document test = documentBuilder.newDocument();
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testDocument_same2() {
DOMImplementation domImpl = documentBuilder.getDOMImplementation();
DocumentType controlDocumentType = domImpl.createDocumentType("a", "b", "c");
Document control = domImpl.createDocument(null, "a", controlDocumentType);
DocumentType testDocumentType = domImpl.createDocumentType("a", "b", "c");
Document test = domImpl.createDocument(null, "a", testDocumentType);
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testDocument_diff2a() {
DOMImplementation domImpl = documentBuilder.getDOMImplementation();
DocumentType controlDocumentType = domImpl.createDocumentType("a", "b", "c");
Document control = domImpl.createDocument(null, "a", controlDocumentType);
Document test = documentBuilder.newDocument();
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testDocument_diff2b() {
DOMImplementation domImpl = documentBuilder.getDOMImplementation();
DocumentType controlDocumentType = domImpl.createDocumentType("a", "b", "c");
Document control = domImpl.createDocument(null, "a", controlDocumentType);
DocumentType testDocumentType = domImpl.createDocumentType("x", "y", "z");
Document test = domImpl.createDocument(null, "x", testDocumentType);
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testDocument_diff3() {
Document control = documentBuilder.newDocument();
Element child = control.createElement("theroot");
control.appendChild(child);
Document test = documentBuilder.newDocument();
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testDocumentFragment_same() {
DocumentFragment control = document.createDocumentFragment();
control.appendChild(document.createElement("a1"));
control.appendChild(document.createElement("a2"));
DocumentFragment test = document.createDocumentFragment();
test.appendChild(document.createElement("a1"));
test.appendChild(document.createElement("a2"));
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testDocumentFragment_diffa() {
DocumentFragment control = document.createDocumentFragment();
control.appendChild(document.createElement("a1"));
control.appendChild(document.createElement("a2"));
DocumentFragment test = document.createDocumentFragment();
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testDocumentFragment_diffb() {
DocumentFragment control = document.createDocumentFragment();
control.appendChild(document.createElement("a1"));
control.appendChild(document.createElement("a2"));
DocumentFragment test = document.createDocumentFragment();
test.appendChild(document.createElement("a1"));
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testDocumentFragment_diffc() {
DocumentFragment control = document.createDocumentFragment();
control.appendChild(document.createElement("a1"));
control.appendChild(document.createElement("a2"));
DocumentFragment test = document.createDocumentFragment();
test.appendChild(document.createElement("a2"));
test.appendChild(document.createElement("a1"));
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testDocumentType_same1() {
DOMImplementation domImpl = documentBuilder.getDOMImplementation();
DocumentType control = domImpl.createDocumentType("a", null, null);
DocumentType test = domImpl.createDocumentType("a", null, null);
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testDocumentType_same2() {
DOMImplementation domImpl = documentBuilder.getDOMImplementation();
DocumentType control = domImpl.createDocumentType("a", "b", null);
DocumentType test = domImpl.createDocumentType("a", "b", null);
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testDocumentType_same3() {
DOMImplementation domImpl = documentBuilder.getDOMImplementation();
DocumentType control = domImpl.createDocumentType("a", "b", "c");
DocumentType test = domImpl.createDocumentType("a", "b", "c");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testDocumentType_diff1() {
DOMImplementation domImpl = documentBuilder.getDOMImplementation();
DocumentType control = domImpl.createDocumentType("a", null, null);
DocumentType test = domImpl.createDocumentType("x", null, null);
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testDocumentType_diff2a() {
DOMImplementation domImpl = documentBuilder.getDOMImplementation();
DocumentType control = domImpl.createDocumentType("a", "b", null);
DocumentType test = domImpl.createDocumentType("a", null, null);
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testDocumentType_diff2b() {
DOMImplementation domImpl = documentBuilder.getDOMImplementation();
DocumentType control = domImpl.createDocumentType("a", "b", null);
DocumentType test = domImpl.createDocumentType("a", "y", null);
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testDocumentType_diff3a() {
DOMImplementation domImpl = documentBuilder.getDOMImplementation();
DocumentType control = domImpl.createDocumentType("a", "b", "c");
DocumentType test = domImpl.createDocumentType("a", "b", null);
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testDocumentType_diff3b() {
DOMImplementation domImpl = documentBuilder.getDOMImplementation();
DocumentType control = domImpl.createDocumentType("a", "b", "c");
DocumentType test = domImpl.createDocumentType("a", "b", "z");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_same1() {
Element control = document.createElement("a");
Element test = document.createElement("a");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testElement_same2() {
Element control = document.createElementNS("a", "b");
Element test = document.createElementNS("a", "b");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testElement_same3() {
Element control = document.createElement("a");
control.setAttribute("a1", "c1");
control.setAttribute("a2", "c2");
Element test = document.createElement("a");
test.setAttribute("a1", "c1");
test.setAttribute("a2", "c2");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testElement_same4() {
Element control = document.createElement("a");
control.appendChild(document.createElement("a1"));
control.appendChild(document.createElement("a2"));
Element test = document.createElement("a");
test.appendChild(document.createElement("a1"));
test.appendChild(document.createElement("a2"));
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testElement_same5() {
Element control = document.createElementNS("ns1:a", "b");
Element test = document.createElementNS("ns1:a", "b");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testElement_same6() {
Element control = document.createElementNS("ns1", "ns1:a");
control.setAttributeNS("ns1", "ns1:a1", "c1");
control.setAttributeNS("ns1", "ns1:a2", "c2");
Element test = document.createElementNS("ns1", "ns1:a");
test.setAttributeNS("ns1", "ns1:a1", "c1");
test.setAttributeNS("ns1", "ns1:a2", "c2");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff1() {
Element control = document.createElement("a");
Element test = document.createElement("x");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff2a() {
Element control = document.createElementNS("a", "b");
Element test = document.createElement("a");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff2b() {
Element control = document.createElementNS("a", "b");
Element test = document.createElementNS("a", "y");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff2c() {
Element control = document.createElementNS("a", "b");
Element test = document.createElementNS("x", "b");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff3a() {
Element control = document.createElement("a");
control.setAttribute("a1", "c1");
control.setAttribute("a2", "c2");
Element test = document.createElement("a");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff3b() {
Element control = document.createElement("a");
control.setAttribute("a1", "c1");
control.setAttribute("a2", "c2");
Element test = document.createElement("a");
test.setAttribute("a1", "c1");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff3c() {
Element control = document.createElement("a");
control.setAttribute("a1", "c1");
control.setAttribute("a2", "c2");
Element test = document.createElement("a");
test.setAttribute("a2", "c2");
test.setAttribute("a1", "c1");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff4a() {
Element control = document.createElement("a");
control.appendChild(document.createElement("a1"));
control.appendChild(document.createElement("a2"));
Element test = document.createElement("a");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff4b() {
Element control = document.createElement("a");
control.appendChild(document.createElement("a1"));
control.appendChild(document.createElement("a2"));
Element test = document.createElement("a");
test.appendChild(document.createElement("a1"));
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff4c() {
Element control = document.createElement("a");
control.appendChild(document.createElement("a1"));
control.appendChild(document.createElement("a2"));
Element test = document.createElement("a");
test.appendChild(document.createElement("a2"));
test.appendChild(document.createElement("a1"));
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff5a() {
Element control = document.createElementNS("ns1:a", "b");
Element test = document.createElementNS("a", "b");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff5b() {
Element control = document.createElementNS("ns1:a", "b");
Element test = document.createElementNS("ns2:a", "b");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff6a() {
Element control = document.createElementNS("ns1", "ns1:a");
control.setAttributeNS("ns1", "ns1:a1", "c1");
control.setAttributeNS("ns1", "ns1:a2", "c2");
Element test = document.createElementNS("ns1", "ns1:a");
test.setAttributeNS("ns1", "ns1:a2", "c2");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff6b() {
Element control = document.createElementNS("ns1", "ns1:a");
control.setAttributeNS("ns1", "ns1:a1", "c1");
control.setAttributeNS("ns1", "ns1:a2", "c2");
Element test = document.createElementNS("ns1", "ns1:a");
test.setAttributeNS("ns1", "ns1:a1", "c2");
test.setAttributeNS("ns1", "ns1:a2", "c2");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testElement_diff6c() {
Element control = document.createElementNS("ns1", "ns1:a");
control.setAttributeNS("ns1", "ns1:a1", "c1");
control.setAttributeNS("ns1", "ns1:a2", "c2");
Element test = document.createElementNS("ns1", "ns1:a");
test.setAttributeNS("ns1", "ns1:a2", "c2");
test.setAttributeNS("ns1", "ns1:a3", "c3");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testEntityReference_same() {
EntityReference control = document.createEntityReference("a");
EntityReference test = document.createEntityReference("a");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testEntityReference_diff() {
EntityReference control = document.createEntityReference("a");
EntityReference test = document.createEntityReference("x");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testProcessingInstruction_same() {
ProcessingInstruction control = document.createProcessingInstruction("a", "b");
ProcessingInstruction test = document.createProcessingInstruction("a", "b");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testProcessingInstruction_diffa() {
ProcessingInstruction control = document.createProcessingInstruction("a", "b");
ProcessingInstruction test = document.createProcessingInstruction("a", "y");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testProcessingInstruction_diffb() {
ProcessingInstruction control = document.createProcessingInstruction("a", "b");
ProcessingInstruction test = document.createProcessingInstruction("x", "b");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
public void testText_same() {
Text control = document.createTextNode("a");
Text test = document.createTextNode("a");
assertTrue(xmlComparer.isNodeEqual(control, test));
}
public void testText_diff() {
Text control = document.createTextNode("a");
Text test = document.createTextNode("b");
assertFalse(xmlComparer.isNodeEqual(control, test));
}
}