package org.mulgara.protocol.http;
import java.net.URI;
import org.jrdf.graph.BlankNode;
import org.jrdf.graph.Literal;
import org.jrdf.graph.URIReference;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Unit test for LocalTriple and the inner class Literal.
*
* @created Feb 15, 2009
* @author Paula Gearon
* @copyright © 2008 <a href="http://www.topazproject.org/">The Topaz Project</a>
* @licence <a href="{@docRoot}/../../LICENCE.txt">Open Software License v3.0</a>
*/
public class LocalTripleUnitTest extends TestCase {
public LocalTripleUnitTest(String name) {
super(name);
}
/**
* Default text runner.
* @param args The command line arguments
*/
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
/**
* Hook for test runner to obtain a test suite from.
* @return The test suite
*/
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(new LocalTripleUnitTest("testUriConstructor"));
suite.addTest(new LocalTripleUnitTest("testBlanks"));
suite.addTest(new LocalTripleUnitTest("testLiterals"));
suite.addTest(new LocalTripleUnitTest("testLiteralTypes"));
suite.addTest(new LocalTripleUnitTest("testLiteralLang"));
suite.addTest(new LocalTripleUnitTest("testLiteralQuote"));
return suite;
}
public void testUriConstructor() throws Exception {
LocalTriple t = new LocalTriple("foo:sub", "foo:pred", "foo:obj");
assertTrue(t.getSubject() instanceof URIReference);
assertTrue(t.getPredicate() instanceof URIReference);
assertTrue(t.getObject() instanceof URIReference);
assertEquals("foo:sub", ((URIReference)t.getSubject()).toString());
assertEquals("foo:pred", ((URIReference)t.getPredicate()).toString());
assertEquals("foo:obj", ((URIReference)t.getObject()).toString());
}
public void testBlanks() throws Exception {
LocalTriple t = new LocalTriple(null, "foo:pred", "foo:obj");
assertTrue(t.getSubject() instanceof BlankNode);
assertTrue(t.getPredicate() instanceof URIReference);
assertTrue(t.getObject() instanceof URIReference);
assertEquals("foo:pred", ((URIReference)t.getPredicate()).toString());
assertEquals("foo:obj", ((URIReference)t.getObject()).toString());
t = new LocalTriple("foo:sub", "foo:pred", null);
assertTrue(t.getSubject() instanceof URIReference);
assertTrue(t.getPredicate() instanceof URIReference);
assertTrue(t.getObject() instanceof BlankNode);
assertEquals("foo:sub", ((URIReference)t.getSubject()).toString());
assertEquals("foo:pred", ((URIReference)t.getPredicate()).toString());
try {
t = new LocalTriple("foo:sub", null, "foo:obj");
fail("Illegal blank node in predicate");
} catch (BadRequestException e) { }
}
public void testLiterals() throws Exception {
LocalTriple t = new LocalTriple("foo:bar", "foo:pred", "foo bar");
assertTrue(t.getSubject() instanceof URIReference);
assertTrue(t.getPredicate() instanceof URIReference);
assertTrue(t.getObject() instanceof Literal);
assertEquals("foo:bar", ((URIReference)t.getSubject()).toString());
assertEquals("foo:pred", ((URIReference)t.getPredicate()).toString());
assertEquals("foo bar", ((Literal)t.getObject()).getLexicalForm());
try {
t = new LocalTriple("foo:sub", "foo pred", "foo:bar");
fail("Illegal literal in predicate: " + t.getPredicate());
} catch (BadRequestException e) { }
try {
t = new LocalTriple("foo sub", "foo:pred", "foo:obj");
fail("Illegal literal in subject: " + t.getSubject());
} catch (BadRequestException e) { }
}
public void testLiteralTypes() throws Exception {
LocalTriple t = new LocalTriple("foo:bar", "foo:pred", "foo bar");
assertTrue(t.getObject() instanceof Literal);
Literal l = (Literal)t.getObject();
assertEquals("foo bar", l.getLexicalForm());
assertNull(l.getLanguage());
assertNull(l.getDatatype());
t = new LocalTriple("foo:bar", "foo:pred", "'foo bar'^^foo:bar");
assertTrue(t.getObject() instanceof Literal);
l = (Literal)t.getObject();
assertEquals("foo bar", l.getLexicalForm());
assertNull(l.getLanguage());
assertEquals(URI.create("foo:bar").toString(), l.getDatatype().toString());
t = new LocalTriple("foo:bar", "foo:pred", "'foo bar'^^foo bar");
assertTrue(t.getObject() instanceof Literal);
l = (Literal)t.getObject();
assertEquals("'foo bar'^^foo bar", l.getLexicalForm());
assertNull(l.getLanguage());
assertNull(l.getDatatype());
t = new LocalTriple("foo:bar", "foo:pred", "foobar'^^foo:bar");
assertTrue(t.getObject() instanceof Literal);
l = (Literal)t.getObject();
assertEquals("foobar'^^foo:bar", l.getLexicalForm());
assertNull(l.getLanguage());
assertNull(l.getDatatype());
t = new LocalTriple("foo:bar", "foo:pred", "'foobar^^foo:bar");
assertTrue(t.getObject() instanceof Literal);
l = (Literal)t.getObject();
assertEquals("'foobar^^foo:bar", l.getLexicalForm());
assertNull(l.getLanguage());
assertNull(l.getDatatype());
}
public void testLiteralLang() throws Exception {
LocalTriple t = new LocalTriple("foo:bar", "foo:pred", "'foobar'@en");
assertTrue(t.getObject() instanceof Literal);
Literal l = (Literal)t.getObject();
assertEquals("foobar", l.getLexicalForm());
assertEquals("en", l.getLanguage());
assertNull(l.getDatatype());
t = new LocalTriple("foo:bar", "foo:pred", "'foobar'@en ");
assertTrue(t.getObject() instanceof Literal);
l = (Literal)t.getObject();
assertEquals("'foobar'@en ", l.getLexicalForm());
assertNull(l.getLanguage());
assertNull(l.getDatatype());
}
public void testLiteralQuote() throws Exception {
LocalTriple t = new LocalTriple("foo:bar", "foo:pred", "'''foobar'''");
assertTrue(t.getObject() instanceof Literal);
Literal l = (Literal)t.getObject();
assertEquals("foobar", l.getLexicalForm());
assertNull(l.getLanguage());
assertNull(l.getDatatype());
t = new LocalTriple("foo:bar", "foo:pred", "'''foobar'''@en");
assertTrue(t.getObject() instanceof Literal);
l = (Literal)t.getObject();
assertEquals("foobar", l.getLexicalForm());
assertEquals("en", l.getLanguage());
assertNull(l.getDatatype());
t = new LocalTriple("foo:bar", "foo:pred", "''foobar''");
assertTrue(t.getObject() instanceof Literal);
l = (Literal)t.getObject();
assertEquals("''foobar''", l.getLexicalForm());
assertNull(l.getLanguage());
assertNull(l.getDatatype());
}
}