package com.thoughtworks.gauge.autocomplete;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class GaugePrefixMatcherTest {
@Test
public void shouldMatchSimpleCompleteStep() {
String prefix = "This is a step";
GaugePrefixMatcher gaugePrefixMatcher = new GaugePrefixMatcher(prefix);
String name = "This is a step";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
}
@Test
public void shouldMatchCaseInsensitiveSimpleCompleteStep() {
String prefix = "this is a Step";
GaugePrefixMatcher gaugePrefixMatcher = new GaugePrefixMatcher(prefix);
String name = "This is a step";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
}
@Test
public void shouldMatchSimpleIncompleteStep() {
String prefix = "This is";
GaugePrefixMatcher gaugePrefixMatcher = new GaugePrefixMatcher(prefix);
String name = "This is a step";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
}
@Test
public void shouldMatchStepWithSpecialChars() {
GaugePrefixMatcher gaugePrefixMatcher;
gaugePrefixMatcher = new GaugePrefixMatcher("+This is");
String name = "+This is a step";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
gaugePrefixMatcher = new GaugePrefixMatcher("*This is");
name = "*This is a step";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
gaugePrefixMatcher = new GaugePrefixMatcher("?This is");
name = "?This is a step";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
gaugePrefixMatcher = new GaugePrefixMatcher("^This is");
name = "^This is a step";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
gaugePrefixMatcher = new GaugePrefixMatcher("(This is");
name = "(This is a step";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
gaugePrefixMatcher = new GaugePrefixMatcher("{This is");
name = "{This is a step";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
gaugePrefixMatcher = new GaugePrefixMatcher("$This is");
name = "$This is a step";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
gaugePrefixMatcher = new GaugePrefixMatcher("[This is");
name = "[This is a step";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
}
@Test
public void shouldNotMatchStepWithDifferentStepWithSpecialChars() {
GaugePrefixMatcher gaugePrefixMatcher = new GaugePrefixMatcher("+The fd");
String name = "+This is a step";
assertFalse(gaugePrefixMatcher.prefixMatches(name));
gaugePrefixMatcher = new GaugePrefixMatcher("*The fd");
name = "*This is a step";
assertFalse(gaugePrefixMatcher.prefixMatches(name));
gaugePrefixMatcher = new GaugePrefixMatcher("?The fd");
name = "?This is a step";
assertFalse(gaugePrefixMatcher.prefixMatches(name));
}
@Test
public void shouldMatchParameterizedCompleteStep() {
String prefix = "Say \"hello\" to \"world\"";
GaugePrefixMatcher gaugePrefixMatcher = new GaugePrefixMatcher(prefix);
String name = "Say <hello again> to <someone>";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
}
@Test
public void shouldMatchParameterizedIncompleteStep() {
String prefix = "Say \"hello\" to ";
GaugePrefixMatcher gaugePrefixMatcher = new GaugePrefixMatcher(prefix);
String name = "Say <greetings> to <someone>";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
}
@Test
public void shouldMatchEmptyString() {
String prefix = "";
GaugePrefixMatcher gaugePrefixMatcher = new GaugePrefixMatcher(prefix);
String name = "Say <greetings> to <someone>";
assertTrue(gaugePrefixMatcher.prefixMatches(name));
}
}