View Javadoc
1   /**
2    * 
3    */
4   package org.melati.poem.dbms.test;
5   
6   
7   import org.melati.poem.dbms.DbmsFactory;
8   
9   /**
10   * @author timp
11   * @since 23 Jan 2007
12   *
13   */
14  public class SQLServerTest extends DbmsSpec {
15  
16    /**
17     * Constructor.
18     * @param name
19     */
20    public SQLServerTest(String name) {
21      super(name);
22    }
23  
24    /**
25     * {@inheritDoc}
26     * @see org.melati.poem.dbms.test.DbmsSpec#setUp()
27     */
28    protected void setUp() throws Exception {
29      super.setUp();
30    }
31  
32    /**
33     * {@inheritDoc}
34     * @see org.melati.poem.dbms.test.DbmsSpec#tearDown()
35     */
36    protected void tearDown() throws Exception {
37      super.tearDown();
38    }
39  
40    protected void setObjectUnderTest() {
41      it = DbmsFactory.getDbms("org.melati.poem.dbms.SQLServer");
42    }
43  
44    /**
45     * Test method for {@link org.melati.poem.dbms.Dbms#
46     * getStringSqlDefinition(java.lang.String)}.
47     */
48    public void testGetStringSqlDefinition() throws Exception {
49      assertEquals("VARCHAR(0)", it.getStringSqlDefinition(0));    
50      assertEquals("VARCHAR(2333)",  it.getStringSqlDefinition(-1));
51    }
52    
53    /**
54     * Test method for {@link org.melati.poem.dbms.Dbms#
55     * getSqlDefinition(java.lang.String)}.
56     * @throws Exception 
57     */
58    public void testGetSqlDefinition() throws Exception {
59      assertEquals("DOUBLE PRECISION", it.getSqlDefinition("DOUBLE PRECISION"));
60      assertEquals("INT8", it.getSqlDefinition("INT8"));
61      assertEquals("Big Decimal", it.getSqlDefinition("Big Decimal"));
62  
63      assertEquals("BIT", it.getSqlDefinition("BOOLEAN"));
64      assertEquals("DATETIME", it.getSqlDefinition("DATE"));
65      assertEquals("DATETIME", it.getSqlDefinition("TIMESTAMP"));
66    }
67  
68    /**
69     * Test method for {@link org.melati.poem.dbms.Dbms#melatiName(java.lang.String)}.
70     */
71    public void testMelatiName() {
72      assertEquals("name", it.melatiName("name"));
73      assertEquals(null, it.melatiName(null));
74      assertNull(it.melatiName("dtproperties"));
75    }
76  
77    
78    /**
79     * Test method for {@link org.melati.poem.dbms.Dbms#
80     * canBeIndexed(org.melati.poem.Column)}.
81     * @throws Exception 
82     */
83    public void testCanBeIndexed() throws Exception {
84      assertFalse(it.canBeIndexed(getDb().getTableInfoTable().getDescriptionColumn()));
85      assertTrue(it.canBeIndexed(getDb().getUserTable().getNameColumn()));
86    }
87  
88    /**
89     * Test method for {@link org.melati.poem.dbms.Dbms#
90     * caseInsensitiveRegExpSQL(java.lang.String, java.lang.String)}.
91     */
92    public void testCaseInsensitiveRegExpSQL() {
93      String expected = "a LIKE '%b%'";
94      String actual = it.caseInsensitiveRegExpSQL("a", "b");
95      assertEquals(expected, actual);
96    }
97  
98    public void testCaseInsensitiveRegExpSQLQuoted() {
99      String expected = "a LIKE '%b%'";
100     String actual = it.caseInsensitiveRegExpSQL("a", "\"b\"");
101     assertEquals(expected, actual);
102   }
103 
104   public void testCaseInsensitiveRegExpSQLBlank() {
105     String expected = " LIKE '%%'";
106     String actual = it.caseInsensitiveRegExpSQL("", "");
107     assertEquals(expected, actual);
108   }
109 
110   
111   
112   /**
113    * Test method for {@link org.melati.poem.dbms.Dbms#
114    * getLongSqlDefinition()}.
115    */
116   public void testGetLongSqlDefinition() {
117     assertEquals("BIGINT", it.getLongSqlDefinition());    
118   }
119 
120   /**
121    * Test method for {@link org.melati.poem.dbms.Dbms#
122    * sqlBooleanValueOfRaw(java.lang.Object)}.
123    */
124   public void testSqlBooleanValueOfRaw() {
125     assertEquals("0", it.sqlBooleanValueOfRaw(Boolean.FALSE));        
126     assertEquals("1", it.sqlBooleanValueOfRaw(Boolean.TRUE));        
127   }
128 
129   /**
130    * Test method for {@link org.melati.poem.dbms.Dbms#
131    * getBinarySqlDefinition(int)}.
132    */
133   public void testGetBinarySqlDefinition() throws Exception {
134     assertEquals("VARBINARY(0)", it.getBinarySqlDefinition(0));        
135     assertEquals("VARBINARY(MAX)", it.getBinarySqlDefinition(-1));        
136   }
137 
138   
139   
140   /**
141    * Test method for {@link org.melati.poem.dbms.Dbms#
142    * getForeignKeyDefinition(java.lang.String, java.lang.String, 
143    *                         java.lang.String, java.lang.String, 
144    *                         java.lang.String)}.
145    */
146   public void testGetForeignKeyDefinition() {
147     assertEquals(" ADD FOREIGN KEY (\"user\") REFERENCES \"user\"(\"id\") ON DELETE NO ACTION",
148             it.getForeignKeyDefinition("test", "user", "user", "id", "prevent"));
149     assertEquals(" ADD FOREIGN KEY (\"user\") REFERENCES \"user\"(\"id\") ON DELETE SET NULL",
150             it.getForeignKeyDefinition("test", "user", "user", "id", "clear"));
151     assertEquals(" ADD FOREIGN KEY (\"user\") REFERENCES \"user\"(\"id\") ON DELETE CASCADE",
152             it.getForeignKeyDefinition("test", "user", "user", "id", "delete"));
153   }
154 
155   /**
156    * Test method for {@link org.melati.poem.dbms.Dbms#
157    *    selectLimit(java.lang.String, int)}.
158    */
159   public void testSelectLimit() {
160     assertEquals("SELECT TOP 1* FROM \"USER\"", it.selectLimit("* FROM \"USER\"", 1));
161   }
162 
163 
164 }