package org.jbehave.eclipse.editor.step;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jbehave.eclipse.Keyword;
import org.junit.Test;
public class RegexTest {
private static Pattern parameterPattern = Pattern.compile("\\$[a-zA-Z0-9\\-_]+");
@Test
public void usecaseEx1() {
String text = "When a user clicks on $buttonId button";
Matcher matcher = parameterPattern.matcher(text);
int prev = 0;
assertThat(matcher.find(), is(true));
int start = matcher.start();
int end = matcher.end();
assertThat(text.substring(prev, start), equalTo("When a user clicks on "));
assertThat(text.substring(start, end), equalTo("$buttonId"));
prev = end;
assertThat(matcher.find(), is(false));
assertThat(text.substring(prev), equalTo(" button"));
}
@Test
public void usecaseEx2 () {
String content = "As a developer\nI want to develop efficiently";
for(Keyword keyword : Keyword.values()) {
String asString = keyword.asString();
if(asString.endsWith(":"))
asString = asString.substring(0,asString.length()-1);
String regex = "^("+Pattern.quote(asString)+")";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE|Pattern.CASE_INSENSITIVE);
content = pattern.matcher(content).replaceAll("<b>$1</b>");
}
assertThat(content, equalTo("<b>As a</b> developer\n<b>I want to</b> develop efficiently"));
}
}