/* * Copyright 2012-2014 Sergey Ignatov * * 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.haskforce.refactoring; import com.haskforce.HaskellLightPlatformCodeInsightFixtureTestCase; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiFile; /** * Rename refactoring test driver. Add new rename testcases here. */ public class HaskellRenameTest extends HaskellLightPlatformCodeInsightFixtureTestCase { public HaskellRenameTest() { super("refactoring", "refactoring"); } public void testFunction() { doTest("bar"); } public void testFunctionInstance() { doTest("bar"); } public void testLocalVariable() { doTest("bars"); } public void testRenameModule() { doTest("BarModule", true); } public void testRenameImport () { PsiFile[] psiFiles = myFixture.configureByFiles("ImportDeclaration/ImportDeclaration.hs", "ImportDeclaration/RenameImport.hs"); PsiFile importDeclaration = psiFiles[0]; String newName = "BarModule"; myFixture.renameElementAtCaret(newName); myFixture.checkResultByFile("ImportDeclaration/BarModule.hs","ImportDeclaration/ImportDeclaration-after.hs", false); myFixture.checkResultByFile("ImportDeclaration/RenameImport.hs","ImportDeclaration/RenameImport-after.hs", false); assertEquals(StringUtil.unquoteString(newName) + ".hs", importDeclaration.getName()); } public void testRenameImport_CaretOnModule () { PsiFile[] psiFiles = myFixture.configureByFiles("ImportDeclaration_CaretOnModule/ImportDeclaration.hs", "ImportDeclaration_CaretOnModule/RenameImport.hs"); PsiFile importDeclaration = psiFiles[0]; String newName = "BarModule"; myFixture.renameElementAtCaret(newName); myFixture.checkResultByFile("ImportDeclaration_CaretOnModule/BarModule.hs", "ImportDeclaration_CaretOnModule/ImportDeclaration-after.hs", false); myFixture.checkResultByFile("ImportDeclaration_CaretOnModule/RenameImport.hs","ImportDeclaration_CaretOnModule/RenameImport-after.hs", false); assertEquals(StringUtil.unquoteString(newName) + ".hs", importDeclaration.getName()); } public void testRenameFile() { PsiFile[] psiFiles = myFixture.configureByFiles("ImportDeclaration_CaretOnModule/ImportDeclaration.hs", "ImportDeclaration_CaretOnModule/RenameImport.hs"); PsiFile importDeclaration = psiFiles[0]; String newName = "BarModule"; myFixture.renameElement(importDeclaration,newName); myFixture.checkResultByFile("ImportDeclaration_CaretOnModule/BarModule.hs", "ImportDeclaration_CaretOnModule/ImportDeclaration-after.hs", false); myFixture.checkResultByFile("ImportDeclaration_CaretOnModule/RenameImport.hs","ImportDeclaration_CaretOnModule/RenameImport-after.hs", false); assertEquals(StringUtil.unquoteString(newName) + ".hs", importDeclaration.getName()); } private void doTest(String newName) { doTest(newName, false); } private void doTest(String newName, boolean isRenameModuleTest) { myFixture.testRename(getTestName(false) + ".hs", getTestName(false) + "-after.hs", newName); if (isRenameModuleTest) { assertEquals(StringUtil.unquoteString(newName) + ".hs", myFixture.getFile().getName()); } } }