/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.riot.resultset; import static org.apache.jena.riot.resultset.ResultSetLang.SPARQLResultSetCSV ; import static org.apache.jena.riot.resultset.ResultSetLang.SPARQLResultSetJSON ; import static org.apache.jena.riot.resultset.ResultSetLang.SPARQLResultSetTSV ; import static org.apache.jena.riot.resultset.ResultSetLang.SPARQLResultSetXML ; import java.io.ByteArrayInputStream ; import java.io.ByteArrayOutputStream ; import java.util.ArrayList ; import java.util.Collection ; import java.util.List ; import org.apache.jena.atlas.junit.BaseTest ; import org.apache.jena.atlas.lib.StrUtils ; import org.apache.jena.query.ResultSet ; import org.apache.jena.query.ResultSetFactory ; import org.apache.jena.query.ResultSetRewindable ; import org.apache.jena.riot.Lang ; import org.apache.jena.riot.ResultSetMgr ; import org.apache.jena.sparql.resultset.ResultSetCompare ; import org.apache.jena.sparql.sse.SSE ; import org.apache.jena.sparql.sse.builders.BuilderResultSet ; import org.junit.Before ; import org.junit.Test ; import org.junit.runner.RunWith ; import org.junit.runners.Parameterized ; import org.junit.runners.Parameterized.Parameters ; @RunWith(Parameterized.class) public class TestResultSetIO extends BaseTest { @Parameters(name = "{index}: {0}") public static Collection<Object[]> data() { Lang[] langs = { SPARQLResultSetXML , SPARQLResultSetJSON , SPARQLResultSetCSV , SPARQLResultSetTSV } ; List<Object[]> x = new ArrayList<>() ; for ( Lang lang : langs ) { x.add(new Object[]{ "test:"+lang.getName(), lang } ) ; } return x ; } static String rsStr = StrUtils.strjoinNL ("(resultset (?x ?y)" ," (row (?x _:b0) (?y _:b1))" ," (row (?x _:b2) (?y _:b3))" ," (row (?x _:b1) (?y _:b0))" ," (row (?x 1) )" ," (row (?y 2) )" ," (row )" ,")" ) ; static ResultSetRewindable test_rs = ResultSetFactory.makeRewindable(BuilderResultSet.build(SSE.parse(rsStr))) ; private final Lang lang ; @Before public void beforetest() { test_rs.reset() ; } public TestResultSetIO(String name, Lang lang) { this.lang = lang ; } @Test public void test_resultset_01() { // write(data)-read-compare ByteArrayOutputStream out = new ByteArrayOutputStream() ; ResultSetMgr.write(out, test_rs, lang) ; test_rs.reset(); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()) ; ResultSet rs = ResultSetMgr.read(in, lang) ; ResultSetRewindable rsw = ResultSetFactory.makeRewindable(rs) ; if ( ! lang.equals(SPARQLResultSetCSV) ) // CSV is not faithful assertTrue(ResultSetCompare.equalsByTerm(test_rs, rsw)) ; rsw.reset(); test_rs.reset(); out = new ByteArrayOutputStream() ; // Round trip the output from above - write(rsw)-read-compare ResultSetMgr.write(out, rsw, lang) ; in = new ByteArrayInputStream(out.toByteArray()) ; ResultSet rs2 = ResultSetMgr.read(in, lang) ; // Not test_rs -- CSV round-trips to itself. assertTrue(ResultSetCompare.equalsByTerm(rsw, rs2)) ; } // @Test public void test_resultset_02() { // StringWriter out = new StringWriter() ; // ResultSetMgr.write(out, test_rs, lang) ; // test_rs.reset(); // StringReader in = new StringReader(out.toString()) ; // // ResultSet rs = ResultSetMgr.read(in, lang) ; // ResultSetRewindable rsw = ResultSetFactory.makeRewindable(rs) ; // if ( ! lang.equals(SPARQLResultSetCSV) ) // // CSV is not faithful // assertTrue(ResultSetCompare.equalsByTerm(test_rs, rsw)) ; // // rsw.reset(); // test_rs.reset(); // // out = new StringWriter() ; // // // Round trip the output from above. // ResultSetMgr.write(out, rsw, lang) ; // in = new StringReader(out.toString()) ; // ResultSet rs2 = ResultSetMgr.read(in, lang) ; // // Not test_rs -- CSV is not faithful // assertTrue(ResultSetCompare.equalsByTerm(rsw, rs2)) ; // } }