package cuke4duke.internal.language;
import org.junit.Test;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.regex.Pattern;
import static org.junit.Assert.assertEquals;
public class JdkPatternArgumentMatcherTest {
@Test
public void shouldDealWithOnlyAscii() throws UnsupportedEncodingException {
assertVariables("Ja (.+) elsker (.+) landet", "Ja vi elsker dette landet", "vi", 3, "dette", 13);
}
@Test
public void shouldDealWithUnicodeInsideCaptures() throws UnsupportedEncodingException {
assertVariables("Ja (.+) elsker (.+) landet", "Ja vø elsker døtte landet", "vø", 3, "døtte", 14);
}
@Test
public void shouldDealWithUnicodeOutsideCaptures() throws UnsupportedEncodingException {
assertVariables("Jæ (.+) ålsker (.+) lændet", "Jæ vi ålsker dette lændet", "vi", 4, "dette", 15);
}
@Test
public void shouldDealWithUnicodeEverywhere() throws UnsupportedEncodingException {
assertVariables("Jæ (.+) ålsker (.+) lændet", "Jæ vø ålsker døtte lændet", "vø", 4, "døtte", 16);
}
private void assertVariables(String regex, String string, String v1, int pos1, String v2, int pos2) throws UnsupportedEncodingException {
List<StepArgument> args = JdkPatternArgumentMatcher.argumentsFrom(Pattern.compile(regex), string);
assertEquals(2, args.size());
assertEquals(v1, args.get(0).getVal());
assertEquals(pos1, args.get(0).getByteOffset());
assertEquals(v2, args.get(1).getVal());
assertEquals(pos2, args.get(1).getByteOffset());
}
}