/*
* Licensed 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 com.facebook.presto.bytecode.expression;
import org.testng.annotations.Test;
import java.util.List;
import static com.facebook.presto.bytecode.expression.BytecodeExpressionAssertions.assertBytecodeExpression;
import static com.facebook.presto.bytecode.expression.BytecodeExpressions.constantBoolean;
import static com.facebook.presto.bytecode.expression.BytecodeExpressions.constantClass;
import static com.facebook.presto.bytecode.expression.BytecodeExpressions.constantDouble;
import static com.facebook.presto.bytecode.expression.BytecodeExpressions.constantFalse;
import static com.facebook.presto.bytecode.expression.BytecodeExpressions.constantFloat;
import static com.facebook.presto.bytecode.expression.BytecodeExpressions.constantInt;
import static com.facebook.presto.bytecode.expression.BytecodeExpressions.constantLong;
import static com.facebook.presto.bytecode.expression.BytecodeExpressions.constantNull;
import static com.facebook.presto.bytecode.expression.BytecodeExpressions.constantString;
import static com.facebook.presto.bytecode.expression.BytecodeExpressions.constantTrue;
public class TestConstantBytecodeExpression
{
@Test
public void test()
throws Exception
{
assertBytecodeExpression(constantNull(List.class), null, "null");
assertBytecodeExpression(constantTrue(), true, "true");
assertBytecodeExpression(constantFalse(), false, "false");
assertBytecodeExpression(constantBoolean(true), true, "true");
assertBytecodeExpression(constantBoolean(false), false, "false");
assertBytecodeExpression(constantInt(0), 0, "0");
assertBytecodeExpression(constantInt(Integer.MAX_VALUE), Integer.MAX_VALUE, String.valueOf(Integer.MAX_VALUE));
assertBytecodeExpression(constantInt(Integer.MIN_VALUE), Integer.MIN_VALUE, String.valueOf(Integer.MIN_VALUE));
assertBytecodeExpression(constantLong(0L), 0L, "0L");
assertBytecodeExpression(constantLong(Long.MAX_VALUE), Long.MAX_VALUE, Long.MAX_VALUE + "L");
assertBytecodeExpression(constantLong(Long.MIN_VALUE), Long.MIN_VALUE, Long.MIN_VALUE + "L");
assertBytecodeExpression(constantFloat(0.0f), 0.0f, "0.0f");
assertBytecodeExpression(constantFloat(Float.MAX_VALUE), Float.MAX_VALUE, Float.MAX_VALUE + "f");
assertBytecodeExpression(constantFloat(Float.MIN_VALUE), Float.MIN_VALUE, Float.MIN_VALUE + "f");
assertBytecodeExpression(constantFloat(Float.NaN), Float.NaN, "NaNf");
assertBytecodeExpression(constantDouble(0.0), 0.0, "0.0");
assertBytecodeExpression(constantDouble(Double.MAX_VALUE), Double.MAX_VALUE, String.valueOf(Double.MAX_VALUE));
assertBytecodeExpression(constantDouble(Double.MIN_VALUE), Double.MIN_VALUE, String.valueOf(Double.MIN_VALUE));
assertBytecodeExpression(constantDouble(Double.NaN), Double.NaN, "NaN");
assertBytecodeExpression(constantString(""), "", "\"\"");
assertBytecodeExpression(constantString("foo"), "foo", "\"foo\"");
assertBytecodeExpression(constantClass(List.class), List.class, "List.class");
assertBytecodeExpression(constantClass(boolean.class), boolean.class, "boolean.class");
assertBytecodeExpression(constantClass(byte.class), byte.class, "byte.class");
assertBytecodeExpression(constantClass(char.class), char.class, "char.class");
assertBytecodeExpression(constantClass(double.class), double.class, "double.class");
assertBytecodeExpression(constantClass(float.class), float.class, "float.class");
assertBytecodeExpression(constantClass(int.class), int.class, "int.class");
assertBytecodeExpression(constantClass(long.class), long.class, "long.class");
assertBytecodeExpression(constantClass(short.class), short.class, "short.class");
assertBytecodeExpression(constantClass(void.class), void.class, "void.class");
}
}