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 org.junit.Before; import org.junit.Test; import org.xenei.jdbc4sparql.iface.name.ItemName; import org.xenei.jdbc4sparql.iface.name.NameSegments; import org.xenei.jdbc4sparql.iface.name.SearchName; import org.xenei.jdbc4sparql.impl.NameUtils; import com.hp.hpl.jena.sparql.core.Var; public class QueryItemInfoTest { private QueryItemInfo<NamedObject<ItemName>, ItemName> itemInfo; private ItemName itemName; private NamedObject<ItemName> namedObject; @Before public void setup() { itemName = new SearchName("catalog", "schema", "table", "column"); itemName.setUsedSegments(NameSegments.ALL); namedObject = new NamedObject<ItemName>() { @Override public ItemName getName() { return itemName; } }; itemInfo = new QueryItemInfo<NamedObject<ItemName>, ItemName>( namedObject, itemName, false) { }; } @Test public void testSegments() { assertEquals("C:true S:true T:true C:true", itemInfo.getSegments() .toString()); assertEquals("catalog.schema.table.column", itemInfo.getName() .getDBName()); itemInfo.setSegments(NameSegments.CATALOG); assertEquals("C:true S:false T:false C:false", itemInfo.getSegments() .toString()); assertEquals("catalog.null.null.null", itemInfo.getName().getDBName()); itemInfo.setSegments(NameSegments.SCHEMA); assertEquals("C:false S:true T:false C:false", itemInfo.getSegments() .toString()); assertEquals("null.schema.null.null", itemInfo.getName().getDBName()); itemInfo.setSegments(NameSegments.TABLE); assertEquals("C:false S:true T:true C:false", itemInfo.getSegments() .toString()); assertEquals("null.schema.table.null", itemInfo.getName().getDBName()); itemInfo.setSegments(NameSegments.COLUMN); assertEquals("C:false S:true T:true C:true", itemInfo.getSegments() .toString()); assertEquals("null.schema.table.column", itemInfo.getName().getDBName()); } @Test public void testGetName() { final ItemName name = itemInfo.getName(); assertTrue(name == itemName); } @Test public void testGetVar() { final String dbName = "catalog" + NameUtils.SPARQL_DOT + "schema" + NameUtils.SPARQL_DOT + "table" + NameUtils.SPARQL_DOT + "column"; final Var v = itemInfo.getVar(); assertEquals(dbName, v.getName()); } @Test public void testGetAlias() { final String varName = itemInfo.getName().getGUID(); assertNotNull(itemInfo.getGUIDVar()); assertEquals(varName, itemInfo.getGUIDVar().getVarName()); } @Test public void testIsOptional() { assertFalse(itemInfo.isOptional()); itemInfo.setOptional(true); assertTrue(itemInfo.isOptional()); } @Test public void testEquality() { QueryItemInfo<NamedObject<ItemName>, ItemName> itemInfo2; ItemName itemName2; final boolean[] tf = { true, false }; for (final boolean catalogFlg : tf) { for (final boolean schemaFlg : tf) { for (final boolean tableFlg : tf) { for (final boolean columnFlg : tf) { itemName2 = new SearchName(itemName, NameSegments.getInstance(catalogFlg, schemaFlg, tableFlg, columnFlg)); itemInfo2 = new QueryItemInfo<NamedObject<ItemName>, ItemName>( namedObject, itemName2, false) { }; if (catalogFlg && schemaFlg && tableFlg && columnFlg) { assertEquality(itemInfo, itemInfo2); } else { assertNotEquals(itemInfo, itemInfo2); assertNotEquals(itemInfo2, itemInfo); assertEquals(itemInfo.hashCode(), itemInfo2.hashCode()); } itemInfo2 = new QueryItemInfo<NamedObject<ItemName>, ItemName>( namedObject, itemName2, true) { }; if (catalogFlg && schemaFlg && tableFlg && columnFlg) { assertEquality(itemInfo, itemInfo2); } else { assertNotEquals(itemInfo, itemInfo2); assertNotEquals(itemInfo2, itemInfo); assertEquals(itemInfo.hashCode(), itemInfo2.hashCode()); } } } } } } private void assertEquality(final QueryItemInfo<?, ?> item1, final QueryItemInfo<?, ?> item2) { assertEquals(item1, item2); assertEquals(item2, item1); assertEquals(item1.hashCode(), item2.hashCode()); } }