package org.xenei.jdbc4sparql;
import java.net.URL;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.apache.log4j.Level;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class NumberFunctionTests extends AbstractJ4SSetup {
// file URL
private URL fUrl;
// J4SUrl
private String url;
@Before
public void setup() throws Exception {
LoggingConfig.setConsole(Level.DEBUG);
LoggingConfig.setRootLogger(Level.INFO);
LoggingConfig.setLogger("com.hp.hpl.jena.", Level.INFO);
LoggingConfig.setLogger("org.xenei.jdbc4sparql", Level.DEBUG);
Class.forName("org.xenei.jdbc4sparql.J4SDriver");
fUrl = J4SDriverTest.class.getResource("./J4SNumberFunctionTest.ttl");
url = "jdbc:j4s?catalog=test&type=turtle&builder=org.xenei.jdbc4sparql.sparql.builders.SimpleNullableBuilder:"
+ fUrl.toString();
final Properties prop = new Properties();
prop.setProperty(J4SPropertyNames.USER_PROPERTY, "myschema");
prop.setProperty(J4SPropertyNames.PASSWORD_PROPERTY, "mypassw");
conn = DriverManager.getConnection(url, prop);
conn.setAutoCommit(false);
stmt = conn.createStatement();
// TODO remove this
// ((J4SConnection)conn).saveConfig( new
// java.io.File("/tmp/J4SStatementTest.zip"));
}
@Test
public void testAbsIntFunction() throws Exception {
final List<Integer> lst = new ArrayList<Integer>();
final ResultSet rset = stmt
.executeQuery("select abs( IntCol ) From fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
while (rset.next()) {
lst.add(Integer.valueOf(rset.getInt(1)));
}
Assert.assertTrue(lst.contains(Integer.valueOf(5)));
Assert.assertTrue(lst.contains(Integer.valueOf(3)));
Assert.assertTrue(lst.contains(Integer.valueOf(7)));
rset.close();
}
@Test
public void testAbsDoubleFunction() throws Exception {
final List<Double> lst = new ArrayList<Double>();
final ResultSet rset = stmt
.executeQuery("select abs( DoubleCol ) From fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
while (rset.next()) {
lst.add(Double.valueOf(rset.getDouble(1)));
}
Assert.assertTrue(lst.contains(Double.valueOf(1.3)));
;
Assert.assertTrue(lst.contains(Double.valueOf(1.5)));
;
Assert.assertTrue(lst.contains(Double.valueOf(1.7)));
;
rset.close();
}
@Test
public void testCeilFunction() throws Exception {
final List<Integer> lst = new ArrayList<Integer>();
final ResultSet rset = stmt
.executeQuery("select ceil( DoubleCol ) From fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
while (rset.next()) {
lst.add(rset.getInt(1));
}
Assert.assertTrue(lst.contains(Integer.valueOf(-1)));
Assert.assertTrue(lst.contains(Integer.valueOf(2)));
rset.close();
}
@Test
public void testCountFunction() throws Exception {
final ResultSet rset = stmt
.executeQuery("select count( * ) From fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
rset.next();
Assert.assertEquals(3, rset.getInt(1));
rset.close();
}
@Test
public void testCountIntFunction() throws Exception {
final ResultSet rset = stmt
.executeQuery("select count( IntCol ) From fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
rset.next();
Assert.assertEquals(3, rset.getInt(1));
rset.close();
}
@Test
public void testCountDoubleFunction() throws Exception {
final ResultSet rset = stmt
.executeQuery("select count( DoubleCol ) From fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
rset.next();
Assert.assertEquals(3, rset.getInt(1));
rset.close();
}
@Test
public void testFloorFunction() throws Exception {
final List<Integer> lst = new ArrayList<Integer>();
final ResultSet rset = stmt
.executeQuery("select floor( DoubleCol ) From fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
while (rset.next()) {
lst.add(Integer.valueOf(rset.getInt(1)));
}
Assert.assertTrue(lst.contains(Integer.valueOf(1)));
Assert.assertTrue(lst.contains(Integer.valueOf(-2)));
rset.close();
}
@Test
public void testMaxIntFunction() throws Exception {
final ResultSet rset = stmt
.executeQuery("select max( IntCol ) From fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
rset.next();
Assert.assertEquals(7, rset.getInt(1));
rset.close();
}
@Test
public void testMaxDoubleFunction() throws Exception {
final ResultSet rset = stmt
.executeQuery("select max( DoubleCol ) From fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
rset.next();
Assert.assertEquals(Double.valueOf(1.7),
Double.valueOf(rset.getDouble(1)));
rset.close();
}
@Test
public void testMinIntFunction() throws Exception {
final ResultSet rset = stmt
.executeQuery("select min( IntCol ) from fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
rset.next();
Assert.assertEquals(-3, rset.getInt(1));
rset.close();
}
@Test
public void testMinDoubleFunction() throws Exception {
final ResultSet rset = stmt
.executeQuery("select min( DoubleCol ) from fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
rset.next();
Assert.assertEquals(Double.valueOf(-1.3),
Double.valueOf(rset.getDouble(1)));
rset.close();
}
@Test
public void testRoundFunction() throws Exception {
final List<Integer> lst = new ArrayList<Integer>();
final ResultSet rset = stmt
.executeQuery("select round( DoubleCol ) From fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
while (rset.next()) {
lst.add(Integer.valueOf(rset.getInt(1)));
}
Assert.assertTrue(lst.contains(Integer.valueOf(2)));
Assert.assertTrue(lst.contains(Integer.valueOf(-1)));
rset.close();
}
@Test
public void testSumFunction() throws Exception {
final ResultSet rset = stmt
.executeQuery("select sum( IntCol ) From fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
rset.next();
Assert.assertEquals(9, rset.getInt(1));
rset.close();
}
@Test
public void testRandFunction() throws Exception {
final ResultSet rset = stmt.executeQuery("select rand() From fooTable");
final ResultSetMetaData rsm = rset.getMetaData();
Assert.assertEquals(1, rsm.getColumnCount());
rset.next();
final double d = rset.getDouble(1);
Assert.assertTrue(d > 0.0);
Assert.assertTrue(d < 1.0);
rset.close();
}
}