1 package org.apache.torque.util;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.lang.reflect.Array;
23
24 import junit.framework.TestCase;
25
26 import org.apache.torque.adapter.DB;
27 import org.apache.torque.adapter.DBFactory;
28
29 /***
30 * Tests for SqlExpression
31 *
32 * @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a>
33 * @author <a href="mailto:seade@backstagetech.com.au">Scott Eade</a>
34 * @version $Id: SqlExpressionTest.java 618901 2008-02-06 05:17:24Z seade $
35 */
36 public class SqlExpressionTest extends TestCase
37 {
38 private DB db = null;
39
40
41 /***
42 * Constructor for SqlExpressionTest.
43 * @param arg0
44 */
45 public SqlExpressionTest(String arg0)
46 {
47 super(arg0);
48 }
49
50 /***
51 * set up environment
52 */
53 public void setUp()
54 {
55 try
56 {
57 db = DBFactory.create("mysql");
58 }
59 catch (Exception ex)
60 {
61 ex.printStackTrace();
62 }
63 }
64
65 /***
66 * Test for String buildInnerJoin(String, String)
67 */
68 public void testBuildInnerJoinStringString()
69 {
70 String result = SqlExpression.buildInnerJoin("TA.COLA", "TB.COLB");
71 assertEquals(result, "TA.COLA=TB.COLB");
72 }
73
74 /***
75 * Test for String buildInnerJoin(String, String, boolean, DB)
76 */
77 public void testBuildInnerJoinStringStringbooleanDB()
78 {
79 String result = SqlExpression.buildInnerJoin("TA.COLA", "TB.COLB",
80 true, db);
81 assertEquals(result, "TA.COLA=TB.COLB");
82 }
83
84 /***
85 * Test for String buildIn(String, Object, SqlEnum, boolean, DB)
86 */
87 public void testBuildInStringObjectSqlEnumbooleanDB()
88 {
89 String[] values = new String[] { "42", "43", "44" };
90 String result = SqlExpression.buildIn("COL", values, SqlEnum.IN,
91 true, db);
92
93
94 if (result.equals("COL IN ('43','42','44')"))
95 {
96
97 assertEquals(result, "COL IN ('43','42','44')");
98 }
99 else if (result.equals("COL IN ('42','43','44')"))
100 {
101
102 assertEquals(result, "COL IN ('42','43','44')");
103 }
104 else
105 {
106
107 assertEquals(result, "COL IN ('43','44','42')");
108 }
109 }
110
111 public void testLargeBuildInStringObjectSqlEnumbooleanDB()
112 {
113 int size = 10000;
114 String[] values = new String[size];
115 for (int i = 0; i < size; i++)
116 {
117 Array.set(values, i, String.valueOf(i));
118 }
119 long start = System.currentTimeMillis();
120 String result = SqlExpression.buildIn("COL", values, SqlEnum.IN,
121 true, db);
122 long end = System.currentTimeMillis();
123 System.out.println("large buildIn took " + (end - start) + " milliseconds");
124 }
125
126 /***
127 * Test whether LIKE clauses are built correctly.
128 */
129 public void testBuildLike()
130 {
131 String result = SqlExpression.buildLike(
132 "COL", "fre%", SqlEnum.LIKE, false, db);
133 assertEquals("COL LIKE fre%", result);
134
135 result = SqlExpression.buildLike(
136 "COL", "50////%", SqlEnum.LIKE, false, db);
137 assertEquals("COL = 50%", result);
138 }
139 }