Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
More unit testing
  • Loading branch information
ajs6f committed Oct 18, 2013
1 parent 6bbc10d commit 257f298
Show file tree
Hide file tree
Showing 2 changed files with 191 additions and 67 deletions.
Expand Up @@ -107,8 +107,6 @@ public Triple apply(final Value v) {

}



/**
* @param p A JCR {@link Property}
* @param v The {@link Value} of that Property to use (in the case of
Expand Down Expand Up @@ -146,7 +144,7 @@ private Node propertyvalue2node(final Property p, final Value v) {
case REFERENCE:
case WEAKREFERENCE:
case PATH:
return traverseLink(p,v);
return traverseLink(p, v);
default:
return literal2node(v.getString());
}
Expand All @@ -155,6 +153,12 @@ private Node propertyvalue2node(final Property p, final Value v) {
}
}

private static Node literal2node(final Object literal) {
final Node result = createTypedLiteral(literal).asNode();
LOGGER.debug("Converting {} into {}", literal, result);
return result;
}

private Node traverseLink(final Property p, final Value v)
throws RepositoryException {
final javax.jcr.Node refNode;
Expand All @@ -172,11 +176,8 @@ private Node traverseLink(final Property p, final Value v)
return getGraphSubject(refNode);
}

private static Node literal2node(final Object literal) {
return createTypedLiteral(literal).asNode();
}

private Node getGraphSubject(final javax.jcr.Node n) throws RepositoryException {
private Node getGraphSubject(final javax.jcr.Node n)
throws RepositoryException {
return graphSubjects.getGraphSubject(n).asNode();
}

Expand Down
Expand Up @@ -18,14 +18,24 @@

import static com.google.common.collect.Iterators.singletonIterator;
import static com.hp.hpl.jena.rdf.model.ResourceFactory.createProperty;
import static com.hp.hpl.jena.rdf.model.ResourceFactory.createResource;
import static com.hp.hpl.jena.rdf.model.ResourceFactory.createTypedLiteral;
import static javax.jcr.PropertyType.BOOLEAN;
import static javax.jcr.PropertyType.DATE;
import static javax.jcr.PropertyType.DECIMAL;
import static javax.jcr.PropertyType.DOUBLE;
import static javax.jcr.PropertyType.LONG;
import static javax.jcr.PropertyType.PATH;
import static javax.jcr.PropertyType.REFERENCE;
import static javax.jcr.PropertyType.STRING;
import static javax.jcr.PropertyType.URI;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
import static org.slf4j.LoggerFactory.getLogger;

import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Iterator;

import javax.jcr.Property;
Expand Down Expand Up @@ -70,19 +80,19 @@ public void testMultiValuedLiteralTriple() throws RepositoryException {
final Triple t2 = ts.next();
LOGGER.debug("Constructed triple: {}", t2);

assertEquals("Got wrong RDF object!", t1.getObject().getLiteralValue(),
TEST_VALUE);
assertEquals("Got wrong RDF predicate!", t1.getPredicate(),
createProperty(TEST_PROPERTY_NAME).asNode());
assertEquals("Got wrong RDF subject!", t1.getSubject(),
TEST_NODE_SUBJECT.asNode());

assertEquals("Got wrong RDF object!", t2.getObject().getLiteralValue(),
TEST_VALUE);
assertEquals("Got wrong RDF predicate!", t2.getPredicate(),
createProperty(TEST_PROPERTY_NAME).asNode());
assertEquals("Got wrong RDF subject!", t2.getSubject(),
TEST_NODE_SUBJECT.asNode());
assertEquals("Got wrong RDF object!", TEST_VALUE, t1.getObject()
.getLiteralValue());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t1.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t1
.getSubject());

assertEquals("Got wrong RDF object!", TEST_VALUE, t2.getObject()
.getLiteralValue());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t2.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t2
.getSubject());
}

@Test
Expand All @@ -97,32 +107,131 @@ public void testSingleValuedResourceTriple() throws RepositoryException {
testPropertyToTriple.apply(mockProperty);
final Triple t = mapping.apply(singletonIterator(mockValue)).next();
LOGGER.debug("Constructed triple: {}", t);
assertEquals("Got wrong RDF object!", t.getObject(), TEST_NODE_SUBJECT
.asNode());
assertEquals("Got wrong RDF predicate!", t.getPredicate(),
createProperty(TEST_PROPERTY_NAME).asNode());
assertEquals("Got wrong RDF subject!", t.getSubject(),
TEST_NODE_SUBJECT.asNode());
assertEquals("Got wrong RDF object!", TEST_NODE_SUBJECT.asNode(), t
.getObject());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t
.getSubject());
}

@Test
public void testSingleValuedLiteralTriple() throws RepositoryException {
public void testSingleValuedStringLiteralTriple()
throws RepositoryException {

when(mockProperty.isMultiple()).thenReturn(false);
when(mockProperty.getType()).thenReturn(STRING);
when(mockProperty.getValue()).thenReturn(mockValue);
when(mockValue.getType()).thenReturn(STRING);
when(mockValue.getString()).thenReturn(TEST_VALUE);
final Function<Iterator<Value>, Iterator<Triple>> mapping =
testPropertyToTriple.apply(mockProperty);
final Triple t = mapping.apply(singletonIterator(mockValue)).next();
LOGGER.debug("Constructed triple: {}", t);
assertEquals("Got wrong RDF object!", t.getObject().getLiteralValue(),
TEST_VALUE);
assertEquals("Got wrong RDF predicate!", t.getPredicate(),
createProperty(TEST_PROPERTY_NAME).asNode());
assertEquals("Got wrong RDF subject!", t.getSubject(),
TEST_NODE_SUBJECT.asNode());
final Triple t = createSingleValuedLiteralTriple();
assertEquals("Got wrong RDF object!", TEST_VALUE, t.getObject()
.getLiteralValue());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t
.getSubject());
}

@Test
public void
testSingleValuedBooleanLiteralTriple() throws RepositoryException {

when(mockProperty.getType()).thenReturn(BOOLEAN);
when(mockValue.getType()).thenReturn(BOOLEAN);
when(mockValue.getString()).thenReturn("true");
final Triple t = createSingleValuedLiteralTriple();
assertEquals("Got wrong RDF object!", "true", t.getObject()
.getLiteralValue());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t
.getSubject());
}

@Test
public void testSingleValuedDateLiteralTriple() throws RepositoryException {

final Calendar date = Calendar.getInstance();

when(mockProperty.getType()).thenReturn(DATE);
when(mockValue.getType()).thenReturn(DATE);
when(mockValue.getDate()).thenReturn(date);
final Triple t = createSingleValuedLiteralTriple();
assertEquals("Got wrong RDF object!", createTypedLiteral(date).asNode()
.getLiteral(), t.getObject().getLiteral());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t
.getSubject());
}

@Test
public void
testSingleValuedDecimalLiteralTriple() throws RepositoryException {

final BigDecimal num = BigDecimal.valueOf(3.141);

when(mockProperty.getType()).thenReturn(DECIMAL);
when(mockValue.getType()).thenReturn(DECIMAL);
when(mockValue.getDecimal()).thenReturn(num);
final Triple t = createSingleValuedLiteralTriple();
assertEquals("Got wrong RDF object!", createTypedLiteral(num).asNode()
.getLiteral(), t.getObject().getLiteral());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t
.getSubject());
}

@Test
public void testSingleValuedDoubleLiteralTriple()
throws RepositoryException {

final Double num = 3.141;

when(mockProperty.getType()).thenReturn(DOUBLE);
when(mockValue.getType()).thenReturn(DOUBLE);
when(mockValue.getDouble()).thenReturn(num);
final Triple t = createSingleValuedLiteralTriple();
assertEquals("Got wrong RDF object!", createTypedLiteral(num).asNode()
.getLiteral(), t.getObject().getLiteral());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t
.getSubject());
}

@Test
public void testSingleValuedLongLiteralTriple() throws RepositoryException {

final Long num = 3L;

when(mockProperty.getType()).thenReturn(LONG);
when(mockValue.getType()).thenReturn(LONG);
when(mockValue.getLong()).thenReturn(num);
final Triple t = createSingleValuedLiteralTriple();
assertEquals("Got wrong RDF object!", createTypedLiteral(num).asNode()
.getLiteral(), t.getObject().getLiteral());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t
.getSubject());
}

@Test
public void testSingleValuedUriLiteralTriple() throws RepositoryException {

final String uri = "http://example.com/example-uri";

when(mockProperty.getType()).thenReturn(URI);
when(mockValue.getType()).thenReturn(URI);
when(mockValue.getString()).thenReturn(uri);
final Triple t = createSingleValuedLiteralTriple();
assertEquals("Got wrong RDF object!", createResource(uri).asNode(), t
.getObject());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t
.getSubject());
}

@Test
Expand All @@ -149,23 +258,26 @@ public void testMultiValuedResourceTriple() throws RepositoryException {
"Constructed triple for testMultiValuedResourceTriple(): {}",
t2);

assertEquals("Got wrong RDF object!", t1.getObject(), TEST_NODE_SUBJECT
.asNode());
assertEquals("Got wrong RDF predicate!", t1.getPredicate(),
createProperty(TEST_PROPERTY_NAME).asNode());
assertEquals("Got wrong RDF subject!", t1.getSubject(),
TEST_NODE_SUBJECT.asNode());

assertEquals("Got wrong RDF object!", t2.getObject(), TEST_NODE_SUBJECT
.asNode());
assertEquals("Got wrong RDF predicate!", t2.getPredicate(),
createProperty(TEST_PROPERTY_NAME).asNode());
assertEquals("Got wrong RDF subject!", t2.getSubject(),
TEST_NODE_SUBJECT.asNode());
assertEquals("Got wrong RDF object!", TEST_NODE_SUBJECT.asNode(), t1
.getObject());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t1.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t1
.getSubject());

assertEquals("Got wrong RDF object!", TEST_NODE_SUBJECT.asNode(), t2
.getObject());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t2.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t2
.getSubject());
}

@Test
public void testMultiValuedResourceTripleWithReference() throws RepositoryException {
public
void
testMultiValuedResourceTripleWithReference()
throws RepositoryException {

when(mockProperty.isMultiple()).thenReturn(true);
when(mockProperty.getType()).thenReturn(REFERENCE);
Expand All @@ -191,19 +303,30 @@ public void testMultiValuedResourceTripleWithReference() throws RepositoryExcept
"Constructed triple for testMultiValuedResourceTriple(): {}",
t2);

assertEquals("Got wrong RDF object!", t1.getObject(), TEST_NODE_SUBJECT
.asNode());
assertEquals("Got wrong RDF predicate!", t1.getPredicate(),
createProperty(TEST_PROPERTY_NAME).asNode());
assertEquals("Got wrong RDF subject!", t1.getSubject(),
TEST_NODE_SUBJECT.asNode());

assertEquals("Got wrong RDF object!", t2.getObject(), TEST_NODE_SUBJECT
.asNode());
assertEquals("Got wrong RDF predicate!", t2.getPredicate(),
createProperty(TEST_PROPERTY_NAME).asNode());
assertEquals("Got wrong RDF subject!", t2.getSubject(),
TEST_NODE_SUBJECT.asNode());
assertEquals("Got wrong RDF object!", TEST_NODE_SUBJECT.asNode(), t1
.getObject());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t1.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t1
.getSubject());

assertEquals("Got wrong RDF object!", TEST_NODE_SUBJECT.asNode(), t2
.getObject());
assertEquals("Got wrong RDF predicate!", createProperty(
TEST_PROPERTY_NAME).asNode(), t2.getPredicate());
assertEquals("Got wrong RDF subject!", TEST_NODE_SUBJECT.asNode(), t2
.getSubject());
}

private Triple createSingleValuedLiteralTriple() throws RepositoryException {

when(mockProperty.isMultiple()).thenReturn(false);
when(mockProperty.getValue()).thenReturn(mockValue);
final Function<Iterator<Value>, Iterator<Triple>> mapping =
testPropertyToTriple.apply(mockProperty);
final Triple t = mapping.apply(singletonIterator(mockValue)).next();
LOGGER.debug("Constructed triple: {}", t);
return t;
}

private PropertyToTriple testPropertyToTriple;
Expand Down

0 comments on commit 257f298

Please sign in to comment.