/** * 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.thrift; import java.io.ByteArrayInputStream ; import java.io.ByteArrayOutputStream ; import java.io.IOException ; import java.io.InputStream ; import org.apache.jena.atlas.io.IO ; 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.thrift.BinRDF ; import org.apache.jena.sparql.resultset.ResultSetCompare ; import org.apache.jena.sparql.sse.Item ; import org.apache.jena.sparql.sse.SSE ; import org.apache.jena.sparql.sse.builders.BuilderResultSet ; import org.junit.Test ; public class TestResultSetThrift extends BaseTest { // Only datatypes that transmitted perfectly. static ResultSetRewindable rs0 = make ("(resultset (?x ?y)" , " (row (?x _:a) (?y 3))" , " (row (?x 1) (?y 'a'))" , " (row (?y 'y'))" , " (row (?x _:a))" , " (row)" , " (row (?x 2) (?y 10))" , ")" ) ; static ResultSetRewindable rs1 = make ("(resultset (?x ?y)" , " (row (?x 1) (?y 3))" , " (row (?x 1) (?y 'a'))" , ")" ) ; static ResultSetRewindable rs2 = make ("(resultset (?x ?y)" , " (row (?x 1) (?y 'a'))" , " (row (?x 1) (?y 3))" , ")" ) ; @Test public void resultSet_01() { test(rs0) ; } @Test public void resultSet_02() { ResultSetRewindable r1 = test(rs1) ; // not reordered r1.reset(); rs2.reset() ; assertFalse(ResultSetCompare.equalsByTermAndOrder(r1, rs2)) ; rs2.reset() ; } @Test public void resultSet_03() { ResultSetRewindable r2 = test(rs2) ; // not reordered r2.reset(); rs1.reset() ; assertFalse(ResultSetCompare.equalsByTermAndOrder(r2, rs1)) ; rs1.reset() ; } private static ResultSetRewindable test(ResultSetRewindable resultSet) { resultSet.reset(); ByteArrayOutputStream out = new ByteArrayOutputStream() ; BinRDF.writeResultSet(out, resultSet, true) ; resultSet.reset(); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()) ; ResultSet rs$ = BinRDF.readResultSet(in) ; ResultSetRewindable resultSet2 = ResultSetFactory.makeRewindable(rs$) ; // Includes bnode labels. ResultSetCompare.equalsExact(resultSet, resultSet2) ; resultSet.reset(); resultSet2.reset(); return resultSet2 ; } private static ResultSetRewindable make(String ... strings) { String s = StrUtils.strjoinNL(strings) ; Item item = SSE.parse(s) ; ResultSetRewindable rs = ResultSetFactory.makeRewindable(BuilderResultSet.build(item)) ; return rs ; } private static final String DIR = TS_RDFThrift.TestingDir ; @Test public void resultSet_10() { try (InputStream in = IO.openFile(DIR+"/results-1.srj")) { ResultSet rs = ResultSetFactory.fromJSON(in) ; test(ResultSetFactory.copyResults(rs)) ; } catch (IOException ex) { IO.exception(ex) ; } } }