package gherkin;
import gherkin.lexer.I18nLexer;
import gherkin.lexer.Lexer;
import gherkin.lexer.Listener;
import gherkin.util.FixJava;
import org.junit.Test;
import java.io.UnsupportedEncodingException;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
public class I18nLexerTest {
@Test
public void shouldScanMultiLineFeature() {
Listener listener = mock(Listener.class);
Lexer lexer = new I18nLexer(listener);
String feature = "" +
" Feature: Hello\n" +
" Big \n" +
" World \n" +
" Scenario Outline:\n" +
" Given I have an empty stack\n" +
" When I pøsh <x> onto the stack";
lexer.scan(feature);
verify(listener).feature("Feature", "Hello", " Big \n World", 1);
verify(listener).step("Given ", "I have an empty stack", 5);
verify(listener).step("When ", "I pøsh <x> onto the stack", 6);
}
@Test
public void shouldScanUtf8FeatureInSourceProperly() {
Listener listener = mock(Listener.class);
Lexer lexer = new I18nLexer(listener);
String feature = "Feature: ÆØÅ\n" +
"\n" +
" Scenario Outline:\n" +
" Given I have an empty stack\n" +
" When I pøsh <x> onto the stack";
lexer.scan(feature);
verify(listener).feature("Feature", "ÆØÅ", "", 1);
verify(listener).step("When ", "I pøsh <x> onto the stack", 5);
}
@Test
public void shouldScanUtf8FeatureInFileProperly() throws UnsupportedEncodingException {
Listener listener = mock(Listener.class);
Lexer lexer = new I18nLexer(listener);
String feature = FixJava.readResource("/gherkin/utf8.feature");
lexer.scan(feature);
verify(listener).feature("Feature", "ÆØÅ", "", 1);
verify(listener).step("When ", "I pøsh <x> onto the stack", 5);
}
@Test
public void shouldScanStepWithEmptyName() {
Listener listener = mock(Listener.class);
Lexer lexer = new I18nLexer(listener);
String feature = "" +
"Feature: F\n" +
" Scenario: S\n" +
" Given ";
lexer.scan(feature);
verify(listener).feature("Feature", "F", "", 1);
verify(listener).scenario("Scenario", "S", "", 2);
verify(listener).step("Given ", "", 3);
}
}