1 33 package smallsql.junit; 34 35 import junit.framework.*; 36 37 import java.math.*; 38 import java.sql.*; 39 40 public class TestFunctions extends BasicTestCase{ 41 42 private TestValue testValue; 43 44 private static final String table = "table_functions"; 45 46 private static final TestValue[] TESTS = new TestValue[]{ 47 a("$3" , new BigDecimal("3.0000")), 48 a("$-3.1" , new BigDecimal("-3.1000")), 49 a("-$3.2" , new BigDecimal("-3.2000")), 50 a("1 + 2" , new Integer (3)), 51 a("3 * 2" , new Integer (6)), 52 a("Top 1 4 / 2" , new Integer (2)), 53 a("7/3" , new Integer (2)), 54 a("5 - 2" , new Integer (3)), 55 a("- aint" , new Integer (120)), 56 a("5 - - 2" , new Integer (7)), 57 a("5 - - - 2" , new Integer (3)), 58 a("-.123E-1" , new Double ("-0.0123")), 59 a(".123E-1" , new Double ("0.0123")), 60 a("123e-1" , new Double ("12.3")), 61 a("123E1" , new Double ("1230")), 62 a("2*5+2" , new Integer ("12")), 63 a("'a''b'" , "a'b"), 64 a("'a\"b'" , "a\"b"), 65 a("~1" , new Integer (-2)), 66 a("abs(-5)" , new Integer (5)), 67 a("abs(aint)" , new Integer (120)), 68 a("abs("+table+".aint)" , new Integer (120)), 69 a("abs(null)" , null), 70 a("abs(cast(5 as money))" , new BigDecimal("5.0000")), 71 a("abs(cast(-5 as money))" , new BigDecimal("5.0000")), 72 a("abs(cast(-5 as numeric(4,2)))" , new BigDecimal("5.00")), 73 a("abs(cast(5 as real))" , new Float (5)), 74 a("abs(cast(-5 as real))" , new Float (5)), 75 a("abs(cast(-5 as float))" , new Double (5)), 76 a("abs(cast(5 as double))" , new Double (5)), 77 a("abs(cast(5 as smallint))",new Integer (5)), 78 a("abs(cast(-5 as bigint))", new Long (5)), 79 a("abs(cast(5 as bigint))", new Long (5)), 80 a("convert(money, abs(-5))", new BigDecimal("5.0000")), 81 a("convert(varchar(30), 11)" , "11"), 82 a("convert(varchar(30), null)" , null), 83 a("convert(varchar(1), 12)" , "1"), 84 a("convert(char(5), 11)" , "11 "), 85 a("convert(longvarchar, {d '1999-10-12'})" , "1999-10-12"), 86 a("convert(binary(5), '11')" , new byte[]{'1','1',0,0,0}), 87 a("convert(binary(5), null)" , null), 88 a("convert(varbinary(5), 11)" , new byte[]{0,0,0,11}), 89 a("convert(longvarbinary, '11')", new byte[]{'1','1'}), 90 a("convert(bit, 1)" , Boolean.TRUE), 91 a("convert(bit, false)" , Boolean.FALSE), 92 a("convert(boolean, 0)" , Boolean.FALSE), 93 a("convert(varchar(30), convert(bit, false))" , "0"), 94 a("convert(varchar(30), convert(boolean, 0))" , "false"), 95 a("convert(bigint, 11)" , new Long (11)), 96 a("convert(int, 11)" , new Integer (11)), 97 a("{fn convert(11, Sql_integer)}" , new Integer (11)), 98 a("convert(integer, 11)" , new Integer (11)), 99 a("convert(smallint, 123456789)", new Integer ((short)123456789)), 100 a("convert(tinyint, 123456789)" , new Integer (123456789 & 0xFF)), 101 a("convert(date, '1909-10-12')" , Date.valueOf("1909-10-12")), 102 a("convert(date, null)" , null), 103 a("convert(date, {ts '1999-10-12 15:14:13.123456'})" , Date.valueOf("1999-10-12")), 104 a("convert(date, now())" , Date.valueOf( new Date(System.currentTimeMillis()).toString()) ), 105 a("curdate()" , Date.valueOf( new Date(System.currentTimeMillis()).toString()) ), 106 a("hour(curtime())" , new Integer (new Time(System.currentTimeMillis()).getHours()) ), 107 a("minute({t '10:11:12'})" , new Integer (11) ), 108 a("month( {ts '1899-10-12 15:14:13.123456'})" , new Integer (10)), 109 a("convert(time, '15:14:13')" , Time.valueOf("15:14:13")), 110 a("convert(time, null)" , null), 111 a("convert(timestamp, '1999-10-12 15:14:13.123456')" , Timestamp.valueOf("1999-10-12 15:14:13.123")), 112 a("convert(varchar(30), {d '1399-10-12 3:14:13'}, -1)" , "1399-10-12"), 113 a("convert(varchar(30), {ts '1999-10-12 3:14:13.12'}, 99)" , "1999-10-12 03:14:13.12"), 114 a("convert(varchar(30), {ts '1999-10-12 0:14:13.123456'}, 0)" , "Okt 12 1999 12:14AM"), 115 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 1)" , "10/12/99"), 116 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 2)" , "99.10.12"), 117 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 3)" , "12/10/99"), 118 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 4)" , "12.10.99"), 119 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 5)" , "12-10-99"), 120 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 6)" , "12 Okt 99"), 121 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 7)" , "Okt 12, 99"), 122 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 8)" , "15:14:13"), 123 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 9)" , "Okt 12 1999 03:14:13:123PM"), 124 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 10)" , "10-12-99"), 125 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 11)" , "99/10/12"), 126 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 12)" , "991012"), 127 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 13)" , "12 Okt 1999 15:14:13:123"), 128 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 14)" , "15:14:13:123"), 129 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 20)" , "1999-10-12 15:14:13"), 130 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 21)" , "1999-10-12 15:14:13.123"), 131 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 100)" , "Okt 12 1999 03:14PM"), 132 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 101)" , "10/12/1999"), 133 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 102)" , "1999.10.12"), 134 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 103)" , "12/10/1999"), 135 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 104)" , "12.10.1999"), 136 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 105)" , "12-10-1999"), 137 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 106)" , "12 Okt 1999"), 138 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 107)" , "Okt 12, 1999"), 139 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 108)" , "15:14:13"), 140 a("convert(varchar(30), {ts '1999-10-12 3:14:13.123456'}, 109)" , "Okt 12 1999 03:14:13:123AM"), 141 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 109)" , "Okt 12 1999 03:14:13:123PM"), 142 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 110)" , "10-12-1999"), 143 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 111)" , "1999/10/12"), 144 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 112)" , "19991012"), 145 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 113)" , "12 Okt 1999 15:14:13:123"), 146 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 114)" , "15:14:13:123"), 147 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 120)" , "1999-10-12 15:14:13"), 148 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 121)" , "1999-10-12 15:14:13.123"), 149 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 126)" , "1999-10-12T15:14:13.123"), 150 a("convert(varchar(30), {ts '1999-10-12 3:14:13.123456'}, 130)" , "12 Okt 1999 03:14:13:123AM"), 151 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 130)" , "12 Okt 1999 03:14:13:123PM"), 152 a("convert(varchar(30), {ts '1999-10-12 15:14:13.123456'}, 131)" , "12/10/99 15:14:13:123"), 153 a("convert(timestamp, null)" , null), 154 a("convert(real, 11)" , new Float (11)), 155 a("convert(real, null)" , null), 156 a("convert(float, 11.0)" , new Double (11)), 157 a("convert(double, '11')" , new Double (11)), 158 a("-convert(decimal, '11.123456')" , new BigDecimal("-11")), 159 a("-convert(decimal(38,6), '11.123456')" , new BigDecimal("-11.123456")), 160 a("convert(decimal(38,6), '11.123456') + 1" , new BigDecimal("12.123456")), 161 a("convert(decimal(38,6), '11.123456') - 1" , new BigDecimal("10.123456")), 162 a("convert(decimal(12,2), '11.0000') * 1" , new BigDecimal("11.00")), 163 a("convert(decimal(12,2), '11.0000') * convert(decimal(12,2), 1)" , new BigDecimal("11.0000")), 164 a("convert(decimal(12,2), '11.0000') / 1" , new BigDecimal("11.0000000")), a("convert(decimal(12,0), 11) / convert(decimal(12,2), 1)" , new BigDecimal("11.000000")), a("convert(money, -10000 / 10000.0)" , new BigDecimal("-1.0000")), a("-convert(money, '11.123456')" , new BigDecimal("-11.1235")), 168 a("-convert(smallmoney, '11.123456')" , new BigDecimal("-11.1235")), 169 a("convert(uniqueidentifier, 0x12345678901234567890)" , "78563412-1290-5634-7890-000000000000"), 170 a("convert(uniqueidentifier, '78563412-1290-5634-7890-000000000000')" , "78563412-1290-5634-7890-000000000000"), 171 a("convert(binary(16), convert(uniqueidentifier, 0x12345678901234567890))" , new byte[]{0x12,0x34,0x56,0x78,(byte)0x90,0x12,0x34,0x56,0x78,(byte)0x90,0,0,0,0,0,0}), 172 a("Timestampdiff(day, {d '2004-10-12'}, {d '2004-10-14'})" , new Integer (2)), 173 a("Timestampdiff(SQL_TSI_DAY, {d '2004-10-12'}, {d '2004-10-15'})" , new Integer (3)), 174 a("Timestampdiff(d, {d '2004-10-12'}, {d '2004-10-16'})" , new Integer (4)), 175 a("Timestampdiff(dd, {d '2004-10-12'}, {d '2004-10-17'})" , new Integer (5)), 176 a("Timestampdiff(SQL_TSI_YEAR,{d '2000-10-12'}, {d '2005-10-17'})" , new Integer (5)), 177 a("Timestampdiff(year, {d '2000-10-12'}, {d '2005-10-17'})" , new Integer (5)), 178 a("Timestampdiff(SQL_TSI_QUARTER,{d '2000-10-12'}, {d '2005-10-17'})" , new Integer (20)), 179 a("Timestampdiff(quarter, {d '2000-10-12'}, {d '2005-10-17'})" , new Integer (20)), 180 a("Timestampdiff(SQL_TSI_MONTH, {d '2004-10-12'}, {d '2005-11-17'})" , new Integer (13)), 181 a("Timestampdiff(month, {d '2004-10-12'}, {d '2005-11-17'})" , new Integer (13)), 182 a("Timestampdiff(SQL_TSI_WEEK, {d '2004-10-09'}, {d '2004-10-12'})" , new Integer (1)), 183 a("Timestampdiff(week, {d '2004-10-09'}, {d '2004-10-12'})" , new Integer (1)), 184 a("Timestampdiff(SQL_TSI_HOUR, {d '2004-10-12'}, {d '2004-10-13'})" , new Integer (24)), 185 a("Timestampdiff(hour, {d '2004-10-12'}, {d '2004-10-13'})" , new Integer (24)), 186 a("Timestampdiff(SQL_TSI_MINUTE,{t '10:10:10'}, {t '11:11:11'})" , new Integer (61)), 187 a("Timestampdiff(minute, {t '10:10:10'}, {t '11:11:11'})" , new Integer (61)), 188 a("Timestampdiff(SQL_TSI_SECOND,{t '00:00:10'}, {t '00:10:11'})" , new Integer (601)), 189 a("Timestampdiff(second, {t '00:00:10'}, {t '00:10:11'})" , new Integer (601)), 190 a("Timestampdiff(SQL_TSI_FRAC_SECOND,{ts '2004-10-12 00:00:10.1'}, {ts '2004-10-12 00:00:10.2'})" , new Integer (100)), 191 a("Timestampdiff(millisecond,{ts '2004-10-12 00:00:10.1'}, {ts '2004-10-12 00:00:10.2'})" , new Integer (100)), 192 a("{fn TimestampAdd(SQL_TSI_YEAR, 1, {d '2004-10-17'})}" , Timestamp.valueOf("2005-10-17 00:00:00.0")), 193 a("{fn TimestampAdd(SQL_TSI_QUARTER, 1, {d '2004-10-17'})}" , Timestamp.valueOf("2005-01-17 00:00:00.0")), 194 a("{fn TimestampAdd(SQL_TSI_MONTH, 1, {d '2004-10-17'})}" , Timestamp.valueOf("2004-11-17 00:00:00.0")), 195 a("{fn TimestampAdd(SQL_TSI_WEEK, 1, {d '2004-10-17'})}" , Timestamp.valueOf("2004-10-24 00:00:00.0")), 196 a("{fn TimestampAdd(SQL_TSI_HOUR, 1, {d '2004-10-17'})}" , Timestamp.valueOf("2004-10-17 01:00:00.0")), 197 a("{fn TimestampAdd(SQL_TSI_MINUTE, 61, {d '2004-10-17'})}" , Timestamp.valueOf("2004-10-17 01:01:00.0")), 198 a("{fn TimestampAdd(SQL_TSI_SECOND, 61, {d '2004-10-17'})}" , Timestamp.valueOf("2004-10-17 00:01:01.0")), 199 a("{fn TimestampAdd(SQL_TSI_FRAC_SECOND,1,{d '2004-10-17'})}" , Timestamp.valueOf("2004-10-17 00:00:00.001")), 200 a("Timestampdiff(second, null, {t '00:10:11'})" , null), 201 a("Timestampdiff(second, {t '00:10:11'}, null)" , null), 202 a("TimestampAdd(year, 1, null)" , null), 203 a("DayOfWeek({d '2006-02-16'})" , new Integer (4)), 204 a("DayOfWeek({d '2006-02-19'})" , new Integer (7)), 205 a("DayOfYear({d '2004-01-01'})" , new Integer (1)), 206 a("DayOfYear({d '2004-02-29'})" , new Integer (60)), 207 a("DayOfYear({d '2004-03-01'})" , new Integer (61)), 208 a("DayOfYear({d '2004-12-31'})" , new Integer (366)), 209 a("DayOfMonth({d '1904-07-17'})" , new Integer (17)), 210 a("locate('ae', 'QWAERAE')" , new Integer (3)), 211 a("locate('ae', 'QWAERAE', 3)" , new Integer (3)), 212 a("locate('ae', 'QWAERAE', 4)" , new Integer (6)), 213 a("locate('ae', 'QWAERAE', null)" , new Integer (3)), 214 a("locate(null, 'QWAERAE', 4)" , null), 215 a("locate('ae', null, 4)" , null), 216 a("{d '2004-10-12'}" , java.sql.Date.valueOf("2004-10-12")), 217 a("{ts '1999-10-12 15:14:13.123'}" , Timestamp.valueOf("1999-10-12 15:14:13.123")), 218 a("{t '15:14:13'}" , Time.valueOf("15:14:13")), 219 a("{fn length('abc')}", new Integer (3)), 220 a("{fn length('abc ')}", new Integer (3)), 221 a("{fn length(null)}", null), 222 a("{fn Right('qwertzu', 3)}", "tzu"), 223 a("{fn Right('qwertzu', 13)}", "qwertzu"), 224 a("cast( Right('1234', 2) as real)", new Float (34)), 225 a("cast( Right('1234', 2) as smallint)",new Integer (34)), 226 a("cast( Right('1234', 2) as boolean)", Boolean.TRUE), 227 a("right(0x1234567890, 2)", new byte[]{0x78,(byte)0x90}), 228 a("right(null, 2)", null), 229 a("left(null, 2)", null), 230 a("left('abcd', 2)", "ab"), 231 a("left(0x1234567890, 2)", new byte[]{0x12,(byte)0x34}), 232 a("cast({fn SubString('ab2.3qw', 3, 3)} as double)", new Double (2.3)), 233 a("subString('qwert', 99, 2)", ""), 234 a("{fn SubString(0x1234567890, 0, 99)}",new byte[]{0x12,0x34,0x56,0x78,(byte)0x90}), 235 a("{fn SubString(0x1234567890, 2, 2)}", new byte[]{0x34, 0x56}), 236 a("{fn SubString(0x1234567890, 99, 2)}", new byte[]{}), 237 a("SubString(null, 99, 2)", null), 238 a("Insert('abcd', 2, 1, 'qw')", "aqwcd"), 239 a("Insert(0x1234, 2, 0, 0x56)", new byte[]{0x12,0x56,0x34}), 240 a("lcase('Abcd')", "abcd"), 241 a("ucase('Abcd')", "ABCD"), 242 a("lcase(null)", null), 243 a("ucase(null)", null), 244 a("cast(1 as money) + SubString('a12', 2, 2)",new BigDecimal("13.0000")), 245 a("cast(1 as numeric(5,2)) + SubString('a12', 2, 2)",new BigDecimal("13.00")), 246 a("cast(1 as BigInt) + SubString('a12', 2, 2)",new Long (13)), 247 a("cast(1 as real) + SubString('a12', 2, 2)",new Float (13)), 248 a("1 + SubString('a12', 2, 2)", new Integer (13)), 249 a("1.0 + SubString('a12', 2, 2)", new Double (13)), 250 a("concat('abc', 'def')", "abcdef"), 251 a("{fn IfNull(null, 'abc')}", "abc"), 252 a("{fn IfNull('asd', 'abc')}", "asd"), 253 a("iif(true, 1, 2)", new Integer (1)), 254 a("iif(false, 1, 2)", new Integer (2)), 255 a("CASE aVarchar WHEN 'qwert' THEN 25 WHEN 'asdfg' THEN 26 ELSE null END", new Integer (25)), 256 a("CASE WHEN aVarchar='qwert' THEN 'uu' WHEN aVarchar='bb' THEN 'gg' ELSE 'nn' END", "uu"), 257 a("{fn Ascii('')}", null), 258 a("{fn Ascii(null)}", null), 259 a("Ascii('abc')", new Integer (97)), 260 a("{fn Char(97)}", "a"), 261 a("Char(null)", null), 262 a("$1 + Char(49)", new BigDecimal("2.0000")), 263 a("Exp(null)", null), 264 a("exp(0)", new Double (1)), 265 a("log(exp(2.4))", new Double (2.4)), 266 a("log10(10)", new Double (1)), 267 a("cos(null)", null), 268 a("cos(0)", new Double (1)), 269 a("acos(1)", new Double (0)), 270 a("sin(0)", new Double (0)), 271 a("cos(pi())", new Double (-1)), 272 a("asin(0)", new Double (0)), 273 a("asin(sin(0.5))", new Double (0.5)), 274 a("tan(0)", new Double (0)), 275 a("atan(tan(0.5))", new Double (0.5)), 276 a("atan2(0,3)", new Double (0)), 277 a("atan2(0,-3)", new Double (Math.PI)), 278 a("atn2(0,null)", null), 279 a("cot(0)", new Double (Double.POSITIVE_INFINITY)), 280 a("tan(0)", new Double (0)), 281 a("degrees(pi())", new Double (180)), 282 a("degrees(radians(50))", new Double (50)), 283 a("ceiling(123.45)", new Double (124)), 284 a("ceiling(-123.45)", new Double (-123)), 285 a("power(2, 3)", new Double (8)), 286 a("5.0 % 2", new Double (1)), 287 a("5 % 2", new Integer (1)), 288 a("mod(5, 2)", new Integer (1)), 289 a("FLOOR(123.45)", new Double (123)), 290 a("FLOOR('123.45')", new Double (123)), 291 a("FLOOR(-123.45)", new Double (-124)), 292 a("FLOOR($123.45)", new BigDecimal("123.0000")), 293 a("Rand(0)", new Double (0.730967787376657)), 294 a("ROUND(748.58, -4)", new Double (0)), 295 a("ROUND(-748.58, -2)", new Double (-700)), 296 a("ROUND('748.5876', 2)", new Double (748.59)), 297 a("Sign('748.5876')", new Integer (1)), 298 a("Sign(-2)", new Integer (-1)), 299 a("Sign(2)", new Integer (1)), 300 a("Sign(0)", new Integer (0)), 301 a("Sign(-$2)", new Integer (-1)), 302 a("Sign($2)", new Integer (1)), 303 a("Sign($0)", new Integer (0)), 304 a("Sign(cast(-2 as bigint))", new Integer (-1)), 305 a("Sign(cast(2 as bigint))", new Integer (1)), 306 a("Sign(cast(0 as bigint))", new Integer (0)), 307 a("Sign(1.0)", new Integer (1)), 308 a("Sign(0.0)", new Integer (0)), 309 a("Sign(-.1)", new Integer (-1)), 310 a("Sign(cast(0 as numeric(5)))",new Integer (0)), 311 a("Sign(null)", null), 312 a("sqrt(9)", new Double (3)), 313 a("Truncate(748.58, -4)", new Double (0)), 314 a("Truncate(-748.58, -2)", new Double (-700)), 315 a("Truncate('748.5876', 2)", new Double (748.58)), 316 a("rtrim(null)", null), 317 a("rtrim(0x0012345600)", new byte[]{0x00,0x12,0x34,0x56}), 318 a("rtrim(' abc ')", " abc"), 319 a("ltrim(null)", null), 320 a("ltrim(0x0012345600)", new byte[]{0x12,0x34,0x56,0x00}), 321 a("ltrim(' abc ')", "abc "), 322 a("space(3)", " "), 323 a("space(null)", null), 324 a("space(-3)", null), 325 a("replace('abcabc','bc','4')", "a4a4"), 326 a("replace('abcabc','bc',null)",null), 327 a("replace('abcabc','','4')", "abcabc"), 328 a("replace(0x123456,0x3456,0x77)", new byte[]{0x12,0x77}), 329 a("repeat('ab',4)", "abababab"), 330 a("repeat(null,4)", null), 331 a("repeat(0x1234,3)", new byte[]{0x12,0x34,0x12,0x34,0x12,0x34}), 332 a("DIFFERENCE('Green','Greene')",new Integer (4)), 333 a("DIFFERENCE('Green',null)", null), 334 a("soundex('Wikipedia')", "W213"), 335 }; 336 337 338 private static TestValue a(String function, Object result){ 339 TestValue value = new TestValue(); 340 value.function = function; 341 value.result = result; 342 return value; 343 } 344 345 TestFunctions(TestValue testValue){ 346 super(testValue.function); 347 this.testValue = testValue; 348 } 349 350 351 public void tearDown(){ 352 try{ 353 Connection con = AllTests.getConnection(); 354 Statement st = con.createStatement(); 355 st.execute("drop table " + table); 356 st.close(); 357 }catch(Throwable e){ 358 } 360 } 361 362 public void setUp(){ 363 tearDown(); 364 try{ 365 Connection con = AllTests.getConnection(); 366 Statement st = con.createStatement(); 367 st.execute("create table " + table + "(aInt int, aVarchar varchar(100))"); 368 st.execute("Insert into " + table + "(aInt, aVarchar) Values(-120,'qwert')"); 369 st.close(); 370 }catch(Throwable e){ 371 e.printStackTrace(); 372 } 373 } 374 375 public void runTest() throws Exception { 376 assertEqualsRsValue( testValue.result, "Select " + testValue.function + ",5 from " + table); 377 if(!testValue.function.startsWith("Top")){ 378 assertEqualsRsValue( testValue.result, "Select " + testValue.function + " from " + table + " Group By " + testValue.function); 379 } 380 } 381 382 public static Test suite() throws Exception { 383 TestSuite theSuite = new TestSuite("Functions"); 384 for(int i=0; i<TESTS.length; i++){ 385 theSuite.addTest(new TestFunctions( TESTS[i] ) ); 386 } 387 return theSuite; 388 } 389 390 private static class TestValue{ 391 String function; 392 Object result; 393 } 394 } | Popular Tags |