RioTest.java
/*******************************************************************************
* Copyright (c) 2022 Eclipse RDF4J contributors.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Distribution License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*******************************************************************************/
package org.eclipse.rdf4j.rio;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.Reader;
import java.io.StringReader;
import java.nio.charset.StandardCharsets;
import org.eclipse.rdf4j.rio.helpers.ContextStatementCollector;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class RioTest {
private static final InputStream testInputStream = new ByteArrayInputStream("test data".getBytes());
private static final Reader testReader = new StringReader("test data");
private static final RDFFormat TEST_FORMAT = new RDFFormat(
"TestFormat", "text/test", StandardCharsets.UTF_8, "test", false, false, false
);
private RDFParser mockParser;
@BeforeEach
public void setUp() {
mockParser = mock(RDFParser.class);
RDFParserRegistry.getInstance().add(new RDFParserFactory() {
@Override
public RDFFormat getRDFFormat() {
return TEST_FORMAT;
}
@Override
public RDFParser getParser() {
return mockParser;
}
});
}
@Test
public void parseInputStream_DefaultSettings() throws Exception {
Rio.parse(testInputStream, TEST_FORMAT);
verify(mockParser).setRDFHandler(any(ContextStatementCollector.class));
verify(mockParser).parse(testInputStream, null);
}
@Test
public void parseInputStream_BaseURI() throws Exception {
String baseURI = "test:baseURI";
Rio.parse(testInputStream, baseURI, TEST_FORMAT);
verify(mockParser).parse(testInputStream, baseURI);
}
@Test
public void parseInputStream_CustomConfig() throws Exception {
ParserConfig config = new ParserConfig();
Rio.parse(testInputStream, TEST_FORMAT, config);
verify(mockParser).setParserConfig(config);
verify(mockParser).parse(testInputStream, null);
}
@Test
public void parseReader_DefaultSettings() throws Exception {
Rio.parse(testReader, TEST_FORMAT);
verify(mockParser).setRDFHandler(any(ContextStatementCollector.class));
verify(mockParser).parse(testReader, null);
}
@Test
public void parseReader_CustomConfig() throws Exception {
ParserConfig config = new ParserConfig();
Rio.parse(testReader, TEST_FORMAT, config);
verify(mockParser).setParserConfig(config);
verify(mockParser).parse(testReader, null);
}
@Test
public void createParser_existing() {
RDFParser parser = Rio.createParser(TEST_FORMAT);
assertThat(parser).isEqualTo(mockParser);
}
public void createParser_unknown() {
RDFFormat unknownFormat = new RDFFormat("unknown", "test/unknown", StandardCharsets.UTF_8, "unknown", false,
false,
false);
assertThatExceptionOfType(UnsupportedRDFormatException.class).isThrownBy(() -> Rio.createParser(unknownFormat));
}
}