7d9960cf1e8f866e957d649417ab0c5227a98f3a
[idea/community.git] / java / java-tests / testSrc / com / intellij / codeInsight / daemon / lambda / Interface8MethodsHighlightingTest.java
1 /*
2  * Copyright 2000-2013 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.codeInsight.daemon.lambda;
17
18 import com.intellij.JavaTestUtil;
19 import com.intellij.testFramework.LightProjectDescriptor;
20 import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
21 import org.jetbrains.annotations.NonNls;
22 import org.jetbrains.annotations.NotNull;
23
24 public class Interface8MethodsHighlightingTest extends LightCodeInsightFixtureTestCase {
25   @NonNls static final String BASE_PATH = "/codeInsight/daemonCodeAnalyzer/lambda/interfaceMethods";
26
27   public void testStaticMethod() { doTest(); }
28   public void testNotInheritFromUnrelatedDefault() { doTest(true, false); }
29   public void testDefaultMethodVisibility() { doTest(true, false); }
30   public void testInheritUnrelatedDefaults() { doTest(true, false); }
31   public void testExtensionMethods() { doTest(false, false); }
32   public void testInheritDefaultMethodInInterface() { doTest(false, false); }
33   public void testCheckForFunctionalInterfaceCandidatesWhenOverrideEquivalentMethodsAreFoundInSuperInterfaces() { doTest(false, false);}
34   public void testStaticMethodsInFunctionalInterface() { doTest(false, false); }
35   public void testCyclicSubstitutor() { doTest(false, false); }
36   public void testThisAccessibility() { doTest(false, false); }
37   public void testStaticMethodCalls() { doTest(false, false); }
38   public void testStaticMethodCallsAndOverloadResolution() { doTest(false, false); }
39   public void testDefaultMethodOverrideEquivalentObject() { doTest(false, false); }
40   public void testDefaultMethodOverrideAbstract() { doTest(false, false); }
41   public void testModifierNativeInInterface() { doTest(false, false); }
42   public void testStaticMethods() { doTest(false, false); }
43   public void testFinalStaticDefaultMethods() { doTest(false, false); }
44   public void testIDEA122720() { doTest(false, false); }
45   public void testIDEA123839() { doTest(false, false); }
46   public void testStaticOverloading() { doTest(false, false); }
47   public void testDefaultSupersInStaticContext() {
48     doTest(false, false);
49   }
50   public void testAnnotationTypeExtensionsNotSupported() {
51     doTest(false, false);
52   }
53
54   public void testStaticMethodAccessibleThroughStaticImportButExplicitlyQualified() throws Exception {
55     doTest(true, false);
56   }
57
58   public void testInheritanceOfStaticMethodFromDefault() throws Exception {
59     doTest();
60   }
61
62   public void testUnrelatedDefaultsOverriddenWithConcreteMethodNonEmptySubstitutor() throws Exception {
63     doTest(false, false);
64   }
65
66   public void testUnrelatedDefaultsWithTypeParameter() throws Exception {
67     doTest(false, false);
68   }
69
70   public void testStaticMethodAccessibleBothThroughStaticImportAndInheritance() throws Exception {
71     myFixture.addClass("package p; public interface Foo {" +
72                        "    static void foo() {}" +
73                        "    static void bar() {}" +
74                        "}");
75     myFixture.addClass("package p; public interface Boo {" +
76                        "    static void boo() {}" +
77                        "}");
78     doTest(false, false);
79   }
80
81   public void testSuperProtectedCalls() throws Exception {
82     myFixture.addClass("package p; public class Foo {" +
83                        "  protected void foo(){}" +
84                        "}");
85     doTest();
86   }
87
88   public void testIDEA120498() { doTest(false, false); }
89
90   public void testIgnoreStaticInterfaceMethods() throws Exception {
91     doTest(true, false);
92   }
93
94   public void testAcceptStaticInterfaceMethodsImportedViaStaticImports() throws Exception {
95     doTest();
96   }
97
98   public void testInherit2MethodsWithSameOverrideEquivalentSignatureFromOneSuperclass() throws Exception {
99     doTest();
100   }
101
102   public void testMultipleDefaultsAndAbstractsSomeOfWhichOverridesEachOther() throws Exception {
103     doTest();
104   }
105
106   public void testSubsignatureCheckWhen2DifferentMethodsBecomeOverrideEquivalent() throws Exception {
107     doTest();
108   }
109
110   public void testUnrelatedDefaultsWhenAbstractIsOverridden() throws Exception {
111     doTest();
112   }
113
114   public void testAbstractOverriddenBySecondDefault() throws Exception {
115     doTest();
116   }
117
118   private void doTest() {
119     doTest(false, false);
120   }
121
122   private void doTest(boolean checkWarnings, boolean checkInfos) {
123     String filePath = BASE_PATH + "/" + getTestName(false) + ".java";
124     myFixture.configureByFile(filePath);
125     myFixture.checkHighlighting(checkWarnings, checkInfos, false);
126   }
127
128   @Override
129   protected String getTestDataPath() {
130     return JavaTestUtil.getJavaTestDataPath();
131   }
132
133   @NotNull
134   @Override
135   protected LightProjectDescriptor getProjectDescriptor() {
136     return JAVA_8;
137   }
138 }