package org.xenei.jdbc4sparql; import java.net.URL; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.Properties; import org.apache.log4j.Level; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class StringFunctionTests 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("./J4SStatementTest.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, "myid"); 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 testLcaseFunction() throws Exception { ResultSet rset = stmt .executeQuery("select lcase( 'BAR' ) From fooTable"); ResultSetMetaData rsm = rset.getMetaData(); Assert.assertEquals(1, rsm.getColumnCount()); rset.next(); Assert.assertEquals("bar", rset.getString(1)); rset.close(); rset = stmt.executeQuery("select lower( 'BAR' ) From fooTable"); rsm = rset.getMetaData(); Assert.assertEquals(1, rsm.getColumnCount()); rset.next(); Assert.assertEquals("bar", rset.getString(1)); rset.close(); } @Test public void testLengthFunction() throws Exception { ResultSet rset = stmt .executeQuery("select Length('foo') from fooTable"); ResultSetMetaData rsm = rset.getMetaData(); Assert.assertEquals(1, rsm.getColumnCount()); rset.next(); Assert.assertEquals(3, rset.getInt(1)); rset.close(); rset = stmt.executeQuery("select len('foo') from fooTable"); rsm = rset.getMetaData(); Assert.assertEquals(1, rsm.getColumnCount()); rset.next(); Assert.assertEquals(3, rset.getInt(1)); rset.close(); } @Test public void testReplaceFunction() throws Exception { ResultSet rset = stmt .executeQuery("select replace( 'fob', 'o', 'a' ) From fooTable"); ResultSetMetaData rsm = rset.getMetaData(); Assert.assertEquals(1, rsm.getColumnCount()); rset.next(); Assert.assertEquals("fab", rset.getString(1)); rset.close(); rset = stmt .executeQuery("select replace( 'fob', 'o', 'aa' ) From fooTable"); rsm = rset.getMetaData(); Assert.assertEquals(1, rsm.getColumnCount()); rset.next(); Assert.assertEquals("faab", rset.getString(1)); rset.close(); rset = stmt .executeQuery("select replace( 'fob.c', '.', 'aa' ) From fooTable"); rsm = rset.getMetaData(); Assert.assertEquals(1, rsm.getColumnCount()); rset.next(); Assert.assertEquals("fobaac", rset.getString(1)); rset.close(); rset = stmt .executeQuery("select replace( 'fobc', 'c', '\\' ) From fooTable"); rsm = rset.getMetaData(); Assert.assertEquals(1, rsm.getColumnCount()); rset.next(); Assert.assertEquals("fob\\", rset.getString(1)); rset.close(); } @Test public void testSubstringFunction() throws Exception { final ResultSet rset = stmt .executeQuery("select substring( 'fob', 2, 1 ) From fooTable"); final ResultSetMetaData rsm = rset.getMetaData(); Assert.assertEquals(1, rsm.getColumnCount()); rset.next(); Assert.assertEquals("o", rset.getString(1)); rset.close(); } @Test public void testUcaseFunction() throws Exception { ResultSet rset = stmt .executeQuery("select ucase( 'fob' ) From fooTable"); ResultSetMetaData rsm = rset.getMetaData(); Assert.assertEquals(1, rsm.getColumnCount()); rset.next(); Assert.assertEquals("FOB", rset.getString(1)); rset.close(); rset = stmt.executeQuery("select upper( 'fob' ) From fooTable"); rsm = rset.getMetaData(); Assert.assertEquals(1, rsm.getColumnCount()); rset.next(); Assert.assertEquals("FOB", rset.getString(1)); rset.close(); } }