package org.xenei.jdbc4sparql.sparql.items; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.sql.SQLDataException; import org.junit.Before; import org.junit.Test; import org.xenei.jdbc4sparql.iface.Column; import org.xenei.jdbc4sparql.iface.ColumnDef; import org.xenei.jdbc4sparql.iface.name.ColumnName; import org.xenei.jdbc4sparql.iface.name.ItemName; import org.xenei.jdbc4sparql.iface.name.NameSegments; import org.xenei.jdbc4sparql.impl.NameUtils; import com.hp.hpl.jena.sparql.core.Var; public class QueryColumnInfoTest { private QueryColumnInfo columnInfo; private Column column; private ColumnName columnName; private ColumnDef colDef; @Before public void setup() { columnName = new ColumnName("catalog", "schema", "table", "column"); colDef = mock(ColumnDef.class); when(colDef.getType()).thenReturn(java.sql.Types.VARCHAR); column = mock(Column.class); when(column.getName()).thenReturn(columnName); when(column.getColumnDef()).thenReturn(colDef); columnInfo = new QueryColumnInfo(column, false); } // @Test // public void testGetExpr() { // assertNull(columnInfo.getExpr()); // columnInfo.setExpr(new NodeValueString("foo")); // assertEquals(new NodeValueString("foo"), columnInfo.getExpr()); // } @Test public void testSegments() { assertEquals("C:false S:true T:true C:true", columnInfo.getSegments() .toString()); assertEquals("schema.table.column", columnInfo.getName().getDBName()); columnInfo.setSegments(NameSegments.CATALOG); assertEquals("C:true S:false T:false C:true", columnInfo.getSegments() .toString()); assertEquals("column", columnInfo.getName().getDBName()); columnInfo.setSegments(NameSegments.SCHEMA); assertEquals("C:false S:true T:true C:true", columnInfo.getSegments() .toString()); assertEquals("schema.table.column", columnInfo.getName().getDBName()); columnInfo.setSegments(NameSegments.TABLE); assertEquals("C:false S:true T:true C:true", columnInfo.getSegments() .toString()); assertEquals("schema.table.column", columnInfo.getName().getDBName()); columnInfo.setSegments(NameSegments.FFTF); assertEquals("C:false S:false T:true C:true", columnInfo.getSegments() .toString()); assertEquals("table.column", columnInfo.getName().getDBName()); columnInfo.setSegments(NameSegments.TTTF); assertEquals("C:true S:true T:true C:true", columnInfo.getSegments() .toString()); assertEquals("schema.table.column", columnInfo.getName().getDBName()); } @Test public void testGetName() { final ItemName name = columnInfo.getName(); assertTrue(name == columnName); } @Test public void testGetVar() { final String dbName = "schema" + NameUtils.SPARQL_DOT + "table" + NameUtils.SPARQL_DOT + "column"; final Var v = columnInfo.getVar(); assertEquals(dbName, v.getName()); } @Test public void testGetGUID() { final String varName = columnInfo.getName().getGUID(); assertNotNull(columnInfo.getGUIDVar()); assertEquals(varName, columnInfo.getGUIDVar().getVarName()); } @Test public void testIsOptional() { assertFalse(columnInfo.isOptional()); columnInfo.setOptional(true); assertTrue(columnInfo.isOptional()); } @Test public void testAddAlias() throws SQLDataException { final ColumnName alias = new ColumnName("", "", "", "alias"); final QueryColumnInfo aliasInfo = columnInfo.createAlias(alias); assertEquals(alias, aliasInfo.getName()); assertNotEquals(columnInfo.getGUID(), alias.getGUID()); assertEquals(columnInfo.getGUID(), aliasInfo.getGUID()); } @Test public void testGetColumn() { assertEquals(column, columnInfo.getColumn()); } }