/******************************************************************************* * Copyright (c) 2011, 2015 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 v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Blaise Doughan - 2.3 - initial implementation ******************************************************************************/ package org.eclipse.persistence.testing.sdo.model.dataobject.xpathengine; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.eclipse.persistence.sdo.helper.SDOHelperContext; import commonj.sdo.DataObject; import commonj.sdo.helper.DataFactory; import junit.framework.TestCase; public class XPathCharacterTestCases extends TestCase { private static final String CONTROL_PIPE = "100|1"; private static final String CONTROL_PERIOD = "100.1"; private static final String CONTROL_NUMBER_SIGN = "100#1"; private static final String CONTROL_UNDERSCORE = "100_1"; private static final String CONTROL_SLASH = "100/1"; private static final String CONTROL_EXCLAMATION_POINT = "100!1"; private static final String CONTROL_AMPERSAND = "100&1"; private static final String CONTROL_PERCENT = "100%1"; private static final String CONTROL_AT_SIGN = "100@1"; private static final String CONTROL_DOLLAR_SIGN = "100$1"; private static final String CONTROL_SQUARE_BRACKET = "100[1]"; private static final String CONTROL_COLON = "100:1"; private static final String CONTROL_TILDA = "100~1"; private static final String CONTROL_DASH = "100-1"; private static final String XSD_RESOURCE = "org/eclipse/persistence/testing/sdo/model/dataobject/xpathengine/XPathCharacter.xsd"; private static final String TEST_SDO_NS = "http://xmlns.oracle.com/test/xpath"; private DataObject fooSdo; public XPathCharacterTestCases(String name) { super(name); } @Override protected void setUp() throws Exception { SDOHelperContext hc = new SDOHelperContext(); InputStream xsd = XPathCharacterTestCases.class.getClassLoader().getResourceAsStream(XSD_RESOURCE); hc.getXSDHelper().define(xsd, null); xsd.close(); DataFactory df = hc.getDataFactory(); fooSdo = df.create(TEST_SDO_NS, "fooType"); List barList = new ArrayList(14); barList.add(consBar(df, CONTROL_DASH, "bar1")); barList.add(consBar(df, CONTROL_TILDA, "bar2")); barList.add(consBar(df, CONTROL_COLON, "bar3")); barList.add(consBar(df, CONTROL_SQUARE_BRACKET, "bar4")); barList.add(consBar(df, CONTROL_DOLLAR_SIGN, "bar5")); barList.add(consBar(df, CONTROL_AT_SIGN, "bar6")); barList.add(consBar(df, CONTROL_PERCENT, "bar7")); barList.add(consBar(df, CONTROL_AMPERSAND, "bar8")); barList.add(consBar(df, CONTROL_EXCLAMATION_POINT, "bar9")); barList.add(consBar(df, CONTROL_SLASH, "bar10")); barList.add(consBar(df, CONTROL_UNDERSCORE, "bar11")); barList.add(consBar(df, CONTROL_NUMBER_SIGN, "bar12")); barList.add(consBar(df, CONTROL_PERIOD, "bar13")); barList.add(consBar(df, CONTROL_PIPE, "bar14")); fooSdo.setList("bar", barList); } private DataObject consBar(DataFactory df, String id, String value) { DataObject barSdo = df.create(TEST_SDO_NS, "barType"); barSdo.set("id", id); barSdo.set("value", value); return barSdo; } public void testDash() { DataObject barSdo = fooSdo.getDataObject("bar[id=100-1]"); assertEquals(CONTROL_DASH, barSdo.getString("id")); assertEquals(CONTROL_DASH, fooSdo.getString("bar[id=100-1]/id")); } public void testTilda() { DataObject barSdo = fooSdo.getDataObject("bar[id=100~1]"); assertEquals(CONTROL_TILDA, barSdo.getString("id")); assertEquals(CONTROL_TILDA, fooSdo.getString("bar[id=100~1]/id")); } public void testColon() { DataObject barSdo = fooSdo.getDataObject("bar[id=100:1]"); assertEquals(CONTROL_COLON, barSdo.getString("id")); assertEquals(CONTROL_COLON, fooSdo.getString("bar[id=100:1]/id")); } public void testSquareBracket() { DataObject barSdo = fooSdo.getDataObject("bar[id=100[1]]"); assertEquals(CONTROL_SQUARE_BRACKET, barSdo.getString("id")); assertEquals(CONTROL_SQUARE_BRACKET, fooSdo.getString("bar[id=100[1]]/id")); } public void testDollarSign() { DataObject barSdo = fooSdo.getDataObject("bar[id=100$1]"); assertEquals(CONTROL_DOLLAR_SIGN, barSdo.getString("id")); assertEquals(CONTROL_DOLLAR_SIGN, fooSdo.getString("bar[id=100$1]/id")); } public void testAtSign() { DataObject barSdo = fooSdo.getDataObject("bar[id=100@1]"); assertEquals(CONTROL_AT_SIGN, barSdo.getString("id")); assertEquals(CONTROL_AT_SIGN, fooSdo.getString("bar[id=100@1]/id")); } public void testPercent() { DataObject barSdo = fooSdo.getDataObject("bar[id=100%1]"); assertEquals(CONTROL_PERCENT, barSdo.getString("id")); assertEquals(CONTROL_PERCENT, fooSdo.getString("bar[id=100%1]/id")); } public void testAmpersand() { DataObject barSdo = fooSdo.getDataObject("bar[id=100&1]"); assertEquals(CONTROL_AMPERSAND, barSdo.getString("id")); assertEquals(CONTROL_AMPERSAND, fooSdo.getString("bar[id=100&1]/id")); } public void testExclamationPoint() { DataObject barSdo = fooSdo.getDataObject("bar[id=100!1]"); assertEquals(CONTROL_EXCLAMATION_POINT, barSdo.getString("id")); assertEquals(CONTROL_EXCLAMATION_POINT, fooSdo.getString("bar[id=100!1]/id")); } public void testSlash() { DataObject barSdo = fooSdo.getDataObject("bar[id=100/1]"); assertEquals(CONTROL_SLASH, barSdo.getString("id")); assertEquals(CONTROL_SLASH, fooSdo.getString("bar[id=100/1]/id")); } public void testUnderscore() { DataObject barSdo = fooSdo.getDataObject("bar[id=100_1]"); assertEquals(CONTROL_UNDERSCORE, barSdo.getString("id")); assertEquals(CONTROL_UNDERSCORE, fooSdo.getString("bar[id=100_1]/id")); } public void testNumberSign() { DataObject barSdo = fooSdo.getDataObject("bar[id=100#1]"); assertEquals(CONTROL_NUMBER_SIGN, barSdo.getString("id")); assertEquals(CONTROL_NUMBER_SIGN, fooSdo.getString("bar[id=100#1]/id")); } public void testPeriod() { DataObject barSdo = fooSdo.getDataObject("bar[id=100.1]"); assertEquals(CONTROL_PERIOD, barSdo.getString("id")); assertEquals(CONTROL_PERIOD, fooSdo.getString("bar[id=100.1]/id")); } public void testPipe() { DataObject barSdo = fooSdo.getDataObject("bar[id=100|1]"); assertEquals(CONTROL_PIPE, barSdo.getString("id")); assertEquals(CONTROL_PIPE, fooSdo.getString("bar[id=100|1]/id")); } }