/* * Licensed to Elasticsearch under one or more contributor * license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright * ownership. Elasticsearch 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.elasticsearch.painless; public class ComparisonTests extends ScriptTestCase { public void testDefEq() { assertEquals(true, exec("def x = (byte)7; def y = (int)7; return x == y")); assertEquals(true, exec("def x = (short)6; def y = (int)6; return x == y")); assertEquals(true, exec("def x = (char)5; def y = (int)5; return x == y")); assertEquals(true, exec("def x = (int)4; def y = (int)4; return x == y")); assertEquals(false, exec("def x = (long)5; def y = (int)3; return x == y")); assertEquals(false, exec("def x = (float)6; def y = (int)2; return x == y")); assertEquals(false, exec("def x = (double)7; def y = (int)1; return x == y")); assertEquals(true, exec("def x = (byte)7; def y = (double)7; return x == y")); assertEquals(true, exec("def x = (short)6; def y = (double)6; return x == y")); assertEquals(true, exec("def x = (char)5; def y = (double)5; return x == y")); assertEquals(true, exec("def x = (int)4; def y = (double)4; return x == y")); assertEquals(false, exec("def x = (long)5; def y = (double)3; return x == y")); assertEquals(false, exec("def x = (float)6; def y = (double)2; return x == y")); assertEquals(false, exec("def x = (double)7; def y = (double)1; return x == y")); assertEquals(false, exec("def x = false; def y = true; return x == y")); assertEquals(false, exec("def x = true; def y = false; return x == y")); assertEquals(false, exec("def x = true; def y = null; return x == y")); assertEquals(false, exec("def x = null; def y = true; return x == y")); assertEquals(true, exec("def x = true; def y = true; return x == y")); assertEquals(true, exec("def x = false; def y = false; return x == y")); assertEquals(true, exec("def x = new HashMap(); def y = new HashMap(); return x == y")); assertEquals(false, exec("def x = new HashMap(); x.put(3, 3); def y = new HashMap(); return x == y")); assertEquals(true, exec("def x = new HashMap(); x.put(3, 3); def y = new HashMap(); y.put(3, 3); return x == y")); assertEquals(true, exec("def x = new HashMap(); def y = x; x.put(3, 3); y.put(3, 3); return x == y")); } public void testDefEqTypedLHS() { assertEquals(true, exec("byte x = (byte)7; def y = (int)7; return x == y")); assertEquals(true, exec("short x = (short)6; def y = (int)6; return x == y")); assertEquals(true, exec("char x = (char)5; def y = (int)5; return x == y")); assertEquals(true, exec("int x = (int)4; def y = (int)4; return x == y")); assertEquals(false, exec("long x = (long)5; def y = (int)3; return x == y")); assertEquals(false, exec("float x = (float)6; def y = (int)2; return x == y")); assertEquals(false, exec("double x = (double)7; def y = (int)1; return x == y")); assertEquals(true, exec("byte x = (byte)7; def y = (double)7; return x == y")); assertEquals(true, exec("short x = (short)6; def y = (double)6; return x == y")); assertEquals(true, exec("char x = (char)5; def y = (double)5; return x == y")); assertEquals(true, exec("int x = (int)4; def y = (double)4; return x == y")); assertEquals(false, exec("long x = (long)5; def y = (double)3; return x == y")); assertEquals(false, exec("float x = (float)6; def y = (double)2; return x == y")); assertEquals(false, exec("double x = (double)7; def y = (double)1; return x == y")); assertEquals(false, exec("boolean x = false; def y = true; return x == y")); assertEquals(false, exec("boolean x = true; def y = false; return x == y")); assertEquals(false, exec("boolean x = true; def y = null; return x == y")); assertEquals(true, exec("boolean x = true; def y = true; return x == y")); assertEquals(true, exec("boolean x = false; def y = false; return x == y")); assertEquals(true, exec("Map x = new HashMap(); def y = new HashMap(); return x == y")); assertEquals(false, exec("Map x = new HashMap(); x.put(3, 3); def y = new HashMap(); return x == y")); assertEquals(true, exec("Map x = new HashMap(); x.put(3, 3); def y = new HashMap(); y.put(3, 3); return x == y")); assertEquals(true, exec("Map x = new HashMap(); def y = x; x.put(3, 3); y.put(3, 3); return x == y")); } public void testDefEqTypedRHS() { assertEquals(true, exec("def x = (byte)7; int y = (int)7; return x == y")); assertEquals(true, exec("def x = (short)6; int y = (int)6; return x == y")); assertEquals(true, exec("def x = (char)5; int y = (int)5; return x == y")); assertEquals(true, exec("def x = (int)4; int y = (int)4; return x == y")); assertEquals(false, exec("def x = (long)5; int y = (int)3; return x == y")); assertEquals(false, exec("def x = (float)6; int y = (int)2; return x == y")); assertEquals(false, exec("def x = (double)7; int y = (int)1; return x == y")); assertEquals(true, exec("def x = (byte)7; double y = (double)7; return x == y")); assertEquals(true, exec("def x = (short)6; double y = (double)6; return x == y")); assertEquals(true, exec("def x = (char)5; double y = (double)5; return x == y")); assertEquals(true, exec("def x = (int)4; double y = (double)4; return x == y")); assertEquals(false, exec("def x = (long)5; double y = (double)3; return x == y")); assertEquals(false, exec("def x = (float)6; double y = (double)2; return x == y")); assertEquals(false, exec("def x = (double)7; double y = (double)1; return x == y")); assertEquals(false, exec("def x = false; boolean y = true; return x == y")); assertEquals(false, exec("def x = true; boolean y = false; return x == y")); assertEquals(false, exec("def x = null; boolean y = true; return x == y")); assertEquals(true, exec("def x = true; boolean y = true; return x == y")); assertEquals(true, exec("def x = false; boolean y = false; return x == y")); assertEquals(true, exec("def x = new HashMap(); Map y = new HashMap(); return x == y")); assertEquals(false, exec("def x = new HashMap(); x.put(3, 3); Map y = new HashMap(); return x == y")); assertEquals(true, exec("def x = new HashMap(); x.put(3, 3); Map y = new HashMap(); y.put(3, 3); return x == y")); assertEquals(true, exec("def x = new HashMap(); Map y = x; x.put(3, 3); y.put(3, 3); return x == y")); } public void testDefEqr() { assertEquals(false, exec("def x = (byte)7; def y = (int)7; return x === y")); assertEquals(false, exec("def x = (short)6; def y = (int)6; return x === y")); assertEquals(false, exec("def x = (char)5; def y = (int)5; return x === y")); assertEquals(true, exec("def x = (int)4; def y = (int)4; return x === y")); assertEquals(false, exec("def x = (long)5; def y = (int)3; return x === y")); assertEquals(false, exec("def x = (float)6; def y = (int)2; return x === y")); assertEquals(false, exec("def x = (double)7; def y = (int)1; return x === y")); assertEquals(false, exec("def x = false; def y = true; return x === y")); assertEquals(false, exec("def x = new HashMap(); def y = new HashMap(); return x === y")); assertEquals(false, exec("def x = new HashMap(); x.put(3, 3); def y = new HashMap(); return x === y")); assertEquals(false, exec("def x = new HashMap(); x.put(3, 3); def y = new HashMap(); y.put(3, 3); return x === y")); assertEquals(true, exec("def x = new HashMap(); def y = x; x.put(3, 3); y.put(3, 3); return x === y")); } public void testDefNe() { assertEquals(false, exec("def x = (byte)7; def y = (int)7; return x != y")); assertEquals(false, exec("def x = (short)6; def y = (int)6; return x != y")); assertEquals(false, exec("def x = (char)5; def y = (int)5; return x != y")); assertEquals(false, exec("def x = (int)4; def y = (int)4; return x != y")); assertEquals(true, exec("def x = (long)5; def y = (int)3; return x != y")); assertEquals(true, exec("def x = (float)6; def y = (int)2; return x != y")); assertEquals(true, exec("def x = (double)7; def y = (int)1; return x != y")); assertEquals(false, exec("def x = (byte)7; def y = (double)7; return x != y")); assertEquals(false, exec("def x = (short)6; def y = (double)6; return x != y")); assertEquals(false, exec("def x = (char)5; def y = (double)5; return x != y")); assertEquals(false, exec("def x = (int)4; def y = (double)4; return x != y")); assertEquals(true, exec("def x = (long)5; def y = (double)3; return x != y")); assertEquals(true, exec("def x = (float)6; def y = (double)2; return x != y")); assertEquals(true, exec("def x = (double)7; def y = (double)1; return x != y")); assertEquals(false, exec("def x = new HashMap(); def y = new HashMap(); return x != y")); assertEquals(true, exec("def x = new HashMap(); x.put(3, 3); def y = new HashMap(); return x != y")); assertEquals(false, exec("def x = new HashMap(); x.put(3, 3); def y = new HashMap(); y.put(3, 3); return x != y")); assertEquals(false, exec("def x = new HashMap(); def y = x; x.put(3, 3); y.put(3, 3); return x != y")); assertEquals(false, exec("def x = true; def y = true; return x != y")); assertEquals(true, exec("def x = true; def y = false; return x != y")); assertEquals(true, exec("def x = false; def y = true; return x != y")); assertEquals(false, exec("def x = false; def y = false; return x != y")); } public void testDefNeTypedLHS() { assertEquals(false, exec("byte x = (byte)7; def y = (int)7; return x != y")); assertEquals(false, exec("short x = (short)6; def y = (int)6; return x != y")); assertEquals(false, exec("char x = (char)5; def y = (int)5; return x != y")); assertEquals(false, exec("int x = (int)4; def y = (int)4; return x != y")); assertEquals(true, exec("long x = (long)5; def y = (int)3; return x != y")); assertEquals(true, exec("float x = (float)6; def y = (int)2; return x != y")); assertEquals(true, exec("double x = (double)7; def y = (int)1; return x != y")); assertEquals(false, exec("byte x = (byte)7; def y = (double)7; return x != y")); assertEquals(false, exec("short x = (short)6; def y = (double)6; return x != y")); assertEquals(false, exec("char x = (char)5; def y = (double)5; return x != y")); assertEquals(false, exec("int x = (int)4; def y = (double)4; return x != y")); assertEquals(true, exec("long x = (long)5; def y = (double)3; return x != y")); assertEquals(true, exec("float x = (float)6; def y = (double)2; return x != y")); assertEquals(true, exec("double x = (double)7; def y = (double)1; return x != y")); assertEquals(false, exec("Map x = new HashMap(); def y = new HashMap(); return x != y")); assertEquals(true, exec("Map x = new HashMap(); x.put(3, 3); def y = new HashMap(); return x != y")); assertEquals(false, exec("Map x = new HashMap(); x.put(3, 3); def y = new HashMap(); y.put(3, 3); return x != y")); assertEquals(false, exec("Map x = new HashMap(); def y = x; x.put(3, 3); y.put(3, 3); return x != y")); assertEquals(false, exec("boolean x = true; def y = true; return x != y")); assertEquals(true, exec("boolean x = true; def y = false; return x != y")); assertEquals(true, exec("boolean x = false; def y = true; return x != y")); assertEquals(false, exec("boolean x = false; def y = false; return x != y")); } public void testDefNeTypedRHS() { assertEquals(false, exec("def x = (byte)7; int y = (int)7; return x != y")); assertEquals(false, exec("def x = (short)6; int y = (int)6; return x != y")); assertEquals(false, exec("def x = (char)5; int y = (int)5; return x != y")); assertEquals(false, exec("def x = (int)4; int y = (int)4; return x != y")); assertEquals(true, exec("def x = (long)5; int y = (int)3; return x != y")); assertEquals(true, exec("def x = (float)6; int y = (int)2; return x != y")); assertEquals(true, exec("def x = (double)7; int y = (int)1; return x != y")); assertEquals(false, exec("def x = (byte)7; double y = (double)7; return x != y")); assertEquals(false, exec("def x = (short)6; double y = (double)6; return x != y")); assertEquals(false, exec("def x = (char)5; double y = (double)5; return x != y")); assertEquals(false, exec("def x = (int)4; double y = (double)4; return x != y")); assertEquals(true, exec("def x = (long)5; double y = (double)3; return x != y")); assertEquals(true, exec("def x = (float)6; double y = (double)2; return x != y")); assertEquals(true, exec("def x = (double)7; double y = (double)1; return x != y")); assertEquals(false, exec("def x = new HashMap(); Map y = new HashMap(); return x != y")); assertEquals(true, exec("def x = new HashMap(); x.put(3, 3); Map y = new HashMap(); return x != y")); assertEquals(false, exec("def x = new HashMap(); x.put(3, 3); Map y = new HashMap(); y.put(3, 3); return x != y")); assertEquals(false, exec("def x = new HashMap(); Map y = x; x.put(3, 3); y.put(3, 3); return x != y")); assertEquals(false, exec("def x = true; boolean y = true; return x != y")); assertEquals(true, exec("def x = true; boolean y = false; return x != y")); assertEquals(true, exec("def x = false; boolean y = true; return x != y")); assertEquals(false, exec("def x = false; boolean y = false; return x != y")); } public void testDefNer() { assertEquals(true, exec("def x = (byte)7; def y = (int)7; return x !== y")); assertEquals(true, exec("def x = (short)6; def y = (int)6; return x !== y")); assertEquals(true, exec("def x = (char)5; def y = (int)5; return x !== y")); assertEquals(false, exec("def x = (int)4; def y = (int)4; return x !== y")); assertEquals(true, exec("def x = (long)5; def y = (int)3; return x !== y")); assertEquals(true, exec("def x = (float)6; def y = (int)2; return x !== y")); assertEquals(true, exec("def x = (double)7; def y = (int)1; return x !== y")); assertEquals(true, exec("def x = new HashMap(); def y = new HashMap(); return x !== y")); assertEquals(true, exec("def x = new HashMap(); x.put(3, 3); def y = new HashMap(); return x !== y")); assertEquals(true, exec("def x = new HashMap(); x.put(3, 3); def y = new HashMap(); y.put(3, 3); return x !== y")); assertEquals(false, exec("def x = new HashMap(); def y = x; x.put(3, 3); y.put(3, 3); return x !== y")); } public void testDefLt() { assertEquals(true, exec("def x = (byte)1; def y = (int)7; return x < y")); assertEquals(true, exec("def x = (short)2; def y = (int)6; return x < y")); assertEquals(true, exec("def x = (char)3; def y = (int)5; return x < y")); assertEquals(false, exec("def x = (int)4; def y = (int)4; return x < y")); assertEquals(false, exec("def x = (long)5; def y = (int)3; return x < y")); assertEquals(false, exec("def x = (float)6; def y = (int)2; return x < y")); assertEquals(false, exec("def x = (double)7; def y = (int)1; return x < y")); assertEquals(true, exec("def x = (byte)1; def y = (double)7; return x < y")); assertEquals(true, exec("def x = (short)2; def y = (double)6; return x < y")); assertEquals(true, exec("def x = (char)3; def y = (double)5; return x < y")); assertEquals(false, exec("def x = (int)4; def y = (double)4; return x < y")); assertEquals(false, exec("def x = (long)5; def y = (double)3; return x < y")); assertEquals(false, exec("def x = (float)6; def y = (double)2; return x < y")); assertEquals(false, exec("def x = (double)7; def y = (double)1; return x < y")); } public void testDefLtTypedLHS() { assertEquals(true, exec("byte x = (byte)1; def y = (int)7; return x < y")); assertEquals(true, exec("short x = (short)2; def y = (int)6; return x < y")); assertEquals(true, exec("char x = (char)3; def y = (int)5; return x < y")); assertEquals(false, exec("int x = (int)4; def y = (int)4; return x < y")); assertEquals(false, exec("long x = (long)5; def y = (int)3; return x < y")); assertEquals(false, exec("float x = (float)6; def y = (int)2; return x < y")); assertEquals(false, exec("double x = (double)7; def y = (int)1; return x < y")); assertEquals(true, exec("byte x = (byte)1; def y = (double)7; return x < y")); assertEquals(true, exec("short x = (short)2; def y = (double)6; return x < y")); assertEquals(true, exec("char x = (char)3; def y = (double)5; return x < y")); assertEquals(false, exec("int x = (int)4; def y = (double)4; return x < y")); assertEquals(false, exec("long x = (long)5; def y = (double)3; return x < y")); assertEquals(false, exec("float x = (float)6; def y = (double)2; return x < y")); assertEquals(false, exec("double x = (double)7; def y = (double)1; return x < y")); } public void testDefLtTypedRHS() { assertEquals(true, exec("def x = (byte)1; int y = (int)7; return x < y")); assertEquals(true, exec("def x = (short)2; int y = (int)6; return x < y")); assertEquals(true, exec("def x = (char)3; int y = (int)5; return x < y")); assertEquals(false, exec("def x = (int)4; int y = (int)4; return x < y")); assertEquals(false, exec("def x = (long)5; int y = (int)3; return x < y")); assertEquals(false, exec("def x = (float)6; int y = (int)2; return x < y")); assertEquals(false, exec("def x = (double)7; int y = (int)1; return x < y")); assertEquals(true, exec("def x = (byte)1; double y = (double)7; return x < y")); assertEquals(true, exec("def x = (short)2; double y = (double)6; return x < y")); assertEquals(true, exec("def x = (char)3; double y = (double)5; return x < y")); assertEquals(false, exec("def x = (int)4; double y = (double)4; return x < y")); assertEquals(false, exec("def x = (long)5; double y = (double)3; return x < y")); assertEquals(false, exec("def x = (float)6; double y = (double)2; return x < y")); assertEquals(false, exec("def x = (double)7; double y = (double)1; return x < y")); } public void testDefLte() { assertEquals(true, exec("def x = (byte)1; def y = (int)7; return x <= y")); assertEquals(true, exec("def x = (short)2; def y = (int)6; return x <= y")); assertEquals(true, exec("def x = (char)3; def y = (int)5; return x <= y")); assertEquals(true, exec("def x = (int)4; def y = (int)4; return x <= y")); assertEquals(false, exec("def x = (long)5; def y = (int)3; return x <= y")); assertEquals(false, exec("def x = (float)6; def y = (int)2; return x <= y")); assertEquals(false, exec("def x = (double)7; def y = (int)1; return x <= y")); assertEquals(true, exec("def x = (byte)1; def y = (double)7; return x <= y")); assertEquals(true, exec("def x = (short)2; def y = (double)6; return x <= y")); assertEquals(true, exec("def x = (char)3; def y = (double)5; return x <= y")); assertEquals(true, exec("def x = (int)4; def y = (double)4; return x <= y")); assertEquals(false, exec("def x = (long)5; def y = (double)3; return x <= y")); assertEquals(false, exec("def x = (float)6; def y = (double)2; return x <= y")); assertEquals(false, exec("def x = (double)7; def y = (double)1; return x <= y")); } public void testDefLteTypedLHS() { assertEquals(true, exec("byte x = (byte)1; def y = (int)7; return x <= y")); assertEquals(true, exec("short x = (short)2; def y = (int)6; return x <= y")); assertEquals(true, exec("char x = (char)3; def y = (int)5; return x <= y")); assertEquals(true, exec("int x = (int)4; def y = (int)4; return x <= y")); assertEquals(false, exec("long x = (long)5; def y = (int)3; return x <= y")); assertEquals(false, exec("float x = (float)6; def y = (int)2; return x <= y")); assertEquals(false, exec("double x = (double)7; def y = (int)1; return x <= y")); assertEquals(true, exec("byte x = (byte)1; def y = (double)7; return x <= y")); assertEquals(true, exec("short x = (short)2; def y = (double)6; return x <= y")); assertEquals(true, exec("char x = (char)3; def y = (double)5; return x <= y")); assertEquals(true, exec("int x = (int)4; def y = (double)4; return x <= y")); assertEquals(false, exec("long x = (long)5; def y = (double)3; return x <= y")); assertEquals(false, exec("float x = (float)6; def y = (double)2; return x <= y")); assertEquals(false, exec("double x = (double)7; def y = (double)1; return x <= y")); } public void testDefLteTypedRHS() { assertEquals(true, exec("def x = (byte)1; int y = (int)7; return x <= y")); assertEquals(true, exec("def x = (short)2; int y = (int)6; return x <= y")); assertEquals(true, exec("def x = (char)3; int y = (int)5; return x <= y")); assertEquals(true, exec("def x = (int)4; int y = (int)4; return x <= y")); assertEquals(false, exec("def x = (long)5; int y = (int)3; return x <= y")); assertEquals(false, exec("def x = (float)6; int y = (int)2; return x <= y")); assertEquals(false, exec("def x = (double)7; int y = (int)1; return x <= y")); assertEquals(true, exec("def x = (byte)1; double y = (double)7; return x <= y")); assertEquals(true, exec("def x = (short)2; double y = (double)6; return x <= y")); assertEquals(true, exec("def x = (char)3; double y = (double)5; return x <= y")); assertEquals(true, exec("def x = (int)4; double y = (double)4; return x <= y")); assertEquals(false, exec("def x = (long)5; double y = (double)3; return x <= y")); assertEquals(false, exec("def x = (float)6; double y = (double)2; return x <= y")); assertEquals(false, exec("def x = (double)7; double y = (double)1; return x <= y")); } public void testDefGt() { assertEquals(false, exec("def x = (byte)1; def y = (int)7; return x > y")); assertEquals(false, exec("def x = (short)2; def y = (int)6; return x > y")); assertEquals(false, exec("def x = (char)3; def y = (int)5; return x > y")); assertEquals(false, exec("def x = (int)4; def y = (int)4; return x > y")); assertEquals(true, exec("def x = (long)5; def y = (int)3; return x > y")); assertEquals(true, exec("def x = (float)6; def y = (int)2; return x > y")); assertEquals(true, exec("def x = (double)7; def y = (int)1; return x > y")); assertEquals(false, exec("def x = (byte)1; def y = (double)7; return x > y")); assertEquals(false, exec("def x = (short)2; def y = (double)6; return x > y")); assertEquals(false, exec("def x = (char)3; def y = (double)5; return x > y")); assertEquals(false, exec("def x = (int)4; def y = (double)4; return x > y")); assertEquals(true, exec("def x = (long)5; def y = (double)3; return x > y")); assertEquals(true, exec("def x = (float)6; def y = (double)2; return x > y")); assertEquals(true, exec("def x = (double)7; def y = (double)1; return x > y")); } public void testDefGtTypedLHS() { assertEquals(false, exec("byte x = (byte)1; def y = (int)7; return x > y")); assertEquals(false, exec("short x = (short)2; def y = (int)6; return x > y")); assertEquals(false, exec("char x = (char)3; def y = (int)5; return x > y")); assertEquals(false, exec("int x = (int)4; def y = (int)4; return x > y")); assertEquals(true, exec("long x = (long)5; def y = (int)3; return x > y")); assertEquals(true, exec("float x = (float)6; def y = (int)2; return x > y")); assertEquals(true, exec("double x = (double)7; def y = (int)1; return x > y")); assertEquals(false, exec("byte x = (byte)1; def y = (double)7; return x > y")); assertEquals(false, exec("short x = (short)2; def y = (double)6; return x > y")); assertEquals(false, exec("char x = (char)3; def y = (double)5; return x > y")); assertEquals(false, exec("int x = (int)4; def y = (double)4; return x > y")); assertEquals(true, exec("long x = (long)5; def y = (double)3; return x > y")); assertEquals(true, exec("float x = (float)6; def y = (double)2; return x > y")); assertEquals(true, exec("double x = (double)7; def y = (double)1; return x > y")); } public void testDefGtTypedRHS() { assertEquals(false, exec("def x = (byte)1; int y = (int)7; return x > y")); assertEquals(false, exec("def x = (short)2; int y = (int)6; return x > y")); assertEquals(false, exec("def x = (char)3; int y = (int)5; return x > y")); assertEquals(false, exec("def x = (int)4; int y = (int)4; return x > y")); assertEquals(true, exec("def x = (long)5; int y = (int)3; return x > y")); assertEquals(true, exec("def x = (float)6; int y = (int)2; return x > y")); assertEquals(true, exec("def x = (double)7; int y = (int)1; return x > y")); assertEquals(false, exec("def x = (byte)1; double y = (double)7; return x > y")); assertEquals(false, exec("def x = (short)2; double y = (double)6; return x > y")); assertEquals(false, exec("def x = (char)3; double y = (double)5; return x > y")); assertEquals(false, exec("def x = (int)4; double y = (double)4; return x > y")); assertEquals(true, exec("def x = (long)5; double y = (double)3; return x > y")); assertEquals(true, exec("def x = (float)6; double y = (double)2; return x > y")); assertEquals(true, exec("def x = (double)7; double y = (double)1; return x > y")); } public void testDefGte() { assertEquals(false, exec("def x = (byte)1; def y = (int)7; return x >= y")); assertEquals(false, exec("def x = (short)2; def y = (int)6; return x >= y")); assertEquals(false, exec("def x = (char)3; def y = (int)5; return x >= y")); assertEquals(true, exec("def x = (int)4; def y = (int)4; return x >= y")); assertEquals(true, exec("def x = (long)5; def y = (int)3; return x >= y")); assertEquals(true, exec("def x = (float)6; def y = (int)2; return x >= y")); assertEquals(true, exec("def x = (double)7; def y = (int)1; return x >= y")); assertEquals(false, exec("def x = (byte)1; def y = (double)7; return x >= y")); assertEquals(false, exec("def x = (short)2; def y = (double)6; return x >= y")); assertEquals(false, exec("def x = (char)3; def y = (double)5; return x >= y")); assertEquals(true, exec("def x = (int)4; def y = (double)4; return x >= y")); assertEquals(true, exec("def x = (long)5; def y = (double)3; return x >= y")); assertEquals(true, exec("def x = (float)6; def y = (double)2; return x >= y")); assertEquals(true, exec("def x = (double)7; def y = (double)1; return x >= y")); } public void testDefGteTypedLHS() { assertEquals(false, exec("byte x = (byte)1; def y = (int)7; return x >= y")); assertEquals(false, exec("short x = (short)2; def y = (int)6; return x >= y")); assertEquals(false, exec("char x = (char)3; def y = (int)5; return x >= y")); assertEquals(true, exec("int x = (int)4; def y = (int)4; return x >= y")); assertEquals(true, exec("long x = (long)5; def y = (int)3; return x >= y")); assertEquals(true, exec("float x = (float)6; def y = (int)2; return x >= y")); assertEquals(true, exec("double x = (double)7; def y = (int)1; return x >= y")); assertEquals(false, exec("byte x = (byte)1; def y = (double)7; return x >= y")); assertEquals(false, exec("short x = (short)2; def y = (double)6; return x >= y")); assertEquals(false, exec("char x = (char)3; def y = (double)5; return x >= y")); assertEquals(true, exec("int x = (int)4; def y = (double)4; return x >= y")); assertEquals(true, exec("long x = (long)5; def y = (double)3; return x >= y")); assertEquals(true, exec("float x = (float)6; def y = (double)2; return x >= y")); assertEquals(true, exec("double x = (double)7; def y = (double)1; return x >= y")); } public void testDefGteTypedRHS() { assertEquals(false, exec("def x = (byte)1; int y = (int)7; return x >= y")); assertEquals(false, exec("def x = (short)2; int y = (int)6; return x >= y")); assertEquals(false, exec("def x = (char)3; int y = (int)5; return x >= y")); assertEquals(true, exec("def x = (int)4; int y = (int)4; return x >= y")); assertEquals(true, exec("def x = (long)5; int y = (int)3; return x >= y")); assertEquals(true, exec("def x = (float)6; int y = (int)2; return x >= y")); assertEquals(true, exec("def x = (double)7; int y = (int)1; return x >= y")); assertEquals(false, exec("def x = (byte)1; double y = (double)7; return x >= y")); assertEquals(false, exec("def x = (short)2; double y = (double)6; return x >= y")); assertEquals(false, exec("def x = (char)3; double y = (double)5; return x >= y")); assertEquals(true, exec("def x = (int)4; double y = (double)4; return x >= y")); assertEquals(true, exec("def x = (long)5; double y = (double)3; return x >= y")); assertEquals(true, exec("def x = (float)6; double y = (double)2; return x >= y")); assertEquals(true, exec("def x = (double)7; double y = (double)1; return x >= y")); } public void testInstanceOf() { assertEquals(true, exec("int x = 5; return x instanceof int")); assertEquals(true, exec("int x = 5; return x instanceof Number")); assertEquals(true, exec("int x = 5; return x instanceof Integer")); assertEquals(true, exec("int x = 5; return x instanceof def")); assertEquals(true, exec("int x = 5; return x instanceof Object")); assertEquals(true, exec("def x = 5; return x instanceof int")); assertEquals(true, exec("def x = 5; return x instanceof def")); assertEquals(true, exec("def x = 5; return x instanceof Object")); assertEquals(true, exec("def x = 5; return x instanceof Integer")); assertEquals(true, exec("def x = 5; return x instanceof Number")); assertEquals(false, exec("def x = 5; return x instanceof float")); assertEquals(false, exec("def x = 5; return x instanceof Map")); assertEquals(true, exec("List l = new ArrayList(); return l instanceof List")); assertEquals(false, exec("List l = null; return l instanceof List")); assertEquals(true, exec("List l = new ArrayList(); return l instanceof Collection")); assertEquals(false, exec("List l = new ArrayList(); return l instanceof Map")); assertEquals(true, exec("int[] x = new int[] { 5 }; return x instanceof int[]")); assertEquals(false, exec("int[] x = new int[] { 5 }; return x instanceof float[]")); assertEquals(false, exec("int[] x = new int[] { 5 }; return x instanceof int[][]")); } }