package org.xenei.jdbc4sparql.iface.name; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import org.xenei.jdbc4sparql.impl.NameUtils; public class ItemNameTest { private ItemName itemName; @Before public void setup() { itemName = new SearchName("catalog", "schema", "table", "column"); } @Test public void testSegments() { assertEquals("C:true S:true T:true C:true", itemName.getUsedSegments() .toString()); assertEquals("catalog.schema.table.column", itemName.getDBName()); itemName.setUsedSegments(NameSegments.CATALOG); assertEquals("C:true S:false T:false C:false", itemName .getUsedSegments().toString()); assertEquals("catalog.null.null.null", itemName.getDBName()); itemName.setUsedSegments(NameSegments.SCHEMA); assertEquals("C:false S:true T:false C:false", itemName .getUsedSegments().toString()); assertEquals("null.schema.null.null", itemName.getDBName()); itemName.setUsedSegments(NameSegments.TABLE); assertEquals("C:false S:true T:true C:false", itemName .getUsedSegments().toString()); assertEquals("null.schema.table.null", itemName.getDBName()); itemName.setUsedSegments(NameSegments.COLUMN); assertEquals("C:false S:true T:true C:true", itemName.getUsedSegments() .toString()); assertEquals("null.schema.table.column", itemName.getDBName()); } @Test public void testCreateName() { assertEquals("catalog,schema,table,column", itemName.createName(",")); assertEquals("catalog:schema:table:column", itemName.createName(":")); assertEquals("catalogschematablecolumn", itemName.createName("")); } @Test public void testGetBaseName() { final FQName base = itemName.getFQName(); assertEquals("catalog", base.getCatalog()); assertEquals("schema", base.getSchema()); assertEquals("table", base.getTable()); assertEquals("column", base.getColumn()); } @Test public void testGetCol() { itemName.setUsedSegments(NameSegments.FFFF); assertNull(itemName.getColumn()); itemName.setUsedSegments(NameSegments.FFFT); assertEquals("column", itemName.getColumn()); } @Test public void testGetDBName() { final String testName = "catalog" + NameUtils.DB_DOT + "schema" + NameUtils.DB_DOT + "table" + NameUtils.DB_DOT + "column"; assertEquals(testName, itemName.getDBName()); } @Test public void getCatalog() { itemName.setUsedSegments(NameSegments.FFFF); assertNull(itemName.getCatalog()); itemName.setUsedSegments(NameSegments.TFFF); assertEquals("catalog", itemName.getCatalog()); } @Test public void testGetSchema() { itemName.setUsedSegments(NameSegments.FFFF); assertNull(itemName.getSchema()); itemName.setUsedSegments(NameSegments.FTFF); assertEquals("schema", itemName.getSchema()); } @Test public void testGetShortName() { assertEquals("column", itemName.getShortName()); } @Test public void testGetSPARQLName() { final String dbName = "catalog" + NameUtils.SPARQL_DOT + "schema" + NameUtils.SPARQL_DOT + "table" + NameUtils.SPARQL_DOT + "column"; assertEquals(dbName, itemName.getSPARQLName()); } @Test public void testGetGUID() { assertEquals(itemName.getFQName().getGUID(), itemName.getGUID()); itemName.setUsedSegments(NameSegments.FTFF); assertEquals(itemName.getFQName().getGUID(), itemName.getGUID()); } @Test public void testGetTable() { itemName.setUsedSegments(NameSegments.FFFF); assertNull(itemName.getTable()); itemName.setUsedSegments(NameSegments.FFTF); assertEquals("table", itemName.getTable()); } @Test public void testHasWild() { assertFalse(itemName.hasWild()); itemName.setUsedSegments(NameSegments.TTTF); assertTrue(itemName.hasWild()); itemName.setUsedSegments(NameSegments.TTFT); assertTrue(itemName.hasWild()); itemName.setUsedSegments(NameSegments.TFTT); assertTrue(itemName.hasWild()); itemName.setUsedSegments(NameSegments.FTTT); assertTrue(itemName.hasWild()); } @Test public void testIsWild() { assertFalse(itemName.isWild()); itemName.setUsedSegments(NameSegments.TTTF); assertFalse(itemName.isWild()); itemName.setUsedSegments(NameSegments.TTFT); assertFalse(itemName.isWild()); itemName.setUsedSegments(NameSegments.TFTT); assertFalse(itemName.isWild()); itemName.setUsedSegments(NameSegments.FTTT); assertFalse(itemName.isWild()); itemName.setUsedSegments(NameSegments.FFFF); assertTrue(itemName.isWild()); } @Test public void testMatches() { assertFalse(itemName.matches(null)); SearchName tn = new SearchName("catalog", "schema", "table", "column"); assertTrue(itemName.matches(tn)); tn.setUsedSegments(NameSegments.TTTF); assertTrue(tn.matches(itemName)); tn.setUsedSegments(NameSegments.TTFT); assertTrue(tn.matches(itemName)); tn.setUsedSegments(NameSegments.TFTT); assertTrue(tn.matches(itemName)); tn.setUsedSegments(NameSegments.FTTT); tn = new SearchName("catalog", "schema", "table", "column1"); assertFalse(tn.matches(itemName)); tn.setUsedSegments(NameSegments.TTTF); assertTrue(tn.matches(itemName)); tn = new SearchName("catalog", "schema", "table1", "column"); assertFalse(tn.matches(itemName)); tn.setUsedSegments(NameSegments.TTFT); assertTrue(tn.matches(itemName)); tn = new SearchName("catalog", "schema1", "table", "column"); assertFalse(tn.matches(itemName)); tn.setUsedSegments(NameSegments.TFTT); assertTrue(tn.matches(itemName)); tn = new SearchName("catalog1", "schema", "table", "column"); assertFalse(tn.matches(itemName)); tn.setUsedSegments(NameSegments.FTTT); assertTrue(tn.matches(itemName)); } @Test public void testShorterMatches() { itemName.setUsedSegments(NameSegments.TTTF); assertFalse(itemName.matches(null)); SearchName tn = new SearchName("catalog", "schema", "table", "column"); assertTrue(itemName.matches(tn)); tn.setUsedSegments(NameSegments.TTTF); assertTrue(tn.matches(itemName)); tn.setUsedSegments(NameSegments.TTFT); assertTrue(tn.matches(itemName)); tn.setUsedSegments(NameSegments.TFTT); assertTrue(tn.matches(itemName)); tn.setUsedSegments(NameSegments.FTTT); tn = new SearchName("catalog", "schema", "table", "column1"); assertTrue(tn.matches(itemName)); tn.setUsedSegments(NameSegments.TTTF); assertTrue(tn.matches(itemName)); tn = new SearchName("catalog", "schema", "table1", "column"); assertFalse(tn.matches(itemName)); tn.setUsedSegments(NameSegments.TTFT); assertTrue(tn.matches(itemName)); tn = new SearchName("catalog", "schema1", "table", "column"); assertFalse(tn.matches(itemName)); tn.setUsedSegments(NameSegments.TFTT); assertTrue(tn.matches(itemName)); tn = new SearchName("catalog1", "schema", "table", "column"); assertFalse(tn.matches(itemName)); tn.setUsedSegments(NameSegments.FTTT); assertTrue(tn.matches(itemName)); } @Test public void testEquality() { 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)); if (catalogFlg && schemaFlg && tableFlg && columnFlg) { assertEquals(itemName, itemName2); assertEquals(itemName2, itemName); } else { assertNotEquals(itemName, itemName2); assertNotEquals(itemName2, itemName); } assertEquals(itemName.hashCode(), itemName2.hashCode()); } } } } } }