package org.semanticweb.owlapi.io;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
import org.semanticweb.owlapi.formats.RDFXMLDocumentFormatFactory;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLDocumentFormat;
import org.semanticweb.owlapi.model.OWLDocumentFormatFactory;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OntologyConfigurator;
@SuppressWarnings("javadoc")
public class StreamDocumentSourceBaseTestCase {
@SuppressWarnings("null")
@Test
public void shouldCreateRewindableReaderWithKnownContent() {
String input =
"<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\">\n"
+ "<owl:Ontology/>\n"
+ " <owl:Class rdf:about=\"http://example.com/Person\">\n <owl:hasKey rdf:parseType=\"Collection\">\n <owl:ObjectProperty rdf:about=\"http://example.com/objectPoperty\"/>\n <owl:DatatypeProperty rdf:about=\"http://example.com/dataProperty\"/>\n </owl:hasKey>\n </owl:Class>\n"
+ " <owl:ObjectProperty rdf:about=\"http://example.com/objectProperty\"/>\n"
+ "</rdf:RDF>";
StreamDocumentSourceBase source = new StreamDocumentSourceBase(
new InputStreamReader(new ByteArrayInputStream(input.getBytes()),
StandardCharsets.UTF_8),
IRI.create("urn:test#", "test"), null, null) {};
StringWriter w = new StringWriter();
OWLParser mockParser = new OWLParser() {
@Override
public OWLDocumentFormat parse(Reader r, OWLParserParameters p) {
try {
IOUtils.copy(r, w);
} catch (IOException e) {
e.printStackTrace();
fail(e.getMessage());
}
return null;
}
@Override
public OWLDocumentFormatFactory getSupportedFormat() {
return new RDFXMLDocumentFormatFactory();
}
};
source.acceptParser(mockParser, mock(OWLOntology.class), mock(OntologyConfigurator.class));
assertEquals(input, w.toString());
}
}