~ubuntu-branches/ubuntu/wily/libhibernate3-java/wily-proposed

« back to all changes in this revision

Viewing changes to test/org/hibernate/test/pretty/SQLFormatterTest.java

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2007-10-14 14:43:34 UTC
  • Revision ID: james.westby@ubuntu.com-20071014144334-eamc8i0q10gs1aro
Tags: upstream-3.2.5
ImportĀ upstreamĀ versionĀ 3.2.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.hibernate.test.pretty;
 
2
 
 
3
import java.util.StringTokenizer;
 
4
 
 
5
import org.hibernate.pretty.Formatter;
 
6
import org.hibernate.junit.UnitTestCase;
 
7
 
 
8
public class SQLFormatterTest extends UnitTestCase {
 
9
 
 
10
        public SQLFormatterTest(String string) {
 
11
                super( string );
 
12
        }
 
13
 
 
14
        public void testNoLoss() {
 
15
                assertNoLoss("insert into Address (city, state, zip, \"from\") values (?, ?, ?, 'insert value')");
 
16
                assertNoLoss("delete from Address where id = ? and version = ?");
 
17
                assertNoLoss("update Address set city = ?, state=?, zip=?, version = ? where id = ? and version = ?");
 
18
                assertNoLoss("update Address set city = ?, state=?, zip=?, version = ? where id in (select aid from Person)");
 
19
                assertNoLoss("select p.name, a.zipCode, count(*) from Person p left outer join Employee e on e.id = p.id and p.type = 'E' and (e.effective>? or e.effective<?) join Address a on a.pid = p.id where upper(p.name) like 'G%' and p.age > 100 and (p.sex = 'M' or p.sex = 'F') and coalesce( trim(a.street), a.city, (a.zip) ) is not null order by p.name asc, a.zipCode asc");
 
20
                assertNoLoss("select ( (m.age - p.age) * 12 ), trim(upper(p.name)) from Person p, Person m where p.mother = m.id and ( p.age = (select max(p0.age) from Person p0 where (p0.mother=m.id)) and p.name like ? )");
 
21
                assertNoLoss("select * from Address a join Person p on a.pid = p.id, Person m join Address b on b.pid = m.id where p.mother = m.id and p.name like ?");
 
22
                assertNoLoss("select case when p.age > 50 then 'old' when p.age > 18 then 'adult' else 'child' end from Person p where ( case when p.age > 50 then 'old' when p.age > 18 then 'adult' else 'child' end ) like ?");
 
23
                assertNoLoss("/* Here we' go! */ select case when p.age > 50 then 'old' when p.age > 18 then 'adult' else 'child' end from Person p where ( case when p.age > 50 then 'old' when p.age > 18 then 'adult' else 'child' end ) like ?");
 
24
        }
 
25
 
 
26
        private void assertNoLoss(String query) {
 
27
                String formattedQuery = new Formatter(query).format();
 
28
                StringTokenizer formatted = new StringTokenizer(formattedQuery," \t\n\r\f()");
 
29
                StringTokenizer plain = new StringTokenizer(query," \t\n\r\f()");
 
30
 
 
31
                System.out.println("Original: " + query);
 
32
                System.out.println("Formatted: " + formattedQuery);
 
33
                while(formatted.hasMoreTokens() && plain.hasMoreTokens()) {
 
34
                        String plainToken = plain.nextToken();
 
35
                        String formattedToken = formatted.nextToken();
 
36
                        assertEquals("formatter did not return the same token",plainToken, formattedToken);
 
37
                }
 
38
                assertFalse(formatted.hasMoreTokens());
 
39
                assertFalse(plain.hasMoreTokens());
 
40
        }
 
41
        
 
42
                
 
43
}