blob: 64b2829e8cd7dbd21f6901af5186c38ed8d83bda [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
/*
* $RCSfile: ExpressionTest.java,v $
* $Revision: 1.4 $ $Date: 2005/02/15 23:00:16 $
*/
package org.eclipse.jem.tests.proxy;
import org.eclipse.jem.internal.proxy.core.*;
import org.eclipse.jem.internal.proxy.initParser.tree.IExpressionConstants;
import org.eclipse.jem.internal.proxy.initParser.tree.IExpressionConstants.NoExpressionValueException;
/**
*
* @since 1.0.0
*/
public class ExpressionTest extends AbstractTestProxy {
/**
*
*
* @since 1.0.0
*/
public ExpressionTest() {
super();
}
/**
* @param name
*
* @since 1.0.0
*/
public ExpressionTest(String name) {
super(name);
}
public void testCastStringType() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createCastExpression(IExpressionConstants.ROOTEXPRESSION, "short");
exp.createPrimitiveLiteral(IExpressionConstants.CAST_EXPRESSION, 10l);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("short", result.getTypeProxy().getTypeName());
assertEquals((short) 10, ((INumberBeanProxy) result).shortValue());
}
public void testCastProxyType() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createCastExpression(IExpressionConstants.ROOTEXPRESSION, proxyTypeFactory.getBeanTypeProxy("short"));
exp.createPrimitiveLiteral(IExpressionConstants.CAST_EXPRESSION, 'a');
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("short", result.getTypeProxy().getTypeName());
assertEquals((short) 'a', ((INumberBeanProxy) result).shortValue());
}
public void testCastError() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createCastExpression(IExpressionConstants.ROOTEXPRESSION, proxyTypeFactory.getBeanTypeProxy("short"));
try {
exp.createProxyExpression(IExpressionConstants.CAST_EXPRESSION, proxyFactory.createBeanProxyWith(Boolean.TRUE));
exp.getExpressionValue();
fail("Should of thrown ClassCastException");
} catch (ThrowableProxy e) {
if (!e.getTypeProxy().getFormalTypeName().equals("java.lang.ClassCastException"))
throw e; // Some other exception, rethrow it.
}
}
public void testCastFailed() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createCastExpression(IExpressionConstants.ROOTEXPRESSION, proxyTypeFactory.getBeanTypeProxy("short"));
try {
exp.getExpressionValue();
fail("Should of gotton IllegalStateException");
} catch (IllegalStateException e) {
System.out.println(e.getLocalizedMessage());
}
}
public void testInstanceofStringType() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInstanceofExpression(IExpressionConstants.ROOTEXPRESSION, "java.lang.String");
exp.createStringLiteral(IExpressionConstants.INSTANCEOF_VALUE, "asdf");
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(true, ((IBooleanBeanProxy) result).booleanValue());
}
public void testInstanceofProxyType() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInstanceofExpression(IExpressionConstants.ROOTEXPRESSION, proxyTypeFactory.getBeanTypeProxy("java.lang.String"));
exp.createStringLiteral(IExpressionConstants.INSTANCEOF_VALUE, "asdf");
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(true, ((IBooleanBeanProxy) result).booleanValue());
}
public void testInstanceofFailed() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInstanceofExpression(IExpressionConstants.ROOTEXPRESSION, proxyTypeFactory.getBeanTypeProxy("java.lang.String"));
try {
exp.getExpressionValue();
fail("Should of gotton IllegalStateException");
} catch (IllegalStateException e) {
System.out.println(e.getLocalizedMessage());
}
}
public void testTypeLiteral() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createTypeLiteral(IExpressionConstants.ROOTEXPRESSION, "java.lang.String");
IBeanProxy result = exp.getExpressionValue();
assertTrue("Not a bean type proxy.", result instanceof IBeanTypeProxy);
IBeanTypeProxy type = (IBeanTypeProxy) result;
assertTrue("Not valid.", type.isValid());
assertEquals("java.lang.String", type.getFormalTypeName());
}
public void testTypeFails() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
try {
exp.createTypeLiteral(IExpressionConstants.ROOTEXPRESSION, "java.lang.Stng");
exp.getExpressionValue();
fail("Should not of gotton a result.");
} catch (ThrowableProxy e) {
System.out.println(e.getProxyLocalizedMessage());
}
}
public void testNesting() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInstanceofExpression(IExpressionConstants.ROOTEXPRESSION, "short");
exp.createCastExpression(IExpressionConstants.INSTANCEOF_VALUE, "short");
exp.createPrimitiveLiteral(IExpressionConstants.CAST_EXPRESSION, (short) 10);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(true, ((IBooleanBeanProxy) result).booleanValue());
}
public void testPrefixPlus() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createPrefixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.PRE_PLUS);
exp.createPrimitiveLiteral(IExpressionConstants.PREFIX_OPERAND, 10);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(10, ((INumberBeanProxy) result).intValue());
}
public void testPrefixMinus() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createPrefixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.PRE_MINUS);
exp.createPrimitiveLiteral(IExpressionConstants.PREFIX_OPERAND, 10);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(-10, ((INumberBeanProxy) result).intValue());
}
public void testPrefixMinusChar() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createPrefixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.PRE_MINUS);
exp.createPrimitiveLiteral(IExpressionConstants.PREFIX_OPERAND, 'a');
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(-'a', ((INumberBeanProxy) result).intValue());
}
public void testPrefixComplement() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createPrefixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.PRE_COMPLEMENT);
exp.createPrimitiveLiteral(IExpressionConstants.PREFIX_OPERAND, (short) 10);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(~10, ((INumberBeanProxy) result).intValue());
}
public void testPrefixNot() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createPrefixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.PRE_NOT);
exp.createPrimitiveLiteral(IExpressionConstants.PREFIX_OPERAND, true);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(false, ((IBooleanBeanProxy) result).booleanValue());
}
public void testPrefixFail() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createPrefixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.PRE_NOT);
try {
exp.createPrimitiveLiteral(IExpressionConstants.PREFIX_OPERAND, 10);
exp.getExpressionValue();
fail("Should of failed.");
} catch (ThrowableProxy e) {
System.out.println(e.getProxyLocalizedMessage());
}
}
public void testTimes() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_TIMES, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 3);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 4);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(3*4, ((INumberBeanProxy) result).intValue());
}
public void testTimesExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_TIMES, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 3);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 4);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_EXTENDED, 5d);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("double", result.getTypeProxy().getTypeName());
assertEquals((3*4*5d), ((INumberBeanProxy) result).doubleValue(), 0);
}
public void testTimesExtendedNested() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_TIMES, 1);
exp.createInfixExpression(IExpressionConstants.INFIX_LEFT, IExpressionConstants.IN_MINUS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 10);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 5);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 4);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_EXTENDED, 5d);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("double", result.getTypeProxy().getTypeName());
assertEquals(((10-5)*4*5d), ((INumberBeanProxy) result).doubleValue(), 0);
}
public void testDivide() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_DIVIDE, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 4);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 2);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(4/2, ((INumberBeanProxy) result).intValue());
}
public void testDivideExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_DIVIDE, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 12);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_EXTENDED, 2d);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("double", result.getTypeProxy().getTypeName());
assertEquals((12/3/2d), ((INumberBeanProxy) result).doubleValue(), 0);
}
public void testRemainder() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_REMAINDER, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 4);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(4%3, ((INumberBeanProxy) result).intValue());
}
public void testRemainderExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_REMAINDER, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 12);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 9);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_EXTENDED, 2d);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("double", result.getTypeProxy().getTypeName());
assertEquals((12%9%2d), ((INumberBeanProxy) result).doubleValue(), 0);
}
public void testMinus() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_MINUS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 4);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(4-3, ((INumberBeanProxy) result).intValue());
}
public void testMinusExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_MINUS, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 12);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 9);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_EXTENDED, 2d);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("double", result.getTypeProxy().getTypeName());
assertEquals((12-9-2d), ((INumberBeanProxy) result).doubleValue(), 0);
}
public void testLeftShift() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_LEFT_SHIFT, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 4);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(4<<3, ((INumberBeanProxy) result).intValue());
}
public void testLeftShiftExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_LEFT_SHIFT, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 12);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 9);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_EXTENDED, 2);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals((12<<9<<2), ((INumberBeanProxy) result).intValue(), 0);
}
public void testRightShiftSigned() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_RIGHT_SHIFT_SIGNED, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, -10000000);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(-10000000>>3, ((INumberBeanProxy) result).intValue());
}
public void testRightShiftSignedExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_RIGHT_SHIFT_SIGNED, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, -10000000);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 4);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_EXTENDED, 2);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals((-10000000>>4>>2), ((INumberBeanProxy) result).intValue(), 0);
}
public void testRightShiftUnSigned() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_RIGHT_SHIFT_UNSIGNED, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, -10000000);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(-10000000>>>3, ((INumberBeanProxy) result).intValue());
}
public void testRightShiftUnSignedExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_RIGHT_SHIFT_UNSIGNED, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, -10000000);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 4);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_EXTENDED, 2);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals((-10000000>>>4>>>2), ((INumberBeanProxy) result).intValue(), 0);
}
public void testLess() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_LESS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, -10000000);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(-10000000<3, ((IBooleanBeanProxy) result).booleanValue());
}
public void testLessEquals() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_LESS_EQUALS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 3);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(3<=3, ((IBooleanBeanProxy) result).booleanValue());
}
public void testGreater() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_GREATER, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, -10000000);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(-10000000>3, ((IBooleanBeanProxy) result).booleanValue());
}
public void testGreaterEquals() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_GREATER_EQUALS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 2);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(2>=3, ((IBooleanBeanProxy) result).booleanValue());
}
public void testEqualsPrimitives() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_EQUALS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 3d);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(3d==3, ((IBooleanBeanProxy) result).booleanValue());
}
public void testEqualsObjects() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_EQUALS, 0);
exp.createTypeLiteral(IExpressionConstants.INFIX_LEFT, "java.lang.String");
exp.createTypeLiteral(IExpressionConstants.INFIX_RIGHT, "java.lang.String");
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(String.class == String.class, ((IBooleanBeanProxy) result).booleanValue());
}
public void testNotEqualsPrimitives() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_NOT_EQUALS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 3d);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(3d!=3, ((IBooleanBeanProxy) result).booleanValue());
}
public void testNotEqualsObjects() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_NOT_EQUALS, 0);
exp.createTypeLiteral(IExpressionConstants.INFIX_LEFT, "java.lang.String");
exp.createTypeLiteral(IExpressionConstants.INFIX_RIGHT, "java.lang.String");
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(String.class != String.class, ((IBooleanBeanProxy) result).booleanValue());
}
public void testXOR() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_XOR, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 5);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(5^3, ((INumberBeanProxy) result).intValue());
}
public void testXORExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_XOR, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 23);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 9);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_EXTENDED, 2);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals((23^9^2), ((INumberBeanProxy) result).intValue(), 0);
}
public void testAnd() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_AND, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 5);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(5&3, ((INumberBeanProxy) result).intValue());
}
public void testAndExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_AND, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 13);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 15);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_EXTENDED, 1);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals((13&5&1), ((INumberBeanProxy) result).intValue(), 0);
}
public void testOr() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_OR, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 5);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 2);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(5|2, ((INumberBeanProxy) result).intValue());
}
public void testOrExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_OR, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 13);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 6);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_EXTENDED, 2);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals((13|6|2), ((INumberBeanProxy) result).intValue(), 0);
}
public void testPlus() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_PLUS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 5);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 2);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getTypeName());
assertEquals(5+2, ((INumberBeanProxy) result).intValue());
}
public void testPlusExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_PLUS, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 5);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 2);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_EXTENDED, 2l);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("long", result.getTypeProxy().getTypeName());
assertEquals(5+2+2l, ((INumberBeanProxy) result).intValue());
}
public void testPlusStringLeft() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_PLUS, 0);
exp.createProxyExpression(IExpressionConstants.INFIX_LEFT, proxyFactory.createBeanProxyWith("abc"));
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 2);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("java.lang.String", result.getTypeProxy().getTypeName());
assertEquals("abc"+2, ((IStringBeanProxy) result).stringValue());
}
public void testPlusStringRight() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_PLUS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 2);
exp.createProxyExpression(IExpressionConstants.INFIX_RIGHT, proxyFactory.createBeanProxyWith("abc"));
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("java.lang.String", result.getTypeProxy().getTypeName());
assertEquals(2+"abc", ((IStringBeanProxy) result).stringValue());
}
public void testPlusStringLeftNull() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_PLUS, 0);
exp.createProxyExpression(IExpressionConstants.INFIX_LEFT, proxyFactory.createBeanProxyWith("abc"));
exp.createNull(IExpressionConstants.INFIX_RIGHT);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("java.lang.String", result.getTypeProxy().getTypeName());
assertEquals("abc"+null, ((IStringBeanProxy) result).stringValue());
}
public void testPlusStringRightNull() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_PLUS, 0);
exp.createNull(IExpressionConstants.INFIX_LEFT);
exp.createProxyExpression(IExpressionConstants.INFIX_RIGHT, proxyFactory.createBeanProxyWith("abc"));
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("java.lang.String", result.getTypeProxy().getTypeName());
assertEquals(null+"abc", ((IStringBeanProxy) result).stringValue());
}
public void testPlusStringLeftChar() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_PLUS, 0);
exp.createProxyExpression(IExpressionConstants.INFIX_LEFT, proxyFactory.createBeanProxyWith("abc"));
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 'a');
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("java.lang.String", result.getTypeProxy().getTypeName());
assertEquals("abc"+'a', ((IStringBeanProxy) result).stringValue());
}
public void testPlusStringRightChar() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_PLUS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 'a');
exp.createProxyExpression(IExpressionConstants.INFIX_RIGHT, proxyFactory.createBeanProxyWith("abc"));
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("java.lang.String", result.getTypeProxy().getTypeName());
assertEquals('a'+"abc", ((IStringBeanProxy) result).stringValue());
}
public void testConditionalAnd() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_CONDITIONAL_AND, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, true);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, true);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(true && true, ((IBooleanBeanProxy) result).booleanValue());
}
public void testConditionalAndExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_CONDITIONAL_AND, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, true);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, true);
exp.createInfixExpression(IExpressionConstants.INFIX_EXTENDED, IExpressionConstants.IN_EQUALS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 3);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(true && true && (3 == 3), ((IBooleanBeanProxy) result).booleanValue());
}
public void testConditionalAndFalseLast() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_CONDITIONAL_AND, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, true);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, false);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(true && false, ((IBooleanBeanProxy) result).booleanValue());
}
public void testConditionalAndFalseFirst() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_CONDITIONAL_AND, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, false);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, true);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(false && true, ((IBooleanBeanProxy) result).booleanValue());
}
public void testConditionalAndExtendedAndFalseFirst() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_CONDITIONAL_AND, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, false);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, true);
exp.createInfixExpression(IExpressionConstants.INFIX_EXTENDED, IExpressionConstants.IN_EQUALS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 3);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(false && true && (3 == 3), ((IBooleanBeanProxy) result).booleanValue());
}
public void testConditionalOr() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_CONDITIONAL_OR, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, false);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, true);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(false || true, ((IBooleanBeanProxy) result).booleanValue());
}
public void testConditionalOrExtended() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_CONDITIONAL_OR, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, false);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, false);
exp.createInfixExpression(IExpressionConstants.INFIX_EXTENDED, IExpressionConstants.IN_EQUALS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 3);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(false || false || (3 == 3), ((IBooleanBeanProxy) result).booleanValue());
}
public void testConditionalOrTrueFirst() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_CONDITIONAL_OR, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, true);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, false);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(true || false, ((IBooleanBeanProxy) result).booleanValue());
}
public void testConditionalOrExtendedAndTrueMiddle() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createInfixExpression(IExpressionConstants.ROOTEXPRESSION, IExpressionConstants.IN_CONDITIONAL_OR, 1);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, false);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, true);
exp.createInfixExpression(IExpressionConstants.INFIX_EXTENDED, IExpressionConstants.IN_EQUALS, 0);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_LEFT, 3);
exp.createPrimitiveLiteral(IExpressionConstants.INFIX_RIGHT, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("boolean", result.getTypeProxy().getTypeName());
assertEquals(false || true || (3 == 3), ((IBooleanBeanProxy) result).booleanValue());
}
public void testArrayAccess() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IArrayBeanProxy array = (IArrayBeanProxy) proxyFactory.createBeanProxyWith(proxyTypeFactory.getBeanTypeProxy("short"), 1);
array.set(proxyFactory.createBeanProxyWith((short) 3), 0);
IExpression exp = proxyFactory.createExpression();
exp.createArrayAccess(IExpressionConstants.ROOTEXPRESSION, 1);
exp.createProxyExpression(IExpressionConstants.ARRAYACCESS_ARRAY, array);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYACCESS_INDEX, 0);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("short", result.getTypeProxy().getTypeName());
assertEquals(((INumberBeanProxy) result).shortValue(), (short) 3);
}
public void testMultiArrayAccess() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IArrayBeanProxy array = (IArrayBeanProxy) proxyFactory.createBeanProxyWith(proxyTypeFactory.getBeanTypeProxy("short"), new int[] {2,1});
array.set(proxyFactory.createBeanProxyWith((short) 3), new int[]{1,0});
IExpression exp = proxyFactory.createExpression();
exp.createArrayAccess(IExpressionConstants.ROOTEXPRESSION, 1);
exp.createProxyExpression(IExpressionConstants.ARRAYACCESS_ARRAY, array);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYACCESS_INDEX, 1);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("short[]", result.getTypeProxy().getFormalTypeName());
}
public void testMultiArrayAccess1() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IArrayBeanProxy array = (IArrayBeanProxy) proxyFactory.createBeanProxyWith(proxyTypeFactory.getBeanTypeProxy("short"), new int[] {2,1});
array.set(proxyFactory.createBeanProxyWith((short) 3), new int[]{1,0});
IExpression exp = proxyFactory.createExpression();
exp.createArrayAccess(IExpressionConstants.ROOTEXPRESSION, 2);
exp.createProxyExpression(IExpressionConstants.ARRAYACCESS_ARRAY, array);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYACCESS_INDEX, 1);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYACCESS_INDEX, 0);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("short", result.getTypeProxy().getFormalTypeName());
assertEquals((short) 3, ((INumberBeanProxy) result).shortValue());
}
public void testArrayCreation() throws IllegalStateException, IllegalArgumentException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createArrayCreation(IExpressionConstants.ROOTEXPRESSION, "int[]", 1);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYCREATION_DIMENSION, 2);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int[]", result.getTypeProxy().getFormalTypeName());
assertEquals(2, ((IArrayBeanProxy) result).getLength());
}
public void testMultiArrayCreation() throws IllegalStateException, IllegalArgumentException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createArrayCreation(IExpressionConstants.ROOTEXPRESSION, "int[][]", 2);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYCREATION_DIMENSION, 2);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYCREATION_DIMENSION, 4);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int[][]", result.getTypeProxy().getFormalTypeName());
assertEquals(2, ((IArrayBeanProxy) result).getLength());
assertEquals(4, ((IArrayBeanProxy)((IArrayBeanProxy) result).get(0)).getLength());
}
public void testMultiPartialArrayCreation() throws IllegalStateException, IllegalArgumentException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createArrayCreation(IExpressionConstants.ROOTEXPRESSION, "int[][][]", 2);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYCREATION_DIMENSION, 2);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYCREATION_DIMENSION, 4);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int[][][]", result.getTypeProxy().getFormalTypeName());
assertEquals(2, ((IArrayBeanProxy) result).getLength());
assertEquals(4, ((IArrayBeanProxy)((IArrayBeanProxy) result).get(0)).getLength());
assertNull(((IArrayBeanProxy)((IArrayBeanProxy) result).get(0)).get(0));
}
public void testArrayInitializerEmpty() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createArrayCreation(IExpressionConstants.ROOTEXPRESSION, "int[]", 0);
exp.createArrayInitializer(0);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int[]", result.getTypeProxy().getFormalTypeName());
assertEquals(0, ((IArrayBeanProxy) result).getLength());
}
public void testArrayInitializerOneDim() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createArrayCreation(IExpressionConstants.ROOTEXPRESSION, "int[]", 0);
exp.createArrayInitializer(1);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYINITIALIZER_EXPRESSION, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int[]", result.getTypeProxy().getFormalTypeName());
assertEquals(1, ((IArrayBeanProxy) result).getLength());
assertEquals(3, ((INumberBeanProxy) ((IArrayBeanProxy) result).get(0)).intValue());
}
public void testArrayInitializerTwoDimEmpty() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createArrayCreation(IExpressionConstants.ROOTEXPRESSION, "int[][]", 0);
exp.createArrayInitializer(0);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int[][]", result.getTypeProxy().getFormalTypeName());
assertEquals(0, ((IArrayBeanProxy) result).getLength());
}
public void testArrayInitializerTwoDim() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createArrayCreation(IExpressionConstants.ROOTEXPRESSION, "int[][]", 0);
exp.createArrayInitializer(1);
exp.createArrayInitializer(0);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int[][]", result.getTypeProxy().getFormalTypeName());
assertEquals(1, ((IArrayBeanProxy) result).getLength());
assertEquals(0, ((IArrayBeanProxy) ((IArrayBeanProxy) result).get(0)).getLength());
}
public void testArrayInitializerTwoDimNotEmpty() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createArrayCreation(IExpressionConstants.ROOTEXPRESSION, "int[][]", 0);
exp.createArrayInitializer(2);
exp.createNull(IExpressionConstants.ARRAYINITIALIZER_EXPRESSION);
exp.createArrayInitializer(2);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYINITIALIZER_EXPRESSION, 3);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYINITIALIZER_EXPRESSION, 4);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int[][]", result.getTypeProxy().getFormalTypeName());
assertEquals(2, ((IArrayBeanProxy) result).getLength());
assertNull((IArrayBeanProxy) ((IArrayBeanProxy) result).get(0));
assertEquals(2, ((IArrayBeanProxy) ((IArrayBeanProxy) result).get(1)).getLength());
assertEquals(4, ((INumberBeanProxy)((IArrayBeanProxy) ((IArrayBeanProxy) result).get(1)).get(1)).intValue());
}
public void testArrayInitializerShortInt() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createArrayCreation(IExpressionConstants.ROOTEXPRESSION, "short[]", 0);
exp.createArrayInitializer(1);
exp.createPrimitiveLiteral(IExpressionConstants.ARRAYINITIALIZER_EXPRESSION, 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("short[]", result.getTypeProxy().getFormalTypeName());
assertEquals(1, ((IArrayBeanProxy) result).getLength());
assertEquals(3, ((INumberBeanProxy) ((IArrayBeanProxy) result).get(0)).intValue());
}
public void testClassInstanceCreationDefault() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createClassInstanceCreation(IExpressionConstants.ROOTEXPRESSION, "java.lang.Object", 0);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("java.lang.Object", result.getTypeProxy().getFormalTypeName());
}
public void testClassInstanceCreationDefaultWithBeanTypeProxy() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createClassInstanceCreation(IExpressionConstants.ROOTEXPRESSION, proxyTypeFactory.getBeanTypeProxy("java.lang.Object"), 0);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("java.lang.Object", result.getTypeProxy().getFormalTypeName());
}
public void testClassInstanceCreationOneArg() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createClassInstanceCreation(IExpressionConstants.ROOTEXPRESSION, "java.lang.Integer", 1);
exp.createStringLiteral(IExpressionConstants.CLASSINSTANCECREATION_ARGUMENT, "3");
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("java.lang.Integer", result.getTypeProxy().getFormalTypeName());
assertEquals(3, ((INumberBeanProxy) result).intValue());
}
public void testClassInstanceCreationOneArgWithPrimWidening() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createClassInstanceCreation(IExpressionConstants.ROOTEXPRESSION, "java.lang.Short", 1);
exp.createPrimitiveLiteral(IExpressionConstants.CLASSINSTANCECREATION_ARGUMENT, (byte)3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("java.lang.Short", result.getTypeProxy().getFormalTypeName());
assertEquals((short)3, ((INumberBeanProxy) result).shortValue());
}
public void testClassInstanceCreationNullArg() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createClassInstanceCreation(IExpressionConstants.ROOTEXPRESSION, "testPackage.TestCtorWithNull", 1);
exp.createNull(IExpressionConstants.CLASSINSTANCECREATION_ARGUMENT);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("testPackage.TestCtorWithNull", result.getTypeProxy().getFormalTypeName());
}
public void testClassInstanceCreationMismatchArg() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createClassInstanceCreation(IExpressionConstants.ROOTEXPRESSION, "testPackage.TestCtorWithNull", 1);
try {
exp.createPrimitiveLiteral(IExpressionConstants.CLASSINSTANCECREATION_ARGUMENT, 1);
exp.getExpressionValue();
fail("Exception should of been thrown.");
} catch (ThrowableProxy e) {
assertEquals("java.lang.NoSuchMethodException", e.getTypeProxy().getFormalTypeName());
}
}
public void testStaticFieldAccess() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createFieldAccess(IExpressionConstants.ROOTEXPRESSION, "RED", true);
exp.createTypeReceiver("java.awt.Color");
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("java.awt.Color", result.getTypeProxy().getFormalTypeName());
IBeanTypeProxy colorType = result.getTypeProxy();
IMethodProxy red = colorType.getMethodProxy("getRed");
IMethodProxy green = colorType.getMethodProxy("getGreen");
IMethodProxy blue = colorType.getMethodProxy("getBlue");
assertEquals(255, ((INumberBeanProxy) red.invoke(result)).intValue());
assertEquals(0, ((INumberBeanProxy) green.invoke(result)).intValue());
assertEquals(0, ((INumberBeanProxy) blue.invoke(result)).intValue());
}
public void testNonStaticFieldAccess() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createFieldAccess(IExpressionConstants.ROOTEXPRESSION, "x", true);
exp.createClassInstanceCreation(IExpression.FIELD_RECEIVER, "java.awt.Point", 2);
exp.createPrimitiveLiteral(IExpression.CLASSINSTANCECREATION_ARGUMENT, 1);
exp.createPrimitiveLiteral(IExpression.CLASSINSTANCECREATION_ARGUMENT, 2);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getFormalTypeName());
assertEquals(1, ((INumberBeanProxy) result).intValue());
}
public void testStaticMethodInvoke() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createMethodInvocation(IExpressionConstants.ROOTEXPRESSION, "valueOf", true, 1);
exp.createTypeReceiver("java.lang.String");
exp.createPrimitiveLiteral(IExpression.METHOD_ARGUMENT, true);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("java.lang.String", result.getTypeProxy().getFormalTypeName());
assertEquals("true", ((IStringBeanProxy) result).stringValue());
}
public void testNonStaticMethodInvoke() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createMethodInvocation(IExpressionConstants.ROOTEXPRESSION, "compareTo", true, 1);
exp.createClassInstanceCreation(IExpression.METHOD_RECEIVER, "java.lang.Integer", 1);
exp.createPrimitiveLiteral(IExpression.CLASSINSTANCECREATION_ARGUMENT, 3);
exp.createClassInstanceCreation(IExpression.METHOD_ARGUMENT, "java.lang.Integer", 1);
exp.createPrimitiveLiteral(IExpression.CLASSINSTANCECREATION_ARGUMENT, 4);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getFormalTypeName());
assertTrue("CompareTo wasn't less than 0.", ((INumberBeanProxy) result).intValue() < 0);
}
public void testConditionalTrue() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createConditionalExpression(IExpression.ROOTEXPRESSION);
exp.createInfixExpression(IExpression.CONDITIONAL_CONDITION, IExpressionConstants.IN_EQUALS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 3);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
exp.createInfixExpression(IExpression.CONDITIONAL_TRUE, IExpressionConstants.IN_PLUS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 3);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
exp.createInfixExpression(IExpression.CONDITIONAL_FALSE, IExpressionConstants.IN_PLUS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 3);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getFormalTypeName());
assertEquals(6, ((INumberBeanProxy) result).intValue());
}
public void testConditionalFalse() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createConditionalExpression(IExpression.ROOTEXPRESSION);
exp.createInfixExpression(IExpression.CONDITIONAL_CONDITION, IExpressionConstants.IN_EQUALS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 4);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
exp.createInfixExpression(IExpression.CONDITIONAL_TRUE, IExpressionConstants.IN_PLUS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 3);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
exp.createInfixExpression(IExpression.CONDITIONAL_FALSE, IExpressionConstants.IN_MINUS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 3);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getFormalTypeName());
assertEquals(0, ((INumberBeanProxy) result).intValue());
}
public void testNestedConditionalTrueTrue() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createConditionalExpression(IExpression.ROOTEXPRESSION);
exp.createInfixExpression(IExpression.CONDITIONAL_CONDITION, IExpressionConstants.IN_EQUALS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 3);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
exp.createConditionalExpression(IExpression.CONDITIONAL_TRUE);
exp.createInfixExpression(IExpression.CONDITIONAL_CONDITION, IExpressionConstants.IN_EQUALS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 3);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
exp.createInfixExpression(IExpression.CONDITIONAL_TRUE, IExpressionConstants.IN_PLUS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 4);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 4);
exp.createInfixExpression(IExpression.CONDITIONAL_FALSE, IExpressionConstants.IN_MINUS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 4);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
exp.createInfixExpression(IExpression.CONDITIONAL_FALSE, IExpressionConstants.IN_MINUS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 5);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getFormalTypeName());
assertEquals(8, ((INumberBeanProxy) result).intValue());
}
public void testNestedConditionalFalseFalse() throws IllegalStateException, ThrowableProxy, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createConditionalExpression(IExpression.ROOTEXPRESSION);
exp.createInfixExpression(IExpression.CONDITIONAL_CONDITION, IExpressionConstants.IN_EQUALS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 3);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 2);
exp.createConditionalExpression(IExpression.CONDITIONAL_TRUE);
exp.createInfixExpression(IExpression.CONDITIONAL_CONDITION, IExpressionConstants.IN_EQUALS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 2);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
exp.createInfixExpression(IExpression.CONDITIONAL_TRUE, IExpressionConstants.IN_PLUS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 4);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 4);
exp.createInfixExpression(IExpression.CONDITIONAL_FALSE, IExpressionConstants.IN_MINUS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 4);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
exp.createInfixExpression(IExpression.CONDITIONAL_FALSE, IExpressionConstants.IN_MINUS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, (byte) 5);
exp.createPrimitiveLiteral(IExpression.INFIX_RIGHT, (short) 3);
IBeanProxy result = exp.getExpressionValue();
assertNotNull(result);
assertEquals("int", result.getTypeProxy().getFormalTypeName());
assertEquals(2, ((INumberBeanProxy) result).intValue());
}
public void testVoidReturnType() throws IllegalStateException, ThrowableProxy {
IExpression exp = proxyFactory.createExpression();
try {
exp.createInfixExpression(IExpression.ROOTEXPRESSION, IExpressionConstants.IN_PLUS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, 3);
exp.createMethodInvocation(IExpression.INFIX_RIGHT, "gc", true, 0);
exp.createTypeReceiver("java.lang.System");
exp.getExpressionValue();
fail("Should of received no expression value exception.");
} catch (NoExpressionValueException e) {
if (e.getLocalizedMessage() != null)
System.out.println(e.getLocalizedMessage());
}
}
public void testWrongReturnType() throws ThrowableProxy, IllegalStateException, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
try {
exp.createInfixExpression(IExpression.ROOTEXPRESSION, IExpressionConstants.IN_PLUS, 0);
exp.createPrimitiveLiteral(IExpression.INFIX_LEFT, 3);
exp.createMethodInvocation(IExpression.INFIX_RIGHT, "getSecurityManager", true, 0);
exp.createTypeReceiver("java.lang.System");
exp.getExpressionValue();
fail("Should of received class cast proxy exception.");
} catch (ThrowableProxy e) {
if (!e.getTypeProxy().getFormalTypeName().equals("java.lang.IllegalArgumentException"))
throw e; // Some other exception, rethrow it.
}
}
public void testInvoke() throws ThrowableProxy, IllegalStateException, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
exp.createMethodInvocation(IExpression.ROOTEXPRESSION, "getSecurityManager", true, 0);
exp.createTypeReceiver("java.lang.System");
exp.invokeExpression();
}
public void testInvokeFail() throws ThrowableProxy, IllegalStateException, NoExpressionValueException {
IExpression exp = proxyFactory.createExpression();
try {
exp.createMethodInvocation(IExpression.ROOTEXPRESSION, "getenv", true, 1);
exp.createTypeReceiver("java.lang.System");
exp.createStringLiteral(IExpression.METHOD_ARGUMENT, "xyz");
exp.invokeExpression();
} catch (ThrowableProxy e) {
if (!e.getTypeProxy().getFormalTypeName().equals("java.lang.Error"))
throw e; // Some other exception, rethrow it.
}
}
}