| /******************************************************************************* |
| * Copyright (c) 2009, 2014 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 |
| *******************************************************************************/ |
| package org.eclipse.jdt.core.tests.compiler.regression; |
| |
| import java.util.Map; |
| |
| import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; |
| |
| import junit.framework.Test; |
| |
| @SuppressWarnings({ "unchecked", "rawtypes" }) |
| public class AssignmentTest_1_5 extends AbstractRegressionTest { |
| |
| public AssignmentTest_1_5(String name) { |
| super(name); |
| } |
| protected Map getCompilerOptions() { |
| Map options = super.getCompilerOptions(); |
| options.put(CompilerOptions.OPTION_ReportNullReference, CompilerOptions.ERROR); |
| options.put(CompilerOptions.OPTION_ReportPotentialNullReference, CompilerOptions.ERROR); |
| options.put(CompilerOptions.OPTION_ReportRedundantNullCheck, CompilerOptions.ERROR); |
| options.put(CompilerOptions.OPTION_ReportNoEffectAssignment, CompilerOptions.ERROR); |
| return options; |
| } |
| // Static initializer to specify tests subset using TESTS_* static variables |
| // All specified tests which does not belong to the class are skipped... |
| static { |
| // TESTS_NAMES = new String[] { "test000" }; |
| // TESTS_NUMBERS = new int[] { 15 }; |
| // TESTS_RANGE = new int[] { 11, -1 }; |
| } |
| public static Test suite() { |
| return buildMinimalComplianceTestSuite(testClass(), F_1_5); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450 |
| public void test1() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " Integer value = 4711;\n" + |
| " double test = 47d;\n" + |
| " value += test;\n" + |
| " }\n" + |
| "}", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 5)\n" + |
| " value += test;\n" + |
| " ^^^^^^^^^^^^^\n" + |
| "The operator += is undefined for the argument type(s) Integer, double\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450 |
| public void test2() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " Integer value = 4711;\n" + |
| " float test = 47f;\n" + |
| " value += test;\n" + |
| " }\n" + |
| "}", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 5)\n" + |
| " value += test;\n" + |
| " ^^^^^^^^^^^^^\n" + |
| "The operator += is undefined for the argument type(s) Integer, float\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450 |
| public void test3() { |
| this.runConformTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " Integer value = 4711;\n" + |
| " byte test = 47;\n" + |
| " value += test;\n" + |
| " System.out.println(value);\n" + |
| " }\n" + |
| "}", |
| }, |
| "4758"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450 |
| public void test4() { |
| this.runConformTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " Integer value = 4711;\n" + |
| " char test = 'a';\n" + |
| " value += test;\n" + |
| " System.out.println(value);\n" + |
| " }\n" + |
| "}", |
| }, |
| "4808"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450 |
| public void test5() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " Integer value = 4711;\n" + |
| " long test = 100L;\n" + |
| " value += test;\n" + |
| " System.out.println(value);\n" + |
| " }\n" + |
| "}", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 5)\n" + |
| " value += test;\n" + |
| " ^^^^^^^^^^^^^\n" + |
| "The operator += is undefined for the argument type(s) Integer, long\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450 |
| public void test6() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " Integer value = 4711;\n" + |
| " boolean test = true;\n" + |
| " value += test;\n" + |
| " System.out.println(value);\n" + |
| " }\n" + |
| "}", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 5)\n" + |
| " value += test;\n" + |
| " ^^^^^^^^^^^^^\n" + |
| "The operator += is undefined for the argument type(s) int, boolean\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450 |
| public void test7() { |
| this.runConformTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " Integer value = 4711;\n" + |
| " short test = 32767;\n" + |
| " value += test;\n" + |
| " System.out.println(value);\n" + |
| " }\n" + |
| "}", |
| }, |
| "37478"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450 |
| public void test8() { |
| this.runConformTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " int x = -8;\n" + |
| " x += 7.8f;\n" + |
| " System.out.println(x == 0 ? \"SUCCESS\" : \"FAILED\");\n" + |
| " }\n" + |
| "}", |
| }, |
| "SUCCESS"); |
| } |
| public void test9() { |
| this.runConformTest( |
| new String[] { |
| "X.java", |
| "class XSuper<T> {\n" + |
| " T value;\n" + |
| "}\n" + |
| "public class X extends XSuper<String>{\n" + |
| " public void a() {\n" + |
| " this.value += 1;\n" + |
| " this.value = this.value + 1;\n" + |
| " System.out.println(this.value);\n" + |
| " }\n" + |
| "\n" + |
| " public static void main(final String[] args) {\n" + |
| " X x = new X();\n" + |
| " x.value = \"[\";\n" + |
| " x.a();\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "[11"); |
| } |
| public void test10() { |
| this.runConformTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " Byte b = new Byte((byte)1);\n" + |
| " int i = b++;\n" + |
| " System.out.print(i);\n" + |
| " System.out.print(b);\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "12" |
| ); |
| } |
| public void test11() { |
| this.runConformTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String args[]) { \n" + |
| " Long _long = new Long(44);\n" + |
| " byte b = (byte) 1;\n" + |
| " char c = (char) 2;\n" + |
| " short s = (short) 32767;\n" + |
| " int i = 10;\n" + |
| " long l = 80L;\n" + |
| " _long >>>= b;\n" + |
| " _long <<= c;\n" + |
| " _long >>= s;\n" + |
| " _long >>>= i;\n" + |
| " _long = 77l;\n" + |
| " _long <<= l;\n" + |
| " System.out.println(_long);\n" + |
| " }\n" + |
| "}", |
| }, |
| "5046272" |
| ); |
| } |
| public void test12() { |
| this.runConformTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " Byte b = new Byte((byte)1);\n" + |
| " int i = ++b;\n" + |
| " System.out.print(i);\n" + |
| " System.out.print(b);\n" + |
| " }\n" + |
| "}\n", |
| }, |
| "22" |
| ); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450 |
| public void test13() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " Integer value = 4711;\n" + |
| " long test = 47L;\n" + |
| " value &= test;\n" + |
| " }\n" + |
| "}", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 5)\n" + |
| " value &= test;\n" + |
| " ^^^^^^^^^^^^^\n" + |
| "The operator &= is undefined for the argument type(s) Integer, long\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450 |
| public void test14() { |
| this.runNegativeTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " Integer value = 4711;\n" + |
| " long test = 47L;\n" + |
| " value |= test;\n" + |
| " }\n" + |
| "}", |
| }, |
| "----------\n" + |
| "1. ERROR in X.java (at line 5)\n" + |
| " value |= test;\n" + |
| " ^^^^^^^^^^^^^\n" + |
| "The operator |= is undefined for the argument type(s) Integer, long\n" + |
| "----------\n"); |
| } |
| //https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450 |
| public void test15() { |
| this.runConformTest( |
| new String[] { |
| "X.java", |
| "public class X {\n" + |
| " public static void main(String[] args) {\n" + |
| " Byte value = (byte) 1;\n" + |
| " value++;\n" + |
| " System.out.println(value);\n" + |
| " }\n" + |
| "}", |
| }, |
| "2"); |
| } |
| public static Class testClass() { |
| return AssignmentTest_1_5.class; |
| } |
| } |