/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.jena.sparql.lang;
import org.apache.jena.atlas.junit.BaseTest ;
import org.apache.jena.query.QueryParseException ;
import org.apache.jena.sparql.lang.ParserBase ;
import org.junit.Test ;
public class TestUnescape extends BaseTest
{
@Test public void testEsc01() { execTest("x\\uabcd", "x\uabcd") ; }
@Test public void testEsc02() { execTest("\\uabcdx", "\uabcdx") ; }
@Test public void testEsc03() { execTest("1234\\uabcd1234", "1234\uabcd1234") ; }
@Test public void testEsc04() { execTestFail("\\X") ; }
@Test public void testEsc05() { execTestFail("\\Xz") ; }
@Test public void testEsc06() { execTestFail("a\\X") ; }
@Test public void testEscUni01() { execTestFail("\\uabck") ; }
@Test public void testEscUni02() { execTestFail("\\uab") ; }
@Test public void testEscUni03() { execTestFail("\\uabc") ; }
@Test public void testEscUni04() { execTestFail("\\ua") ; }
@Test public void testEscUni05() { execTestFail("\\u") ; }
@Test public void testEscUni06() { execTestFail("\\") ; }
@Test public void testEscUni07() { execTest("\\u0020", " ") ; }
@Test public void testEscUni08() { execTest("\\uFFFF", "\uFFFF") ; }
@Test public void testEscUni09() { execTest("\\u0000", "\u0000") ; }
@Test public void testEscUni10() { execTestFail("\\U0000") ; }
@Test public void testEscUni11() { execTestFail("\\U0000A") ; }
@Test public void testEscUni12() { execTestFail("\\U0000AB") ; }
@Test public void testEscUni13() { execTestFail("\\U0000ABC") ; }
@Test public void testEscUni14() { execTest("\\U0000ABCD", "\uABCD") ; }
@Test public void testEscUni15() { execTestFail("\\U0000") ; }
@Test public void testEscUni16() { execTest("\\U00000000", "\u0000") ; }
@Test public void testEscUni17() { execTest("x\\tx\\nx\\r", "x\tx\nx\r") ; }
@Test public void testEscUni18() { execTest("x\\t\\n\\r", "x\t\n\r") ; }
private void execTestFail(String input) {
try {
String s = ParserBase.unescapeStr(input);
fail("Unescaping succeeded on " + input + " producing <<"+s+">>");
}
catch (QueryParseException ex) {
return;
}
}
private void execTest(String input, String outcome) {
String result = ParserBase.unescapeStr(input);
assertEquals("Unescaped string does not match (" + input + ")", outcome, result);
}
}