/*******************************************************************************
 * Copyright (c) 2000, 2005 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
 *******************************************************************************/

public class EvalSimpleTests {
	
	public static void main(String[] args) {
		byte xVarByte = -5;
		char xVarChar = (char)-5;
		short xVarShort = -5;
		int xVarInt = -5;
		long xVarLong = -5;
		float xVarFloat = (float)-5.3;
		double xVarDouble = -5.3;
		String xVarString = "minus five";
		boolean xVarBoolean = true;
//		Object xVarNull = null;

		byte yVarByte = 7;
		char yVarChar = 7;
		short yVarShort = 7;
		int yVarInt = 7;
		long yVarLong = 7;
		float yVarFloat = (float)6.9;
		double yVarDouble = 6.9;
		String yVarString = "seven";
		boolean yVarBoolean = false;
//		Object yVarNull = null;
		
		System.out.println("tests ...");
	}//3+3

}
