001: /*
002: (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
003: [See end of file]
004: $Id: TestRDFNodes.java,v 1.13 2008/01/02 12:04:41 andy_seaborne Exp $
005: */
006:
007: package com.hp.hpl.jena.rdf.model.test;
008:
009: import com.hp.hpl.jena.rdf.model.*;
010:
011: import java.util.*;
012:
013: import junit.framework.*;
014:
015: /**
016: @author kers
017: This class tests various properties of RDFNodes, to start with the
018: new Visitor stuff.
019: */
020: public class TestRDFNodes extends ModelTestBase {
021: public TestRDFNodes(String name) {
022: super (name);
023: }
024:
025: public static TestSuite suite() {
026: return new TestSuite(TestRDFNodes.class);
027: }
028:
029: public void testRDFVisitor() {
030: final List history = new ArrayList();
031: Model m = ModelFactory.createDefaultModel();
032: final RDFNode S = m.createResource();
033: final RDFNode P = m.createProperty("eh:PP");
034: final RDFNode O = m.createLiteral("LL");
035: /* */
036: RDFVisitor rv = new RDFVisitor() {
037: public Object visitBlank(Resource R, AnonId id) {
038: history.add("blank");
039: assertTrue("must visit correct node", R == S);
040: assertEquals("must have correct field", R.getId(), id);
041: return "blank result";
042: }
043:
044: public Object visitURI(Resource R, String uri) {
045: history.add("uri");
046: assertTrue("must visit correct node", R == P);
047: assertEquals("must have correct field", R.getURI(), uri);
048: return "uri result";
049: }
050:
051: public Object visitLiteral(Literal L) {
052: history.add("literal");
053: assertTrue("must visit correct node", L == O);
054: return "literal result";
055: }
056: };
057: /* */
058: assertEquals("blank result", S.visitWith(rv));
059: assertEquals("uri result", P.visitWith(rv));
060: assertEquals("literal result", O.visitWith(rv));
061: assertEquals(listOfStrings("blank uri literal"), history);
062: }
063:
064: public void testRemoveAllRemoves() {
065: String ps = "x P a; x P b", rest = "x Q c; y P a; y Q b";
066: Model m = modelWithStatements(ps + "; " + rest);
067: Resource r = resource(m, "x");
068: Resource r2 = r.removeAll(property(m, "P"));
069: assertSame("removeAll should deliver its receiver", r, r2);
070: assertIsoModels("x's P-values should go",
071: modelWithStatements(rest), m);
072: }
073:
074: public void testRemoveAllBoring() {
075: Model m1 = modelWithStatements("x P a; y Q b");
076: Model m2 = modelWithStatements("x P a; y Q b");
077: resource(m2, "x").removeAll(property(m2, "Z"));
078: assertIsoModels("m2 should be unchanged", m1, m2);
079: }
080:
081: public void testInModel() {
082: Model m1 = modelWithStatements("");
083: Model m2 = modelWithStatements("");
084: Resource r1 = resource(m1, "r1");
085: Resource r2 = resource(m1, "_r2");
086: /* */
087: assertTrue(r1.getModel() == m1);
088: assertTrue(r2.getModel() == m1);
089: assertFalse(r1.isAnon());
090: assertTrue(r2.isAnon());
091: /* */
092: assertTrue(((Resource) r1.inModel(m2)).getModel() == m2);
093: assertTrue(((Resource) r2.inModel(m2)).getModel() == m2);
094: /* */
095: assertEquals(r1, r1.inModel(m2));
096: assertEquals(r2, r2.inModel(m2));
097: }
098:
099: public void testIsAnon() {
100: Model m = modelWithStatements("");
101: assertEquals(false, m.createResource("eh:/foo").isAnon());
102: assertEquals(true, m.createResource().isAnon());
103: assertEquals(false, m.createTypedLiteral(17).isAnon());
104: assertEquals(false, m.createTypedLiteral("hello").isAnon());
105: }
106:
107: public void testIsLiteral() {
108: Model m = modelWithStatements("");
109: assertEquals(false, m.createResource("eh:/foo").isLiteral());
110: assertEquals(false, m.createResource().isLiteral());
111: assertEquals(true, m.createTypedLiteral(17).isLiteral());
112: assertEquals(true, m.createTypedLiteral("hello").isLiteral());
113: }
114:
115: public void testIsURIResource() {
116: Model m = modelWithStatements("");
117: assertEquals(true, m.createResource("eh:/foo").isURIResource());
118: assertEquals(false, m.createResource().isURIResource());
119: assertEquals(false, m.createTypedLiteral(17).isURIResource());
120: assertEquals(false, m.createTypedLiteral("hello")
121: .isURIResource());
122: }
123:
124: public void testIsResource() {
125: Model m = modelWithStatements("");
126: assertEquals(true, m.createResource("eh:/foo").isResource());
127: assertEquals(true, m.createResource().isResource());
128: assertEquals(false, m.createTypedLiteral(17).isResource());
129: assertEquals(false, m.createTypedLiteral("hello").isResource());
130: }
131: }
132:
133: /*
134: (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
135: All rights reserved.
136:
137: Redistribution and use in source and binary forms, with or without
138: modification, are permitted provided that the following conditions
139: are met:
140:
141: 1. Redistributions of source code must retain the above copyright
142: notice, this list of conditions and the following disclaimer.
143:
144: 2. Redistributions in binary form must reproduce the above copyright
145: notice, this list of conditions and the following disclaimer in the
146: documentation and/or other materials provided with the distribution.
147:
148: 3. The name of the author may not be used to endorse or promote products
149: derived from this software without specific prior written permission.
150:
151: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
152: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
153: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
154: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
155: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
156: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
157: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
158: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
159: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
160: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
161: */
|