/* * 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.HashSet; import java.util.Set; import org.apache.jena.graph.test.GraphTestBase ; import org.apache.jena.rdf.model.* ; import org.apache.jena.rdf.model.test.helpers.TestingModelFactory ; import org.apache.jena.shared.InvalidPropertyURIException ; import org.apache.jena.shared.PropertyNotFoundException ; import org.apache.jena.test.JenaTestBase ; import org.apache.jena.vocabulary.RDF ; import org.junit.Assert; public class TestResources extends AbstractModelTestBase { public TestResources( final TestingModelFactory modelFactory, final String name ) { super(modelFactory, name); } protected void checkNumericContent( final Container cont2, final int num ) { final NodeIterator nit = cont2.iterator(); for (int i = 0; i < num; i += 1) { Assert.assertEquals(i, ((Literal) nit.nextNode()).getInt()); } Assert.assertFalse(nit.hasNext()); } protected void retainOnlySpecified( final Container cont2, final int num, final boolean[] retain ) { final NodeIterator nit = cont2.iterator(); for (int i = 0; i < num; i++) { nit.nextNode(); if (retain[i] == false) { nit.remove(); } } Assert.assertFalse(nit.hasNext()); } protected void seeWhatsThere( final Container cont2, final boolean[] found ) { final NodeIterator nit = cont2.iterator(); while (nit.hasNext()) { final int v = ((Literal) nit.nextNode()).getInt(); Assert.assertFalse(found[v]); found[v] = true; } } protected Set<Object> setOf( final Object x ) { final Set<Object> result = new HashSet<>(); result.add(x); return result; } private void testContainer( final Model model, final Container cont1, final Container cont2 ) { final Literal tvLiteral = model.createLiteral("test 12 string 2"); // Resource tvResObj = model.createResource( new ResTestObjF() ); final Object tvLitObj = new LitTestObj(1234); model.createBag(); model.createAlt(); model.createSeq(); final String lang = "en"; // Assert.assertEquals(0, cont1.size()); Assert.assertEquals(0, cont2.size()); // Assert.assertTrue(cont1.add(AbstractModelTestBase.tvBoolean).contains( AbstractModelTestBase.tvBoolean)); Assert.assertTrue(cont1.add(AbstractModelTestBase.tvByte).contains( AbstractModelTestBase.tvByte)); Assert.assertTrue(cont1.add(AbstractModelTestBase.tvShort).contains( AbstractModelTestBase.tvShort)); Assert.assertTrue(cont1.add(AbstractModelTestBase.tvInt).contains( AbstractModelTestBase.tvInt)); Assert.assertTrue(cont1.add(AbstractModelTestBase.tvLong).contains( AbstractModelTestBase.tvLong)); Assert.assertTrue(cont1.add(AbstractModelTestBase.tvFloat).contains( AbstractModelTestBase.tvFloat)); Assert.assertTrue(cont1.add(AbstractModelTestBase.tvDouble).contains( AbstractModelTestBase.tvDouble)); Assert.assertTrue(cont1.add(AbstractModelTestBase.tvChar).contains( AbstractModelTestBase.tvChar)); Assert.assertTrue(cont1.add(AbstractModelTestBase.tvString).contains( AbstractModelTestBase.tvString)); Assert.assertFalse(cont1.contains(AbstractModelTestBase.tvString, lang)); Assert.assertTrue(cont1.add(AbstractModelTestBase.tvString, lang) .contains(AbstractModelTestBase.tvString, lang)); Assert.assertTrue(cont1.add(tvLiteral).contains(tvLiteral)); // assertTrue( cont1.add( tvResObj ).contains( tvResObj ) ); Assert.assertTrue(cont1.add(tvLitObj).contains(tvLitObj)); Assert.assertEquals(12, cont1.size()); // final int num = 10; for (int i = 0; i < num; i += 1) { cont2.add(i); } Assert.assertEquals(num, cont2.size()); checkNumericContent(cont2, num); // final boolean[] found = new boolean[num]; final boolean[] retain = { true, true, true, false, false, false, false, false, true, true }; retainOnlySpecified(cont2, num, retain); seeWhatsThere(cont2, found); for (int i = 0; i < num; i += 1) { Assert.assertEquals(i + "th element of array", retain[i], found[i]); } } // public void testCreateAnonByFactory() // { // assertTrue( model.createResource( new ResTestObjF() ).isAnon() ); // } // public void testCreateResourceByFactory() // { // String uri = "http://aldabaran.hpl.hp.com/foo"; // assertEquals( uri, model.createResource( uri, new ResTestObjF() // ).getURI() ); // } public void testCreateAnonResource() { final Resource r = model.createResource(); Assert.assertTrue(r.isAnon()); Assert.assertNull(r.getURI()); Assert.assertNull(r.getNameSpace()); Assert.assertNull(r.getLocalName()); } public void testCreateAnonResourceWithNull() { final Resource r = model.createResource((String) null); Assert.assertTrue(r.isAnon()); Assert.assertNull(r.getURI()); Assert.assertNull(r.getNameSpace()); Assert.assertNull(r.getLocalName()); } public void testCreateNamedResource() { final String uri = "http://aldabaran.hpl.hp.com/foo"; Assert.assertEquals(uri, model.createResource(uri).getURI()); } public void testCreateNullPropertyFails() { try { model.createProperty(null); Assert.fail("should not create null property"); } catch (final InvalidPropertyURIException e) { JenaTestBase.pass(); } } public void testCreatePropertyOneArg() { final Property p = model.createProperty("abc/def"); Assert.assertEquals("abc/", p.getNameSpace()); Assert.assertEquals("def", p.getLocalName()); Assert.assertEquals("abc/def", p.getURI()); } public void testCreatePropertyStrangeURI() { final String uri = RDF.getURI() + "_345"; final Property p = model.createProperty(uri); Assert.assertEquals(RDF.getURI(), p.getNameSpace()); Assert.assertEquals("_345", p.getLocalName()); Assert.assertEquals(uri, p.getURI()); } public void testCreatePropertyStrangeURITwoArgs() { final String local = "_345"; final Property p = model.createProperty(RDF.getURI(), local); Assert.assertEquals(RDF.getURI(), p.getNameSpace()); Assert.assertEquals(local, p.getLocalName()); Assert.assertEquals(RDF.getURI() + local, p.getURI()); } public void testCreatePropertyTwoArgs() { final Property p = model.createProperty("abc/", "def"); Assert.assertEquals("abc/", p.getNameSpace()); Assert.assertEquals("def", p.getLocalName()); Assert.assertEquals("abc/def", p.getURI()); } public void testCreateTypedAnonResource() { final Resource r = model.createResource(RDF.Property); Assert.assertTrue(r.isAnon()); Assert.assertTrue(model.contains(r, RDF.type, RDF.Property)); } public void testCreateTypedNamedresource() { final String uri = "http://aldabaran.hpl.hp.com/foo"; final Resource r = model.createResource(uri, RDF.Property); Assert.assertEquals(uri, r.getURI()); Assert.assertTrue(model.contains(r, RDF.type, RDF.Property)); } public void testEnhancedResources() { final Resource r = model.createResource(); testResource(model, r, 0); testResource(model, model.createBag(), 1); testContainer(model, model.createBag(), model.createBag()); testResource(model, model.createAlt(), 1); testContainer(model, model.createAlt(), model.createAlt()); testResource(model, model.createSeq(), 1); testContainer(model, model.createSeq(), model.createSeq()); // testSeq( model, model.createSeq(), model.createSeq(), // model.createSeq(), // model.createSeq(), model.createSeq(), model.createSeq(), // model.createSeq() ); } private void testResource( final Model model, final Resource r, final int numProps ) { final Literal tvLiteral = model.createLiteral("test 12 string 2"); final Resource tvResource = model.createResource(); final String lang = "fr"; // Assert.assertTrue(r.addLiteral(RDF.value, AbstractModelTestBase.tvBoolean).hasLiteral(RDF.value, AbstractModelTestBase.tvBoolean)); Assert.assertTrue(r.addLiteral(RDF.value, AbstractModelTestBase.tvByte) .hasLiteral(RDF.value, AbstractModelTestBase.tvByte)); Assert.assertTrue(r .addLiteral(RDF.value, AbstractModelTestBase.tvShort) .hasLiteral(RDF.value, AbstractModelTestBase.tvShort)); Assert.assertTrue(r.addLiteral(RDF.value, AbstractModelTestBase.tvInt) .hasLiteral(RDF.value, AbstractModelTestBase.tvInt)); Assert.assertTrue(r.addLiteral(RDF.value, AbstractModelTestBase.tvLong) .hasLiteral(RDF.value, AbstractModelTestBase.tvLong)); Assert.assertTrue(r.addLiteral(RDF.value, AbstractModelTestBase.tvChar) .hasLiteral(RDF.value, AbstractModelTestBase.tvChar)); Assert.assertTrue(r .addLiteral(RDF.value, AbstractModelTestBase.tvFloat) .hasLiteral(RDF.value, AbstractModelTestBase.tvFloat)); Assert.assertTrue(r.addLiteral(RDF.value, AbstractModelTestBase.tvDouble).hasLiteral(RDF.value, AbstractModelTestBase.tvDouble)); Assert.assertTrue(r.addProperty(RDF.value, AbstractModelTestBase.tvString).hasProperty(RDF.value, AbstractModelTestBase.tvString)); Assert.assertTrue(r.addProperty(RDF.value, AbstractModelTestBase.tvString, lang).hasProperty(RDF.value, AbstractModelTestBase.tvString, lang)); Assert.assertTrue(r.addLiteral(RDF.value, AbstractModelTestBase.tvObject).hasLiteral(RDF.value, AbstractModelTestBase.tvObject)); Assert.assertTrue(r.addProperty(RDF.value, tvLiteral).hasProperty( RDF.value, tvLiteral)); Assert.assertTrue(r.addProperty(RDF.value, tvResource).hasProperty( RDF.value, tvResource)); Assert.assertTrue(r.getRequiredProperty(RDF.value).getSubject() .equals(r)); // final Property p = model.createProperty("foo/", "bar"); try { r.getRequiredProperty(p); Assert.fail("should detect missing property"); } catch (final PropertyNotFoundException e) { JenaTestBase.pass(); } // Assert.assertEquals(13, GraphTestBase.iteratorToSet(r.listProperties(RDF.value)).size()); Assert.assertEquals(setOf(r), GraphTestBase.iteratorToSet(r .listProperties(RDF.value).mapWith(Statement::getSubject))); // Assert.assertEquals(0, GraphTestBase.iteratorToSet(r.listProperties(p)) .size()); Assert.assertEquals( new HashSet<Resource>(), GraphTestBase.iteratorToSet(r.listProperties(p).mapWith( Statement::getSubject))); // Assert.assertEquals(13 + numProps, GraphTestBase.iteratorToSet(r.listProperties()).size()); Assert.assertEquals( setOf(r), GraphTestBase.iteratorToSet(r.listProperties().mapWith( Statement::getSubject))); // r.removeProperties(); Assert.assertEquals(0, model.query(new SimpleSelector(r, null, (RDFNode) null)).size()); } }