/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.rdf.model.test; import java.util.List; import org.apache.jena.rdf.model.* ; import org.apache.jena.rdf.model.test.helpers.ModelHelper ; import org.apache.jena.rdf.model.test.helpers.TestingModelFactory ; import org.apache.jena.vocabulary.RDF ; import org.junit.Assert; public class TestSimpleListStatements extends AbstractModelTestBase { static boolean booleanValue = true; static char charValue = 'c'; static long longValue = 456; static float floatValue = 5.67F; static double doubleValue = 6.78; static String stringValue = "stringValue"; static String langValue = "en"; public TestSimpleListStatements( final TestingModelFactory modelFactory, final String name ) { super(modelFactory, name); } public void checkReturns( final String things, final StmtIterator it ) { final Model wanted = ModelHelper.modelWithStatements(this, things); final Model got = modelWithStatements(it); if (wanted.isIsomorphicWith(got) == false) { Assert.fail("wanted " + wanted + " got " + got); } } public Model modelWithStatements( final StmtIterator it ) { final Model m = createModel(); while (it.hasNext()) { m.add(it.nextStatement()); } return m; } @Override public void setUp() { super.setUp(); model.createResource("http://example.org/boolean").addLiteral( RDF.value, TestSimpleListStatements.booleanValue); model.createResource("http://example.org/char").addLiteral(RDF.value, TestSimpleListStatements.charValue); model.createResource("http://example.org/long").addLiteral(RDF.value, TestSimpleListStatements.longValue); model.createResource("http://example.org/float").addLiteral(RDF.value, TestSimpleListStatements.floatValue); model.createResource("http://example.org/double").addLiteral(RDF.value, TestSimpleListStatements.doubleValue); model.createResource("http://example.org/string").addProperty( RDF.value, TestSimpleListStatements.stringValue); model.createResource("http://example.org/langString").addProperty( RDF.value, TestSimpleListStatements.stringValue, TestSimpleListStatements.langValue); } public void testAll() { final StmtIterator iter = model.listStatements(null, null, (RDFNode) null); int i = 0; while (iter.hasNext()) { i++; iter.next(); } Assert.assertEquals(7, i); } public void testAllString() { final StmtIterator iter = model.listStatements(null, null, (String) null); int i = 0; while (iter.hasNext()) { i++; iter.next(); } Assert.assertEquals(7, i); } public void testBoolean() { final List<Statement> got = model.listLiteralStatements(null, null, TestSimpleListStatements.booleanValue).toList(); Assert.assertEquals(1, got.size()); final Statement it = got.get(0); Assert.assertEquals(ModelHelper.resource("http://example.org/boolean"), it.getSubject()); Assert.assertEquals( model.createTypedLiteral(TestSimpleListStatements.booleanValue), it.getObject()); } public void testChar() { final List<Statement> got = model.listLiteralStatements(null, null, TestSimpleListStatements.charValue).toList(); Assert.assertEquals(1, got.size()); final Statement it = got.get(0); Assert.assertEquals(ModelHelper.resource("http://example.org/char"), it.getSubject()); Assert.assertEquals( model.createTypedLiteral(TestSimpleListStatements.charValue), it.getObject()); } public void testDouble() { final List<Statement> got = model.listLiteralStatements(null, null, TestSimpleListStatements.doubleValue).toList(); Assert.assertEquals(1, got.size()); final Statement it = got.get(0); Assert.assertEquals(ModelHelper.resource("http://example.org/double"), it.getSubject()); Assert.assertEquals( model.createTypedLiteral(TestSimpleListStatements.doubleValue), it.getObject()); } public void testFloat() { final List<Statement> got = model.listLiteralStatements(null, null, TestSimpleListStatements.floatValue).toList(); Assert.assertEquals(1, got.size()); final Statement it = got.get(0); Assert.assertEquals(ModelHelper.resource("http://example.org/float"), it.getSubject()); Assert.assertEquals( model.createTypedLiteral(TestSimpleListStatements.floatValue), it.getObject()); } public void testLangString() { final StmtIterator iter = model.listStatements(null, null, TestSimpleListStatements.stringValue, TestSimpleListStatements.langValue); int i = 0; while (iter.hasNext()) { i++; Assert.assertEquals(iter.nextStatement().getSubject().getURI(), "http://example.org/langString"); } Assert.assertEquals(1, i); } public void testListStatementsClever() { ModelHelper.modelAdd(model, "S P O; S P O2; S P2 O; S2 P O"); final Selector sel = new SimpleSelector(null, null, (RDFNode) null) { @Override public boolean isSimple() { return false; } @Override public boolean test( final Statement st ) { return (st.getSubject().toString().length() + st.getPredicate().toString().length() + st .getObject().toString().length()) == 15; /* * eh:/S + eh:/P * + eh:/O */ } }; checkReturns("S P O", model.listStatements(sel)); } public void testListStatementsSPO() { final Resource A = ModelHelper.resource(model, "A"), X = ModelHelper .resource(model, "X"); final Property P = ModelHelper.property(model, "P"), P1 = ModelHelper .property(model, "P1"); final RDFNode O = ModelHelper.resource(model, "O"), Y = ModelHelper .resource(model, "Y"); final String S1 = "S P O; S1 P O; S2 P O"; final String S2 = "A P1 B; A P1 B; A P1 C"; final String S3 = "X P1 Y; X P2 Y; X P3 Y"; ModelHelper.modelAdd(model, S1); ModelHelper.modelAdd(model, S2); ModelHelper.modelAdd(model, S3); checkReturns(S1, model.listStatements(null, P, O)); checkReturns(S2, model.listStatements(A, P1, (RDFNode) null)); checkReturns(S3, model.listStatements(X, null, Y)); } public void testLong() { final List<Statement> got = model.listLiteralStatements(null, null, TestSimpleListStatements.longValue).toList(); Assert.assertEquals(1, got.size()); final Statement it = got.get(0); Assert.assertEquals(ModelHelper.resource("http://example.org/long"), it.getSubject()); Assert.assertEquals( model.createTypedLiteral(TestSimpleListStatements.longValue), it.getObject()); } public void testString() { final StmtIterator iter = model.listStatements(null, null, TestSimpleListStatements.stringValue); int i = 0; while (iter.hasNext()) { i++; Assert.assertEquals(iter.nextStatement().getSubject().getURI(), "http://example.org/string"); } Assert.assertEquals(1, i); } }