package querqy.antlr.parser;
import static org.hamcrest.MatcherAssert.assertThat;
import static querqy.QuerqyMatchers.*;
import org.junit.Before;
import org.junit.Test;
import querqy.antlr.ANTLRQueryParser;
import querqy.model.Query;
public class QueryTransformerVisitorTest {
protected Query makeQuery(String input) {
return new ANTLRQueryParser().parse(input);
}
@Before
public void setUp() throws Exception {
}
@Test
public void testSingleToken() {
Query q = makeQuery("a");
assertThat(q,
bq(
dmq(
term("a")
)
));
}
@Test
public void testTwoTokens() {
Query q = makeQuery("a b");
assertThat(q,
bq(
dmq(term("a")),
dmq(term("b"))
));
}
@Test
public void testTwoTokensSecondMandatory() {
Query q = makeQuery("a +b");
assertThat(q,
bq(
dmq(term("a")),
dmq(must(), term("b"))
));
}
@Test
public void testTwoTokensFirstMandatory() {
Query q = makeQuery("+a b");
assertThat(q,
bq(
dmq(must(), term("a")),
dmq(term("b"))
));
}
@Test
public void testTwoTokensAllMandatory() {
Query q = makeQuery("+a +b");
assertThat(q,
bq(
dmq(must(), term("a")),
dmq(must(), term("b"))
));
}
@Test
public void testTwoTokensByAndMandatory() {
Query q = makeQuery("a AND b");
assertThat(q,
bq(
bq(
dmq(must(), term("a")),
dmq(must(), term("b"))
)));
}
}