/* * Copyright 2000-2013 JetBrains s.r.o. * Copyright 2014-2015 AS3Boyan * Copyright 2014-2014 Elias Ku * * 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.intellij.plugins.haxe.ide; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInspection.DefaultHighlightVisitorBasedInspection; import com.intellij.lang.LanguageAnnotators; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.plugins.haxe.HaxeCodeInsightFixtureTestCase; import com.intellij.plugins.haxe.HaxeLanguage; import com.intellij.plugins.haxe.ide.annotator.HaxeTypeAnnotator; import com.intellij.util.ArrayUtil; import org.apache.commons.lang.StringUtils; import java.util.Arrays; public class HaxeSemanticAnnotatorTest extends HaxeCodeInsightFixtureTestCase { @Override protected String getBasePath() { return "/annotation.semantic/"; } private void doTestNoFix(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings, String... additionalFiles) throws Exception { myFixture.configureByFiles(ArrayUtil.mergeArrays(new String[]{getTestName(false) + ".hx"}, additionalFiles)); final HaxeTypeAnnotator annotator = new HaxeTypeAnnotator(); LanguageAnnotators.INSTANCE.addExplicitExtension(HaxeLanguage.INSTANCE, annotator); myFixture.enableInspections(new DefaultHighlightVisitorBasedInspection.AnnotatorBasedInspection()); myFixture.testHighlighting(true, false, false); } private void doTestNoFixWithWarnings(String... additionalFiles) throws Exception { doTestNoFix(true, false, false, additionalFiles); } private void doTestNoFixWithoutWarnings(String... additionalFiles) throws Exception { doTestNoFix(false, false, false, additionalFiles); } private void doTest(String... filters) throws Exception { doTestNoFixWithoutWarnings(); for (final IntentionAction action : myFixture.getAvailableIntentions()) { if (Arrays.asList(filters).contains(action.getText())) { System.out.println("Applying intent " + action.getText()); myFixture.launchAction(action); } else { System.out.println("Ignoring intent " + action.getText() + ", not matching " + StringUtils.join(filters, ",")); } } FileDocumentManager.getInstance().saveAllDocuments(); myFixture.checkResultByFile(getTestName(false) + "_expected.hx"); } public void testFixPackage() throws Exception { doTest("Fix package"); } public void testRemoveOverride() throws Exception { doTest("Remove override"); } public void testRemoveFinal() throws Exception { doTest("Remove @:final from Base.test"); } public void testChangeArgumentType() throws Exception { doTest("Change type"); } public void testRemoveArgumentInit() throws Exception { doTest("Remove init"); } public void testInterfaceMethodsShouldHaveTypeTags() throws Exception { doTestNoFixWithWarnings(); } public void testOptionalWithInitWarning() throws Exception { doTestNoFixWithWarnings(); } public void testNonOptionalArgumentsAfterOptionalOnes() throws Exception { doTestNoFixWithWarnings(); } public void testNonConstantArgument() throws Exception { doTestNoFixWithWarnings(); } public void testNonConstantArgumentAbstractEnum() throws Exception { doTestNoFixWithWarnings("test/SampleAbstractEnum.hx", "std/StdTypes.hx"); } public void testConstructorMustNotBeStatic() throws Exception { doTestNoFixWithWarnings(); } public void testInitMagicMethodShouldBeStatic() throws Exception { doTestNoFixWithWarnings(); } public void testRepeatedArgumentName() throws Exception { doTestNoFixWithWarnings(); } public void testAbstractFromTo() throws Exception { doTestNoFixWithWarnings(); } public void testNullFunction() throws Exception { doTestNoFixWithWarnings(); } public void testOverrideVisibility() throws Exception { doTestNoFixWithWarnings(); } public void testUcFirstClassName() throws Exception { doTest("Change name"); } public void testUcFirstClassName2() throws Exception { doTestNoFixWithWarnings(); } public void testRepeatedFields() throws Exception { doTestNoFixWithWarnings(); } public void testPropertiesSimpleCheck() throws Exception { doTestNoFixWithWarnings(); } public void testPropertyAllowNonConstantInitialization() throws Exception { doTestNoFixWithWarnings(); } public void testOverrideSignature() throws Exception { doTest("Remove argument"); } public void testOverrideSignature2() throws Exception { doTestNoFixWithWarnings(); } public void testOverrideSignature3() throws Exception { doTest("Remove argument"); } public void testOverrideSignature4() throws Exception { doTest("Remove argument"); } public void testImplementSignature() throws Exception { doTestNoFixWithWarnings(); } public void testImplementExternInterface() throws Exception { doTestNoFixWithWarnings(); } public void testSimpleAssignUnknownGeneric() throws Exception { doTestNoFixWithWarnings(); } public void testExtendsAnonymousType() throws Exception { doTestNoFixWithWarnings(); } public void testExtendsSelf() throws Exception { doTestNoFixWithWarnings("test/Bar.hx", "test/IBar.hx", "test/TBar.hx"); } public void testFieldInitializerCheck() throws Exception { doTestNoFixWithWarnings(); } public void testVariableRedefinition() throws Exception { doTestNoFixWithWarnings(); } public void testStaticsInExtended() throws Exception { doTestNoFixWithoutWarnings(); } }