001: /*
002: * TableIdentifierTest.java
003: *
004: * This file is part of SQL Workbench/J, http://www.sql-workbench.net
005: *
006: * Copyright 2002-2008, Thomas Kellerer
007: * No part of this code maybe reused without the permission of the author
008: *
009: * To contact the author please send an email to: support@sql-workbench.net
010: *
011: */
012: package workbench.db;
013:
014: import java.util.HashSet;
015: import java.util.Set;
016: import java.util.TreeSet;
017: import junit.framework.*;
018: import workbench.TestUtil;
019:
020: /**
021: *
022: * @author support@sql-workbench.net
023: */
024: public class TableIdentifierTest extends TestCase {
025:
026: public TableIdentifierTest(String testName) {
027: super (testName);
028: }
029:
030: public void testQuoteSpecialChars() {
031: try {
032: TestUtil util = new TestUtil("tableIdentifierTest");
033: WbConnection con = util.getConnection("tidTest");
034: String t = "\"123\".TABLENAME";
035: TableIdentifier tbl = new TableIdentifier(t);
036: tbl.setPreserveQuotes(true);
037: String exp = tbl.getTableExpression(con);
038: assertEquals("Wrong expression", t, exp);
039:
040: t = "table:bla";
041: tbl = new TableIdentifier(t);
042: tbl.setPreserveQuotes(true);
043: exp = tbl.getTableExpression(con);
044: assertEquals("Wrong expression", "\"" + t.toUpperCase()
045: + "\"", exp);
046:
047: t = "table\\bla";
048: tbl = new TableIdentifier(t);
049: tbl.setPreserveQuotes(true);
050: exp = tbl.getTableExpression(con);
051: assertEquals("Wrong expression", "\"" + t.toUpperCase()
052: + "\"", exp);
053:
054: t = "table bla";
055: tbl = new TableIdentifier(t);
056: tbl.setPreserveQuotes(true);
057: exp = tbl.getTableExpression(con);
058: assertEquals("Wrong expression", "\"" + t.toUpperCase()
059: + "\"", exp);
060:
061: t = "\"TABLE.BLA\"";
062: tbl = new TableIdentifier(t);
063: //tbl.setPreserveQuotes(true);
064: exp = tbl.getTableExpression();
065: assertEquals("Wrong expression", t.toUpperCase(), exp);
066: assertNull("Schema present", tbl.getSchema());
067:
068: t = "table;1";
069: tbl = new TableIdentifier(t);
070: //tbl.setPreserveQuotes(true);
071: exp = tbl.getTableExpression(con);
072: assertEquals("Wrong expression", "\"" + t.toUpperCase()
073: + "\"", exp);
074: assertNull("Schema present", tbl.getSchema());
075:
076: t = "table,1";
077: tbl = new TableIdentifier(t);
078: //tbl.setPreserveQuotes(true);
079: exp = tbl.getTableExpression(con);
080: assertEquals("Wrong expression", "\"" + t.toUpperCase()
081: + "\"", exp);
082: assertNull("Schema present", tbl.getSchema());
083:
084: t = "123.TABLENAME";
085: tbl = new TableIdentifier(t);
086: exp = tbl.getTableExpression(con);
087: assertEquals("Wrong expression", "\"123\".TABLENAME", exp);
088: } catch (Exception e) {
089: e.printStackTrace();
090: fail(e.getMessage());
091: } finally {
092: ConnectionMgr.getInstance().disconnectAll();
093: }
094: }
095:
096: public void testIdentifier() {
097: String sql = "BDB_IE.dbo.tblBDBMMPGroup";
098: TableIdentifier tbl = new TableIdentifier(sql);
099: assertEquals("BDB_IE", tbl.getCatalog());
100: assertEquals("dbo", tbl.getSchema());
101: assertEquals("BDB_IE.dbo.tblBDBMMPGroup", tbl
102: .getTableExpression());
103:
104: sql = "\"APP\".\"BLOB_TEST\"";
105: tbl = new TableIdentifier(sql);
106: assertEquals("APP", tbl.getSchema());
107: assertEquals("BLOB_TEST", tbl.getTableName());
108:
109: tbl = new TableIdentifier(sql);
110: tbl.setPreserveQuotes(true);
111: assertEquals("\"APP\"", tbl.getSchema());
112: assertEquals("\"BLOB_TEST\"", tbl.getTableName());
113:
114: sql = "\"Some.Table\"";
115: tbl = new TableIdentifier(sql);
116: tbl.setPreserveQuotes(true);
117: assertEquals("\"Some.Table\"", tbl.getTableName());
118:
119: sql = "\"123\".mytable";
120: tbl = new TableIdentifier(sql);
121: tbl.setPreserveQuotes(true);
122: assertEquals("mytable", tbl.getTableName());
123: assertEquals("\"123\"", tbl.getSchema());
124:
125: }
126:
127: public void testCopy() {
128: String sql = "\"catalog\".\"schema\".\"table\"";
129: TableIdentifier tbl = new TableIdentifier(sql);
130: tbl.setPreserveQuotes(true);
131: assertEquals("\"catalog\"", tbl.getCatalog());
132: assertEquals("\"schema\"", tbl.getSchema());
133: assertEquals("\"table\"", tbl.getTableName());
134:
135: assertEquals(sql, tbl.getTableExpression());
136:
137: TableIdentifier t2 = tbl.createCopy();
138: assertEquals("\"catalog\"", t2.getCatalog());
139: assertEquals("\"schema\"", t2.getSchema());
140: assertEquals("\"table\"", t2.getTableName());
141: assertEquals(sql, t2.getTableExpression());
142: assertEquals(true, tbl.equals(t2));
143: }
144:
145: public void testEqualsAndHashCode() {
146: TableIdentifier one = new TableIdentifier("person");
147: TableIdentifier two = new TableIdentifier("person");
148: TableIdentifier three = new TableIdentifier("address");
149: Set<TableIdentifier> ids = new HashSet<TableIdentifier>();
150: ids.add(one);
151: ids.add(two);
152: ids.add(three);
153: assertEquals("Too many entries", 2, ids.size());
154:
155: Set<TableIdentifier> tids = new TreeSet<TableIdentifier>();
156: tids.add(one);
157: tids.add(two);
158: tids.add(three);
159: assertEquals("Too many entries", 2, tids.size());
160: }
161: }
|