}
@Test
public void testDatatypes() {
Date d = new Date();
NamedNodeImpl uri = new NamedNodeImpl(URI.create("http://example.org/foo"));
PlainLiteralImpl lit1 = new PlainLiteralImpl("bar");
PlainLiteralImpl lit2 = new PlainLiteralImpl("baz", "en");
TypedLiteralImpl lit3 = new TypedLiteralImpl(DateTime.format(d, TimeZone.getDefault()), XsdTypes.DATE_TIME);
TypedLiteralImpl aInt = new TypedLiteralImpl("20", XsdTypes.INT);
TypedLiteralImpl aLong = new TypedLiteralImpl("54687323427654", XsdTypes.LONG);
TypedLiteralImpl aBool = new TypedLiteralImpl("true", XsdTypes.BOOLEAN);
TypedLiteralImpl aFloat = new TypedLiteralImpl("3.14", XsdTypes.FLOAT);
TypedLiteralImpl aDouble = new TypedLiteralImpl("98.6", XsdTypes.DOUBLE);
TypedLiteralImpl aString = new TypedLiteralImpl("abcd", XsdTypes.STRING);
BlankNodeImpl bn = new BlankNodeImpl("node0");
List<List<Object>> data = toList(
new Object[][] {
new Object[] { iri(uri) },
new Object[] { plainLit(lit1) },
new Object[] { plainLit(lit2) },
new Object[] { typedLit(lit3) },
new Object[] { Integer.valueOf(aInt.getLexical()) },
new Object[] { Long.valueOf(aLong.getLexical()) },
new Object[] { Boolean.valueOf(aBool.getLexical()) },
new Object[] { Float.valueOf(aFloat.getLexical()) },
new Object[] { Double.valueOf(aDouble.getLexical()) },
new Object[] { aString.getLexical() },
new Object[] { bNode(bn) },
new Object[] { null },
});
DummySherpaServer server = new DummySherpaServer(data);
try {
Solutions s = helpExecuteQuery(server, 10);
String var = "a";
Assert.assertTrue(s.next());
Assert.assertEquals(uri, s.getBinding(var));
Assert.assertEquals(uri.getURI(), s.getURI(var));
Assert.assertTrue(s.next());
Assert.assertEquals(lit1, s.getBinding(var));
Assert.assertEquals(lit1, s.getLiteral(var));