package com.ontology2.rdf;
import static org.junit.Assert.*;
import org.junit.Test;
import com.hp.hpl.jena.datatypes.xsd.XSDDatatype;
import com.hp.hpl.jena.graph.Node;
import com.hp.hpl.jena.graph.Triple;
import com.hp.hpl.jena.vocabulary.XSD;
import com.ontology2.rdf.Economizer;
import com.ontology2.rdf.CacheEconomizer;
import com.ontology2.rdf.TripleEconomizer;
public class UnderstandNodeMemoryBehavior {
@Test
public void identicallyNamedNodesAreNotSameObject() {
Node uriA=Node.createURI("http://slashdot.org/");
Node uriB=Node.createURI("http://slashdot.org/");
assertTrue(uriA.equals(uriB));
assertTrue(uriA!=uriB);
}
@Test
public void theEconomizerChangesThat() {
Economizer<Node> e=new CacheEconomizer<Node>();
Node uriA=e.economize(Node.createURI("http://slashdot.org/"));
Node uriB=e.economize(Node.createURI("http://slashdot.org/"));
assertTrue(uriA==uriB);
}
@Test
public void theEconomizerDoesntSquashOtherNodes() {
Economizer<Node> e=new CacheEconomizer<Node>();
Node uriA=e.economize(Node.createURI("http://slashdot.org/1"));
Node uriB=e.economize(Node.createURI("http://slashdot.org/2"));
assertTrue(uriA!=uriB);
}
@Test
public void economizingTriplesEconomizesTheNodes() {
Node s1a=Node.createURI("http://example.com/s1");
Node s1b=Node.createURI("http://example.com/s1");
Node p1a=Node.createURI("http://example.com/p1");
Node p1b=Node.createURI("http://example.com/p1");
Node o1a=Node.createLiteral("55",XSDDatatype.XSDint);
Node o1b=Node.createLiteral("55",XSDDatatype.XSDint);
assertTrue(o1a!=o1b);
Triple t1=new Triple(s1a,p1a,o1a);
Triple t2=new Triple(s1b,p1b,o1b);
assertTrue(t1!=t2);
assertEquals(t1,t2);
Economizer<Triple> e=new TripleEconomizer();
Triple t3=e.economize(t1);
Triple t4=e.economize(t2);
assertTrue(t3.getSubject()==t4.getSubject());
assertTrue(t3.getObject()==t4.getObject());
assertTrue(t3.getPredicate()==t4.getPredicate());
assertTrue(s1a.equals(t3.getSubject()));
assertTrue(p1a.equals(t3.getPredicate()));
assertTrue(o1a.equals(t3.getObject()));
}
}