212 lines
7.4 KiB
Java
212 lines
7.4 KiB
Java
/*
|
|
* 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 javax.el;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.Test;
|
|
|
|
public class TestELProcessor {
|
|
|
|
@Test
|
|
public void testDefineBean01() {
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineBean("bean01", new TesterBean("name01"));
|
|
Assert.assertEquals("name01", elp.eval("bean01.name"));
|
|
}
|
|
|
|
|
|
@Test(expected=ELException.class)
|
|
public void testEval01() {
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.eval("${1+1}");
|
|
}
|
|
|
|
|
|
@Test(expected=ELException.class)
|
|
public void testEval02() {
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.eval("#{1+1}");
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testEval03() {
|
|
ELProcessor elp = new ELProcessor();
|
|
// Note \ is escaped as \\ in Java source code
|
|
String result = (String) elp.eval("'\\\\'");
|
|
Assert.assertEquals("\\", result);
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionMethod01() throws Exception {
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("fn", "toBoolean",
|
|
Boolean.class.getMethod("valueOf", String.class));
|
|
Assert.assertEquals(Boolean.valueOf(true),
|
|
elp.eval("fn:toBoolean(true)"));
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName01() throws Exception {
|
|
ELProcessor elp = new ELProcessor();
|
|
// java.lang should be automatically imported so no need for full class
|
|
// name
|
|
elp.defineFunction("fn", "toBoolean", "Boolean", "valueOf");
|
|
Assert.assertEquals(Boolean.valueOf(true),
|
|
elp.eval("fn:toBoolean(true)"));
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName02() throws Exception {
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("fn", "test", "java.lang.Integer", "Integer valueOf(int)");
|
|
Assert.assertEquals(Integer.valueOf(1), elp.eval("fn:test(1)"));
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName03() throws Exception {
|
|
TesterFunctions.resetCallList();
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("fn", "test", "javax.el.TesterFunctions", "void doIt()");
|
|
elp.eval("fn:test()");
|
|
Assert.assertEquals("A", TesterFunctions.getCallList());
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName04() throws Exception {
|
|
TesterFunctions.resetCallList();
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("fn", "test", "javax.el.TesterFunctions", "void doIt(int)");
|
|
elp.eval("fn:test(5)");
|
|
Assert.assertEquals("B", TesterFunctions.getCallList());
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName05() throws Exception {
|
|
TesterFunctions.resetCallList();
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("fn", "test", "javax.el.TesterFunctions", "void doIt(Integer)");
|
|
elp.eval("fn:test(null)");
|
|
Assert.assertEquals("C", TesterFunctions.getCallList());
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName06() throws Exception {
|
|
TesterFunctions.resetCallList();
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("", "", "javax.el.TesterFunctions", "void doIt(int)");
|
|
elp.eval("doIt(5)");
|
|
Assert.assertEquals("B", TesterFunctions.getCallList());
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName07() throws Exception {
|
|
TesterFunctions.resetCallList();
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("fn", "", "javax.el.TesterFunctions", "void doIt(int)");
|
|
elp.eval("fn:doIt(5)");
|
|
Assert.assertEquals("B", TesterFunctions.getCallList());
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName08() throws Exception {
|
|
TesterFunctions.resetCallList();
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("fn", "", "javax.el.TesterFunctions", "void doIt(int[])");
|
|
elp.eval("fn:doIt([5].stream().toArray())");
|
|
Assert.assertEquals("D", TesterFunctions.getCallList());
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName09() throws Exception {
|
|
TesterFunctions.resetCallList();
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("fn", "", "javax.el.TesterFunctions", "void doIt(int[][])");
|
|
elp.eval("fn:doIt([[5].stream().toArray()].stream().toArray())");
|
|
Assert.assertEquals("E", TesterFunctions.getCallList());
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName10() throws Exception {
|
|
TesterFunctions.resetCallList();
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("fn", "test1", "java.lang.Integer", "Integer valueOf(int)");
|
|
elp.defineFunction("fn", "test2", "javax.el.TesterFunctions", "void doIt(Integer[])");
|
|
elp.eval("fn:test2([fn:test1(1), fn:test1(2)].stream().toArray())");
|
|
Assert.assertEquals("F", TesterFunctions.getCallList());
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName11() throws Exception {
|
|
TesterFunctions.resetCallList();
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("fn", "test1", "java.lang.Integer", "Integer valueOf(int)");
|
|
elp.defineFunction("fn", "test2", "javax.el.TesterFunctions", "void doIt(Integer[][])");
|
|
elp.eval("fn:test2([[fn:test1(1), fn:test1(2)].stream().toArray()].stream().toArray())");
|
|
Assert.assertEquals("G", TesterFunctions.getCallList());
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName12() throws Exception {
|
|
TesterFunctions.resetCallList();
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("fn", "test", "javax.el.TesterFunctions", "void doIt(long...)");
|
|
elp.eval("fn:test(1,2)");
|
|
Assert.assertEquals("H", TesterFunctions.getCallList());
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testDefineFunctionName13() throws Exception {
|
|
TesterFunctions.resetCallList();
|
|
ELProcessor elp = new ELProcessor();
|
|
elp.defineFunction("fn", "test", "javax.el.TesterFunctions", "void doIt(Object...)");
|
|
elp.eval("fn:test(null, null)");
|
|
Assert.assertEquals("I", TesterFunctions.getCallList());
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testPrimitiveArray01() {
|
|
ELProcessor elp = new ELProcessor();
|
|
TesterBean bean01= new TesterBean("bean01");
|
|
elp.defineBean("bean01", bean01);
|
|
elp.defineBean("bean02", new TesterBean("bean02"));
|
|
|
|
Object result = elp.eval("bean02.setValueC(bean01.valueB);bean02.valueC");
|
|
|
|
Integer[] resultArray = (Integer[]) result;
|
|
Assert.assertEquals(bean01.getValueB().length, resultArray.length);
|
|
for (int i = 0; i < resultArray.length; i++) {
|
|
Assert.assertEquals(bean01.getValueB()[i], resultArray[i].intValue());
|
|
}
|
|
}
|
|
}
|