/**
Copyright (C) SYSTAP, LLC DBA Blazegraph 2006-2016. All rights reserved.
Contact:
SYSTAP, LLC DBA Blazegraph
2501 Calvert ST NW #106
Washington, DC 20008
licenses@blazegraph.com
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Created on Mar 6, 2012
*/
package com.bigdata.rdf.sail.webapp;
import junit.framework.TestCase2;
import org.openrdf.query.resultio.BooleanQueryResultFormat;
import org.openrdf.query.resultio.TupleQueryResultFormat;
import org.openrdf.rio.RDFFormat;
import com.bigdata.counters.format.CounterSetFormat;
/**
* Test suite for content negotiation helper class.
*
* @author <a href="mailto:thompsonbry@users.sourceforge.net">Bryan Thompson</a>
*/
public class TestConneg extends TestCase2 {
// static {
//
// new BigdataSPARQLResultsJSONParserFactory();
//
// }
/**
*
*/
public TestConneg() {
}
/**
* @param name
*/
public TestConneg(final String name) {
super(name);
}
public void test_conneg_no_Accept_headser() {
final String acceptStr = null;
final ConnegUtil util = new ConnegUtil(acceptStr);
assertNull(util.getRDFFormat());
assertEquals(RDFFormat.N3, util.getRDFFormat(RDFFormat.N3));
}
public void test_conneg_empty_Accept_headser() {
final String acceptStr = "";
final ConnegUtil util = new ConnegUtil(acceptStr);
assertNull(util.getRDFFormat());
assertEquals(RDFFormat.N3, util.getRDFFormat(RDFFormat.N3));
}
/*
* Tests where the best format is an RDF data interchange format.
*/
/** Test the default mime type for each {@link RDFFormat}. */
@SuppressWarnings({ "rawtypes", "unchecked" })
public void test_conneg_rdf_data_01() {
for (RDFFormat format : RDFFormat.values()) {
final ConnegUtil util = new ConnegUtil(format.getDefaultMIMEType());
assertEquals(format.getName(), format, util.getRDFFormat());
if (!format.getName().equals("JSON")) {
assertNull(format.getName(), util.getTupleQueryResultFormat());
}
assertSameArray(new ConnegScore[] {//
new ConnegScore(1f, format) },//
util.getScores(RDFFormat.class));
}
}
/*
* Tests where the best format is a SPARQL result set interchange format.
*/
/** Test the default mime type for each {@link TupleQueryResultFormat}. */
@SuppressWarnings({ "rawtypes", "unchecked" })
public void test_conneg_sparql_result_set_01() {
for (TupleQueryResultFormat format : TupleQueryResultFormat.values()) {
final ConnegUtil util = new ConnegUtil(format.getDefaultMIMEType());
if (!format.getName().equals("SPARQL/JSON")) {
assertNull(format.getName(), util.getRDFFormat());
}
assertEquals(format.getName(), format,
util.getTupleQueryResultFormat());
assertSameArray(new ConnegScore[] {//
new ConnegScore(1f, format) },//
util.getScores(TupleQueryResultFormat.class));
}
}
/**
* Test with multiple values in the accept header.
*/
public void test_conneg_sparql_result_set_02() {
final String acceptStr = "application/x-binary-rdf-results-table;q=1,application/sparql-results+xml;q=1";
final ConnegUtil util = new ConnegUtil(acceptStr);
assertNull(util.getRDFFormat());
assertSameArray(new ConnegScore[] {//
new ConnegScore(1f, TupleQueryResultFormat.BINARY),//
new ConnegScore(1f, TupleQueryResultFormat.SPARQL),//
},//
util.getScores(TupleQueryResultFormat.class));
assertEquals(TupleQueryResultFormat.BINARY,
util.getTupleQueryResultFormat());
}
public void test_conneg_sparql_result_set_03() {
final String acceptStr = "text/xhtml,application/x-binary-rdf-results-table;q=.3,application/sparql-results+xml;q=.5";
final ConnegUtil util = new ConnegUtil(acceptStr);
assertNull(util.getRDFFormat());
assertSameArray(new ConnegScore[] {//
new ConnegScore(.5f, TupleQueryResultFormat.SPARQL),//
new ConnegScore(.3f, TupleQueryResultFormat.BINARY),//
},//
util.getScores(TupleQueryResultFormat.class));
assertEquals(TupleQueryResultFormat.SPARQL,
util.getTupleQueryResultFormat());
}
public void test_conneg_sparql_result_set_03b() {
final String acceptStr = "text/xhtml,application/x-binary-rdf-results-table;q=.4,application/sparql-results+xml;q=.2";
final ConnegUtil util = new ConnegUtil(acceptStr);
assertNull(util.getRDFFormat());
assertSameArray(new ConnegScore[] {//
new ConnegScore(.4f, TupleQueryResultFormat.BINARY),//
new ConnegScore(.2f, TupleQueryResultFormat.SPARQL),//
},//
util.getScores(TupleQueryResultFormat.class));
assertEquals(TupleQueryResultFormat.BINARY,
util.getTupleQueryResultFormat());
}
/** Test the default mime type for each {@link BooleanQueryResultFormat}. */
@SuppressWarnings({ "rawtypes", "unchecked" })
public void test_conneg_sparql_boolean_result_set_01() {
for (BooleanQueryResultFormat format : BooleanQueryResultFormat.values()) {
final ConnegUtil util = new ConnegUtil(format.getDefaultMIMEType());
if (!format.getName().equals("SPARQL/JSON")) {
assertNull(format.getName(), util.getRDFFormat());
}
assertEquals(format.getName(), format,
util.getBooleanQueryResultFormat());
assertSameArray(new ConnegScore[] {//
new ConnegScore(1f, format) },//
util.getScores(BooleanQueryResultFormat.class));
}
}
public void test_conneg_ask_json() {
final ConnegUtil util = new ConnegUtil(
BigdataRDFServlet.MIME_SPARQL_RESULTS_JSON);
final BooleanQueryResultFormat format = util
.getBooleanQueryResultFormat(BooleanQueryResultFormat.SPARQL);
assertFalse(format.toString(), format.toString().toLowerCase()
.contains("xml"));
}
public void test_conneg_counterSet_application_xml() {
final String acceptStr = "application/xml";
final ConnegUtil util = new ConnegUtil(acceptStr);
final CounterSetFormat format = util.getCounterSetFormat();
assertEquals(CounterSetFormat.XML, format);
}
public void test_conneg_counterSet_text_plain() {
final String acceptStr = "text/plain";
final ConnegUtil util = new ConnegUtil(acceptStr);
final CounterSetFormat format = util.getCounterSetFormat();
assertEquals(CounterSetFormat.TEXT, format);
}
public void test_conneg_counterSet_text_html() {
final String acceptStr = "text/html";
final ConnegUtil util = new ConnegUtil(acceptStr);
final CounterSetFormat format = util.getCounterSetFormat();
assertEquals(CounterSetFormat.HTML, format);
}
public void test_conneg_counterSet_browser1() {
final String acceptStr = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,";
final ConnegUtil util = new ConnegUtil(acceptStr);
// System.out.println(Arrays.toString(util.getScores(CounterSetFormat.class)));
assertSameArray(new ConnegScore[] {//
new ConnegScore(1f, CounterSetFormat.HTML),//
new ConnegScore(.9f, CounterSetFormat.XML),//
},//
util.getScores(CounterSetFormat.class));
final CounterSetFormat format = util.getCounterSetFormat();
assertEquals(CounterSetFormat.HTML, format);
}
public void test_connect_getMimeTypeForQueryParameter2() {
final String outputFormat = BigdataRDFServlet.OUTPUT_FORMAT_JSON_SHORT;
final String correctResult = BigdataRDFServlet.MIME_SPARQL_RESULTS_JSON;
final String acceptHeader = null;
assertEquals(ConnegUtil.getMimeTypeForQueryParameterQueryRequest(outputFormat,
acceptHeader), correctResult);
}
public void test_connect_getMimeTypeForQueryParameter3() {
final String outputFormat = BigdataRDFServlet.OUTPUT_FORMAT_XML;
final String correctResult = BigdataRDFServlet.MIME_SPARQL_RESULTS_XML;
final String acceptHeader = null;
assertEquals(ConnegUtil.getMimeTypeForQueryParameterQueryRequest(outputFormat,
acceptHeader), correctResult);
}
public void test_connect_getMimeTypeForQueryParameter4() {
final String outputFormat = BigdataRDFServlet.OUTPUT_FORMAT_XML_SHORT;
final String correctResult = BigdataRDFServlet.MIME_SPARQL_RESULTS_XML;
final String acceptHeader = null;
assertEquals(ConnegUtil.getMimeTypeForQueryParameterQueryRequest(outputFormat,
acceptHeader), correctResult);
}
public void test_connect_getMimeTypeForQueryParameter5() {
final String outputFormat = null;
final String correctResult = BigdataRDFServlet.MIME_SPARQL_RESULTS_XML;
final String acceptHeader = null;
assertEquals(ConnegUtil.getMimeTypeForQueryParameterQueryRequest(outputFormat,
acceptHeader), correctResult);
}
public void test_connect_getMimeTypeForQueryParameter6() {
final String outputFormat = BigdataRDFServlet.OUTPUT_FORMAT_JSON;
final String correctResult = BigdataRDFServlet.MIME_SPARQL_RESULTS_JSON;
final String acceptHeader = BigdataRDFServlet.MIME_SPARQL_RESULTS_XML;
assertEquals(ConnegUtil.getMimeTypeForQueryParameterQueryRequest(outputFormat,
acceptHeader), correctResult);
}
public void test_connect_getMimeTypeForQueryParameter7() {
final String outputFormat = BigdataRDFServlet.OUTPUT_FORMAT_XML;
final String correctResult = BigdataRDFServlet.MIME_SPARQL_RESULTS_XML;
final String acceptHeader = BigdataRDFServlet.MIME_SPARQL_RESULTS_JSON;
assertEquals(ConnegUtil.getMimeTypeForQueryParameterQueryRequest(outputFormat,
acceptHeader), correctResult);
}
}