package org.jetbrains.plugins.cucumber.refactoring.rename;
import org.jetbrains.plugins.cucumber.psi.refactoring.rename.CucumberStepRenameProcessor;
import org.junit.Assert;
import org.junit.Test;
import java.util.List;
public class CucumberRenameRegexpPreparationTest {
@Test
public void testClass() {
doTest("test[abc]test", "test([abc])test", "test", "test");
doTest("[abc]test", "([abc])test", "", "test");
doTest("test[abc]", "test([abc])", "test", "");
doTest("test([abc])test", "test((?:[abc]))test", "test", "test");
}
@Test
public void testGroup() {
doTest("test(abcd|efgh)test", "test((?:abcd|efgh))test", "test", "test");
}
@Test
public void testNonCapturingGroup() {
doTest("test(?:abcd)test", "test((?:abcd))test", "test", "test");
}
@Test
public void testNestedParenthesis() {
doTest("c(a(.*)and(?:a))b", "c((?:a(?:.*)and(?:a)))b", "c", "b");
}
@Test
public void testClassInsideGroup() {
doTest("a([bcd]*)", "a((?:[bcd]*))", "a", "");
}
@Test
public void testNeighbourGroups() {
doTest("a(.*)(.*)", "a((?:.*)(?:.*))", "a", "");
}
private static void doTest(String source, String expected, String... sentences) {
List<String> result = CucumberStepRenameProcessor.prepareRegexAndGetStaticTexts(source);
Assert.assertEquals(expected, result.get(0));
if (sentences.length > result.size() - 1) {
Assert.fail();
}
for (int i = 0; i < sentences.length; i++) {
String expectedSentence = sentences[i];
String actualSentence = result.get(i + 1);
Assert.assertEquals(expectedSentence, actualSentence);
}
}
}