package org.eclipse.recommenders.internal.snipmatch.rcp.editors;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import java.util.LinkedList;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Lists;
@RunWith(Parameterized.class)
public class SnippetSourceValidatorTest {
private static final boolean VALID = true;
private static final boolean INVALID = false;
private final String templateText;
private final boolean isSourceValidAsJavaSnippet;
private final boolean isSourceValidAsTestSnippet;
public SnippetSourceValidatorTest(String description, String templateText, boolean isSourceValidAsJavaSnippet,
boolean isSourceValidAsTestSnippet) {
this.templateText = templateText;
this.isSourceValidAsJavaSnippet = isSourceValidAsJavaSnippet;
this.isSourceValidAsTestSnippet = isSourceValidAsTestSnippet;
}
@Parameters(name = "{index}: {0}")
public static Iterable<Object[]> scenarios() {
LinkedList<Object[]> scenarios = Lists.newLinkedList();
scenarios.add(scenario("Empty snippet", "", VALID, VALID));
scenarios.add(scenario("Simple snippet", "Lorem ipsum dolor", VALID, VALID));
scenarios.add(scenario("Snippet with id", "${id}", VALID, VALID));
scenarios.add(scenario("Snippet with var reference", "${id:var(java.lang.String)}", VALID, VALID));
scenarios.add(scenario("Snippet with escaped dollar sign", "$$", VALID, VALID));
scenarios.add(scenario("Snippet with single dollar sign", "$", INVALID, INVALID));
scenarios.add(scenario("Unclosed var reference", "${id:var(java.lang.String)", INVALID, INVALID));
return scenarios;
}
private static Object[] scenario(String description, String templateText, boolean isSourceValidAsJavaSnippet,
boolean isSourceValidAsTestSnippet) {
return new Object[] { description, templateText, isSourceValidAsJavaSnippet, isSourceValidAsTestSnippet };
}
@Test
public void testIsSourceValidAsJavaSnippet() {
assertThat(JavaSnippetSourceValidator.isSourceValid(templateText).isEmpty(), is(isSourceValidAsJavaSnippet));
}
@Test
public void testIsSourceValidAsTextSnippet() {
assertThat(TextSnippetSourceValidator.isSourceValid(templateText).isEmpty(), is(isSourceValidAsTestSnippet));
}
}