View Javadoc
1   /*
2    * Copyright (C) 2003-2012 David E. Berry
3    *
4    * This library is free software; you can redistribute it and/or
5    * modify it under the terms of the GNU Lesser General Public
6    * License as published by the Free Software Foundation; either
7    * version 2.1 of the License, or (at your option) any later version.
8    *
9    * This library is distributed in the hope that it will be useful,
10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   * Lesser General Public License for more details.
13   *
14   * You should have received a copy of the GNU Lesser General Public
15   * License along with this library; if not, write to the Free Software
16   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17   *
18   * A copy of the GNU Lesser General Public License may also be found at
19   * http://www.gnu.org/licenses/lgpl.txt
20   */
21  package org.synchronoss.cpo.jdbc.parser;
22  
23  import junit.framework.TestCase;
24  import org.synchronoss.cpo.parser.BoundExpressionParser;
25  
26  import java.text.ParseException;
27  import java.util.List;
28  
29  // TODO - add more junits for single quotes, double quotes, inner selects, etc
30  public class BoundExpressionParserTest extends TestCase {
31  
32    public void testSelect() {
33      try {
34        String query = "select * from table where a = ? and b = ? and c = ? and d = '0'";
35        BoundExpressionParser parser = new BoundExpressionParser();
36        parser.setExpression(query);
37        List<String> colList = parser.parse();
38  
39        assertTrue(colList.size() == 3);
40        assertTrue(colList.get(0).equals("A"));
41        assertTrue(colList.get(1).equals("B"));
42        assertTrue(colList.get(2).equals("C"));
43  
44      } catch (ParseException ex) {
45        fail(ex.getMessage());
46      }
47    }
48  
49    public void testSelectWithFunction() {
50      try {
51        String query = "select * from table where a = ? and UPPER(b) = ? and c = ? and d = '0'";
52        BoundExpressionParser parser = new BoundExpressionParser();
53        parser.setExpression(query);
54        List<String> colList = parser.parse();
55  
56        assertTrue(colList.size() == 3);
57        assertTrue(colList.get(0).equals("A"));
58        assertTrue(colList.get(1).equals("B"));
59        assertTrue(colList.get(2).equals("C"));
60  
61      } catch (ParseException ex) {
62        fail(ex.getMessage());
63      }
64    }
65  
66    public void testInsert() {
67      try {
68        String query = "insert into table(a, b, c, d) values(?, ?, ?, SYSDATE)";
69        BoundExpressionParser parser = new BoundExpressionParser();
70        parser.setExpression(query);
71        List<String> colList = parser.parse();
72  
73        assertTrue(colList.size() == 3);
74        assertTrue(colList.get(0).equals("A"));
75        assertTrue(colList.get(1).equals("B"));
76        assertTrue(colList.get(2).equals("C"));
77  
78      } catch (ParseException ex) {
79        fail(ex.getMessage());
80      }
81    }
82  }