1
2
3
4 package org.melati.poem.dbms.test;
5
6
7 import org.melati.poem.dbms.DbmsFactory;
8
9
10
11
12
13
14 public class SQLServerTest extends DbmsSpec {
15
16
17
18
19
20 public SQLServerTest(String name) {
21 super(name);
22 }
23
24
25
26
27
28 protected void setUp() throws Exception {
29 super.setUp();
30 }
31
32
33
34
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
46
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
55
56
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
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
80
81
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
90
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
114
115
116 public void testGetLongSqlDefinition() {
117 assertEquals("BIGINT", it.getLongSqlDefinition());
118 }
119
120
121
122
123
124 public void testSqlBooleanValueOfRaw() {
125 assertEquals("0", it.sqlBooleanValueOfRaw(Boolean.FALSE));
126 assertEquals("1", it.sqlBooleanValueOfRaw(Boolean.TRUE));
127 }
128
129
130
131
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
142
143
144
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
157
158
159 public void testSelectLimit() {
160 assertEquals("SELECT TOP 1* FROM \"USER\"", it.selectLimit("* FROM \"USER\"", 1));
161 }
162
163
164 }