blob: 267f6274ffbae97924010afe113ac69e196fad26 [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.sdo.model.dataobject.xpathengine;
import commonj.sdo.DataObject;
import commonj.sdo.helper.XMLDocument;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;
import junit.textui.TestRunner;
import org.eclipse.persistence.sdo.SDODataObject;
import org.eclipse.persistence.sdo.helper.SDODataFactory;
import org.eclipse.persistence.testing.sdo.SDOTestCase;
import org.eclipse.persistence.exceptions.SDOException;
public class XPathEngineSimpleTestCases extends SDOTestCase {
private DataObject rootObject;
public XPathEngineSimpleTestCases(String name) {
super(name);
}
public static void main(String[] args) {
String[] arguments = { "-c", "org.eclipse.persistence.testing.sdo.model.dataobject.xpathengine.XPathEngineSimpleTestCases" };
TestRunner.main(arguments);
}
@Override
public void setUp() {
super.setUp();
try {
InputStream is = new FileInputStream("org/eclipse/persistence/testing/sdo/model/dataobject/xpathengine/PurchaseOrderXPathEngine.xsd");
List types = xsdHelper.define(is, null);
XMLDocument document = xmlHelper.load(new FileInputStream("org/eclipse/persistence/testing/sdo/model/dataobject/xpathengine/purchaseOrderXPathEngine.xml"));
rootObject = document.getRootObject();
} catch (Exception e) {
e.printStackTrace();
fail("An error occurred loading the xsd");
}
}
// ------------------- Literal tests -------------------//
public void testQuotedStringQueryWithoutWhitespace1() {
Object returnValue = rootObject.get("items/item[partNum= \'926-AA\']");
assertTrue(returnValue instanceof DataObject);
assertEquals("Baby Monitor", ((DataObject)returnValue).get("productName"));
}
public void testQuotedStringQueryWithoutWhitespace2() {
Object returnValue = rootObject.get("items/item[partNum = \"926-AA\"]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Baby Monitor", ((DataObject)returnValue).get("productName"));
}
public void testQuotedStringQueryWithoutWhitespace3() {
Object returnValue = rootObject.get("items/item[partNum =\"926-AA\"]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Baby Monitor", ((DataObject)returnValue).get("productName"));
}
public void testInvalidQuotedStringQueryWithWhitespace1() {
Object returnValue = rootObject.get("items/item[partNum=\' 926-AA\']");
// should fail
assertTrue(returnValue == null);
}
public void testInvalidQuotedStringQueryWithWhitespace2() {
Object returnValue = rootObject.get("items/item[partNum = \" 926-AA\"]");
// should fail
assertTrue(returnValue == null);
}
public void testInvalidQuotedStringQueryWithWhitespace3() {
Object returnValue = rootObject.get("items/item[partNum= \" 926-AA\"]");
// should fail
assertTrue(returnValue == null);
}
public void testInvalidQuotedStringQueryWithWhitespace4() {
Object returnValue = rootObject.get("items/item[partNum =\" 926-AA\"]");
// should fail
assertTrue(returnValue == null);
}
public void testValidQuotedStringQueryWithWhitespace1() {
Object returnValue = rootObject.get("items/item[partNum=\' 872-AA\']");
assertTrue(returnValue instanceof DataObject);
assertEquals("Lawnmower", ((DataObject)returnValue).get("productName"));
}
public void testValidQuotedStringQueryWithWhitespace2() {
Object returnValue = rootObject.get("items/item[partNum = \" 872-AA\"]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Lawnmower", ((DataObject)returnValue).get("productName"));
}
public void testValidQuotedStringQueryWithWhitespace3() {
Object returnValue = rootObject.get("items/item[partNum= \" 872-AA\"]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Lawnmower", ((DataObject)returnValue).get("productName"));
}
public void testValidQuotedStringQueryWithWhitespace4() {
Object returnValue = rootObject.get("items/item[partNum =\" 872-AA\"]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Lawnmower", ((DataObject)returnValue).get("productName"));
}
public void testStringQueryWithWhitespaces1() {
Object returnValue = rootObject.get("items/item[partNum= 926-AA]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Baby Monitor", ((DataObject)returnValue).get("productName"));
}
public void testStringQueryWithWhitespaces2() {
Object returnValue = rootObject.get("items/item[partNum =926-AA]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Baby Monitor", ((DataObject)returnValue).get("productName"));
}
public void testStringQueryWithWhitespaces3() {
Object returnValue = rootObject.get("items/item[partNum = 926-AA]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Baby Monitor", ((DataObject)returnValue).get("productName"));
}
// ------------------- Number tests -------------------//
public void testFloatQueryWithWhitespaces1() {
Object returnValue = rootObject.get("items/item[USPrice = 148.95]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Lawnmower", ((DataObject)returnValue).get("productName"));
}
public void testFloatQueryWithWhitespaces2() {
Object returnValue = rootObject.get("items/item[USPrice= 148.95]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Lawnmower", ((DataObject)returnValue).get("productName"));
}
public void testFloatQueryWithWhitespaces3() {
Object returnValue = rootObject.get("items/item[USPrice =148.95]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Lawnmower", ((DataObject)returnValue).get("productName"));
}
// ------------------- Boolean tests -------------------//
public void testBooleanQueryWithWhitespaces1() {
Object returnValue = rootObject.get("items/item[specialOrder = true]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Lawnmower", ((DataObject)returnValue).get("productName"));
}
public void testBooleanQueryWithWhitespaces2() {
Object returnValue = rootObject.get("items/item[specialOrder= true]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Lawnmower", ((DataObject)returnValue).get("productName"));
}
public void testBooleanQueryWithWhitespaces3() {
Object returnValue = rootObject.get("items/item[specialOrder =true]");
assertTrue(returnValue instanceof DataObject);
assertEquals("Lawnmower", ((DataObject)returnValue).get("productName"));
}
// ------------------- Set with unreachable path tests -------------------//
public void testSetPropertyOnNullDataObject() {
boolean expectedEx = false;
boolean unexpectedEx = false;
try {
SDODataFactory factory = (SDODataFactory) getHelperContext().getDataFactory();
SDODataObject po = (SDODataObject) factory.create("http://www.example.org", "PurchaseOrderType");
po.set("customer/gender", "male");
} catch (SDOException sdoex) {
// ensure the correct SDO exception was thrown
if (sdoex.getMessage().lastIndexOf("Cannot perform operation on property") != -1) {
expectedEx = true;
}
} catch (Exception x) {
unexpectedEx = true;
}
assertTrue("An SDOException was not thrown as expceted.", expectedEx);
assertFalse("An unexpected exception occurred.", unexpectedEx);
}
public void testSetPropertyOnNullNestedDataObject() {
boolean expectedEx = false;
boolean unexpectedEx = false;
try {
SDODataFactory factory = (SDODataFactory) getHelperContext().getDataFactory();
SDODataObject po = (SDODataObject) factory.create("http://www.example.org", "PurchaseOrderType");
SDODataObject items = (SDODataObject) po.createDataObject("items");
items.createDataObject("item");
po.set("items/item.0/partslist/partNumber", "989");
} catch (SDOException sdoex) {
// ensure the correct SDO exception was thrown
if (sdoex.getMessage().lastIndexOf("Cannot perform operation on property") != -1) {
expectedEx = true;
}
} catch (Exception x) {
unexpectedEx = true;
}
assertTrue("An SDOException was not thrown as expceted.", expectedEx);
assertFalse("An unexpected exception occurred.", unexpectedEx);
}
public void testSetPropertyOnNullListWrapper() {
boolean expectedEx = false;
boolean unexpectedEx = false;
try {
SDODataFactory factory = (SDODataFactory) getHelperContext().getDataFactory();
SDODataObject po = (SDODataObject) factory.create("http://www.example.org", "PurchaseOrderType");
po.createDataObject("items");
po.set("items/item[1]/productName", "Gizmo");
} catch (SDOException sdoe) {
expectedEx = true;
} catch (Exception x) {
unexpectedEx = true;
}
assertTrue("An SDOException was not thrown as expceted.", expectedEx);
assertFalse("An unexpected exception occurred.", unexpectedEx);
}
}