package com.mysema.rdfbean.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Test; import com.mysema.query.QueryFlag.Position; import com.mysema.query.QueryMetadata; import com.mysema.query.types.ConstantImpl; import com.mysema.query.types.Ops; import com.mysema.query.types.PredicateOperation; @SuppressWarnings("unchecked") public class SPARQLVisitorTest { private final SPARQLVisitor visitor = new SPARQLVisitor(); @Test public void Like_as_Matches() { visitor.setLikeAsMatches(true); visitor.handle(PredicateOperation.create(Ops.LIKE, QNODE.o, new ConstantImpl(LIT.class, new LIT("x%")))); assertEquals("regex(?o, ?_c2)", visitor.toString()); assertTrue(visitor.getConstantToLabel().containsKey(new LIT("x.*"))); } @Test public void Like_as_Matches_2() { visitor.setLikeAsMatches(true); visitor.handle(PredicateOperation.create(Ops.LIKE, QNODE.o, new ConstantImpl(LIT.class, new LIT("x_")))); assertEquals("regex(?o, ?_c2)", visitor.toString()); assertTrue(visitor.getConstantToLabel().containsKey(new LIT("x."))); } @Test public void Start_Flag() { final String PREFIX = "DEFINE input:inference \"ruleset\" "; RDFQueryImpl query = new RDFQueryImpl(null); query.addFlag(Position.START, PREFIX); query.where(Blocks.SPO); query.aggregateFilters(); QueryMetadata metadata = query.getMetadata(); metadata.addProjection(QNODE.s); visitor.visit(metadata, QueryLanguage.TUPLE); assertEquals(PREFIX + "SELECT ?s WHERE { ?s ?p ?o } ", stripWS(visitor.toString())); } @Test public void StringValue_StartsWith() { visitor.handle(QNODE.o.stringValue().startsWith("B")); assertEquals("regex(str(?o), '^B')", visitor.toString()); } public static String stripWS(String str) { return str.replaceAll("\\s+", " "); } }