package org.jetbrains.plugins.cucumber.i18n;
import junit.framework.TestCase;
import org.jetbrains.plugins.cucumber.psi.GherkinKeywordProvider;
import org.jetbrains.plugins.cucumber.psi.GherkinKeywordTable;
import org.jetbrains.plugins.cucumber.psi.GherkinTokenTypes;
import java.io.IOException;
import java.util.Collection;
public abstract class AbstractGherkinKeywordProviderTest extends TestCase {
private GherkinKeywordProvider myKeywordProvider;
protected abstract GherkinKeywordProvider buildKeywordProvider() throws IOException;
@Override
protected void setUp() throws Exception {
super.setUp();
myKeywordProvider = buildKeywordProvider();
}
public void testKeywords() {
final Collection<String> keywords = myKeywordProvider.getAllKeywords("en");
assertTrue(keywords.contains("Feature"));
}
public void testKeywordsTable_Feature() {
assertTrue(getKeywordsTableEn().getFeaturesSectionKeywords().contains("Feature"));
}
public void testKeywordsTable_ScenarioLike() {
final Collection<String> keywords = getKeywordsTableEn().getScenarioLikeKeywords();
assertTrue(keywords.contains("Scenario"));
assertTrue(keywords.contains("Scenario Outline"));
}
public void testKeywordsTable_Examples() {
assertTrue(getKeywordsTableEn().getExampleSectionKeywords().contains("Examples"));
}
public void testKeywordsTable_BackGround() {
assertTrue(getKeywordsTableEn().getBackgroundKeywords().contains("Background"));
}
public void testKeywordsTable_Feature_Fi() {
assertTrue(getKeywordsTableFi().getFeaturesSectionKeywords().contains("Ominaisuus"));
}
public void testKeywordsTable_ScenarioLike_Fi() {
final Collection<String> keywords = getKeywordsTableFi().getScenarioLikeKeywords();
assertTrue(keywords.contains("Tapaus"));
assertTrue(keywords.contains("Tapausaihio"));
}
public void testKeywordsTable_Examples_Fi() {
assertTrue(getKeywordsTableFi().getExampleSectionKeywords().contains("Tapaukset"));
}
public void testKeywordsTable_BackGround_Fi() {
assertTrue(getKeywordsTableFi().getBackgroundKeywords().contains("Tausta"));
}
public void testCompositeKeywords() {
final Collection<String> keywords = myKeywordProvider.getAllKeywords("en");
assertTrue(keywords.contains("Scenarios"));
}
public void testLanguage() {
assertTrue(myKeywordProvider.getAllKeywords("fi").contains("Tapausaihio"));
assertEquals(GherkinTokenTypes.FEATURE_KEYWORD, myKeywordProvider.getTokenType("fi", "Ominaisuus"));
}
public void testSpaceAfterKeyword() {
assertTrue(myKeywordProvider.isSpaceAfterKeyword("en", "Given"));
assertFalse(myKeywordProvider.isSpaceAfterKeyword("fr", "Lorsqu'"));
}
public void testNonKeywords() {
final Collection<String> keywords = myKeywordProvider.getAllKeywords("en");
assertFalse(keywords.contains("English"));
assertFalse(keywords.contains("UTF-8"));
}
public void testTokenType() {
assertEquals(GherkinTokenTypes.STEP_KEYWORD, myKeywordProvider.getTokenType("en", "And"));
assertEquals(GherkinTokenTypes.STEP_KEYWORD, myKeywordProvider.getTokenType("en", "*"));
}
public void testStepKeyword() {
assertTrue(myKeywordProvider.isStepKeyword("Given"));
assertTrue(myKeywordProvider.isStepKeyword("Oletetaan"));
assertFalse(myKeywordProvider.isStepKeyword("Feature"));
}
private GherkinKeywordTable getKeywordsTableEn() {
return myKeywordProvider.getKeywordsTable("en");
}
private GherkinKeywordTable getKeywordsTableFi() {
return myKeywordProvider.getKeywordsTable("fi");
}
}