KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > h2 > test > unit > TestScriptReader


1 /*
2  * Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
3  * Initial Developer: H2 Group
4  */

5 package org.h2.test.unit;
6
7 import java.io.StringReader JavaDoc;
8 import java.util.Random JavaDoc;
9
10 import org.h2.test.TestBase;
11 import org.h2.util.ScriptReader;
12
13 public class TestScriptReader extends TestBase {
14
15     public void test() throws Exception JavaDoc {
16         testCommon();
17         testRandom();
18     }
19
20     private void testRandom() throws Exception JavaDoc {
21         int len = getSize(1000, 10000);
22         Random JavaDoc random = new Random JavaDoc(10);
23         for(int i=0; i<len; i++) {
24             int l = random.nextInt(10);
25             String JavaDoc[] sql = new String JavaDoc[l];
26             StringBuffer JavaDoc buff = new StringBuffer JavaDoc();
27             for(int j=0; j<l; j++) {
28                 sql[j] = randomStatement(random);
29                 buff.append(sql[j]);
30                 if(j<l - 1) {
31                     buff.append(";");
32                 }
33             }
34             String JavaDoc s = buff.toString();
35             StringReader JavaDoc reader = new StringReader JavaDoc(s);
36             ScriptReader source = new ScriptReader(reader);
37             for(int j=0; j<l; j++) {
38                 String JavaDoc e = source.readStatement();
39                 String JavaDoc c = sql[j];
40                 if(c.length() == 0 && j == l-1) {
41                     c = null;
42                 }
43                 check(e, c);
44             }
45             check(source.readStatement(), null);
46         }
47     }
48     
49     private String JavaDoc randomStatement(Random JavaDoc random) {
50         StringBuffer JavaDoc buff = new StringBuffer JavaDoc();
51         int len = random.nextInt(5);
52         for(int i=0; i<len; i++) {
53             switch(random.nextInt(10)) {
54             case 0: {
55                 int l= random.nextInt(4);
56                 String JavaDoc[] ch=new String JavaDoc[]{"\n", "\r", " ", "*", "a", "0"};
57                 for(int j=0; j<l; j++) {
58                     buff.append(ch[random.nextInt(ch.length)]);
59                 }
60                 break;
61             }
62             case 1: {
63                 buff.append('\'');
64                 int l= random.nextInt(4);
65                 String JavaDoc[] ch=new String JavaDoc[]{";", "\n", "\r", "--", "//", "/", "-", "*", "/*", "*/", "\""};
66                 for(int j=0; j<l; j++) {
67                     buff.append(ch[random.nextInt(ch.length)]);
68                 }
69                 buff.append('\'');
70                 break;
71             }
72             case 2: {
73                 buff.append('"');
74                 int l= random.nextInt(4);
75                 String JavaDoc[] ch=new String JavaDoc[]{";", "\n", "\r", "--", "//", "/", "-", "*", "/*", "*/", "\'"};
76                 for(int j=0; j<l; j++) {
77                     buff.append(ch[random.nextInt(ch.length)]);
78                 }
79                 buff.append('"');
80                 break;
81             }
82             case 3: {
83                 buff.append('-');
84                 if(random.nextBoolean()) {
85                     String JavaDoc[] ch=new String JavaDoc[]{"\n", "\r", "*", "a", " "};
86                     int l= 1 + random.nextInt(4);
87                     for(int j=0; j<l; j++) {
88                         buff.append(ch[random.nextInt(ch.length)]);
89                     }
90                 } else {
91                     buff.append('-');
92                     String JavaDoc[] ch=new String JavaDoc[]{";", "-", "//", "/*", "*/", "a"};
93                     int l= random.nextInt(4);
94                     for(int j=0; j<l; j++) {
95                         buff.append(ch[random.nextInt(ch.length)]);
96                     }
97                     buff.append('\n');
98                 }
99                 break;
100             }
101             case 4: {
102                 buff.append('/');
103                 if(random.nextBoolean()) {
104                     String JavaDoc[] ch=new String JavaDoc[]{"\n", "\r", "a", " ", "- "};
105                     int l= 1 + random.nextInt(4);
106                     for(int j=0; j<l; j++) {
107                         buff.append(ch[random.nextInt(ch.length)]);
108                     }
109                 } else {
110                     buff.append('*');
111                     String JavaDoc[] ch=new String JavaDoc[]{";", "-", "//", "/* ", "--", "\n", "\r", "a"};
112                     int l= random.nextInt(4);
113                     for(int j=0; j<l; j++) {
114                         buff.append(ch[random.nextInt(ch.length)]);
115                     }
116                     buff.append("*/");
117                 }
118                 break;
119             }
120             }
121         }
122         return buff.toString();
123     }
124
125     private void testCommon() throws Exception JavaDoc {
126         String JavaDoc s =
127             "a;';';\";\";--;\n;/*;\n*/;//;\na;";
128         StringReader JavaDoc reader = new StringReader JavaDoc(s);
129         ScriptReader source = new ScriptReader(reader);
130         check(source.readStatement(),"a");
131         check(source.readStatement(),"';'");
132         check(source.readStatement(),"\";\"");
133         check(source.readStatement(),"--;\n");
134         check(source.readStatement(),"/*;\n*/");
135         check(source.readStatement(),"//;\na");
136         check(source.readStatement(), null);
137     }
138
139 }
140
Popular Tags