package com.mysema.rdfbean.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import java.util.Iterator; import java.util.List; import java.util.Map; import org.junit.Before; import org.junit.Test; import com.mysema.commons.lang.IteratorAdapter; public class QueryRDFVisitorTest { private final MiniConnection connection = new MiniConnection(new MiniRepository()); private ID id = new BID(); private QueryRDFVisitor visitor = new QueryRDFVisitor(connection); private Bindings context = new Bindings(new Bindings()); @Before public void setUp() { connection.addStatements( new STMT(id, RDF.type, RDFS.Resource), new STMT(id, RDFS.label, new LIT("id"))); } @Test public void PatternBlock() { Iterable<Bindings> iterable = visitor.visit((PatternBlock) Blocks.SPO, context).getFirst(); List<Bindings> rows = IteratorAdapter.asList(iterable.iterator()); assertEquals(2, rows.size()); assertEquals(3, rows.get(0).toMap().size()); assertEquals(3, rows.get(1).toMap().size()); assertEquals(id, rows.get(0).get("s")); assertEquals(id, rows.get(1).get("s")); } @Test public void PatternBlock_with_unmatching_Filter() { GroupBlock block = (GroupBlock) Blocks.filter(Blocks.SPO, QNODE.p.eq(RDF.predicate)); Iterable<Bindings> iterable = visitor.visit(block, context).getFirst(); List<Bindings> rows = IteratorAdapter.asList(iterable.iterator()); assertEquals(0, rows.size()); } @Test public void PatternBlock_with_Filter() { GroupBlock block = (GroupBlock) Blocks.filter(Blocks.SPO, QNODE.p.eq(RDF.type)); Iterator<Bindings> iterator = visitor.visit(block, context).getFirst().iterator(); Map<String, NODE> row = iterator.next().toMap(); assertFalse(iterator.hasNext()); assertEquals(3, row.size()); assertEquals(id, row.get("s")); assertEquals(RDF.type, row.get("p")); } }