/*
* Copyright 2013-2016 Sergey Ignatov, Alexander Zolotov, Florin Patan
*
* 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.goide.codeInsight.unwrap;
import com.goide.GoCodeInsightFixtureTestCase;
import com.intellij.codeInsight.unwrap.UnwrapHandler;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiFile;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.stream.Collectors;
public abstract class GoUnwrapTestCase extends GoCodeInsightFixtureTestCase {
protected void assertUnwrapped(@NotNull String codeBefore, @NotNull String codeAfter) {
assertUnwrapped(codeBefore, codeAfter, 0);
}
protected void assertUnwrapped(@NotNull String codeBefore, @NotNull String codeAfter, int option) {
myFixture.configureByText("a.go", normalizeCode(codeBefore));
UnwrapHandler h = new UnwrapHandler() {
@Override
protected void selectOption(List<AnAction> options, Editor editor, PsiFile file) {
if (options.isEmpty()) return;
options.get(option).actionPerformed(null);
}
};
h.invoke(getProject(), myFixture.getEditor(), myFixture.getFile());
myFixture.checkResult(normalizeCode(codeAfter));
}
protected void assertOptions(@NotNull String code, String... expectedOptions) {
myFixture.configureByText("a.go", normalizeCode(code));
List<String> actualOptions = ContainerUtil.newArrayList();
UnwrapHandler h = new UnwrapHandler() {
@Override
protected void selectOption(List<AnAction> options, Editor editor, PsiFile file) {
actualOptions.addAll(options.stream().map(each -> each.getTemplatePresentation().getText()).collect(Collectors.toList()));
}
};
h.invoke(getProject(), myFixture.getEditor(), myFixture.getFile());
assertOrderedEquals(actualOptions, expectedOptions);
}
}