Clover.NET coverage report - Coverage for s2dao.net

Coverage timestamp: 2006年5月30日 11:48:56

File Stats: LOC: 218   Methods: 13
NCLOC: 185 Classes: 1
 
Source File Conditionals Statements Methods TOTAL
Seasar.Dao.Tests.Parser\SqlTokenizerTest.cs - 99.2% 100.0% 99.3%
coverage coverage
1   #region Copyright
2   /*
3   * Copyright 2005 the Seasar Foundation and the Others.
4   *
5   * Licensed under the Apache License, Version 2.0 (the "License");
6   * you may not use this file except in compliance with the License.
7   * You may obtain a copy of the License at
8   *
9   * http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
14   * either express or implied. See the License for the specific language
15   * governing permissions and limitations under the License.
16   */
17   #endregion
18  
19   using System;
20   using Seasar.Dao.Parser;
21   using NUnit.Framework;
22  
23   namespace Seasar.Dao.Tests.Parser
24   {
25   /// <summary>
26   /// SqlTokenizerTest の概要の説明です。
27   /// </summary>
28   [TestFixture]
29   public class SqlTokenizerTest
30   {
31 1 public SqlTokenizerTest()
32   {
33   }
34  
35 1 [Test]
36   public void TestNext()
37   {
38 1 String sql = "SELECT * FROM emp";
39 1 ISqlTokenizer tokenizer = new SqlTokenizerImpl(sql);
40 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "1");
41 1 Assert.AreEqual(sql, tokenizer.Token, "2");
42 1 Assert.AreEqual(TokenType.EOF, tokenizer.Next(), "3");
43 1 Assert.AreEqual(null, tokenizer.Token, "4");
44   }
45  
46 1 [Test, ExpectedException(typeof(TokenNotClosedRuntimeException))]
47   public void TestCommentEndNotFound()
48   {
49 1 String sql = "SELECT * FROM emp/*hoge";
50 1 ISqlTokenizer tokenizer = new SqlTokenizerImpl(sql);
51 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "1");
52 1 Assert.AreEqual("SELECT * FROM emp", tokenizer.Token, "2");
53 1 tokenizer.Next();
54 0 Assert.Fail("3");
55   }
56  
57 1 [Test]
58   public void TestBindVariable()
59   {
60 1 String sql = "SELECT * FROM emp WHERE job = /*job*/'CLER K' AND deptno = /*deptno*/20";
61 1 ISqlTokenizer tokenizer = new SqlTokenizerImpl(sql);
62 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "1");
63 1 Assert.AreEqual("SELECT * FROM emp WHERE job = ", tokenizer.Token, "2");
64 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "3");
65 1 Assert.AreEqual("job", tokenizer.Token, "4");
66 1 tokenizer.SkipToken();
67 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "5");
68 1 Assert.AreEqual(" AND deptno = ", tokenizer.Token, "6");
69 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "7");
70 1 Assert.AreEqual("deptno", tokenizer.Token, "8");
71 1 tokenizer.SkipToken();
72 1 Assert.AreEqual(TokenType.EOF, tokenizer.Next(), "9");
73   }
74  
75 1 [Test]
76   public void TestParseBindVariable2()
77   {
78 1 String sql = "SELECT * FROM emp WHERE job = /*job*/'CLERK'/**/";
79 1 ISqlTokenizer tokenizer = new SqlTokenizerImpl(sql);
80 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "1");
81 1 Assert.AreEqual("SELECT * FROM emp WHERE job = ", tokenizer.Token, "2");
82 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "3");
83 1 Assert.AreEqual("job", tokenizer.Token, "4");
84 1 tokenizer.SkipToken();
85 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "5");
86 1 Assert.AreEqual("", tokenizer.Token, "6");
87 1 Assert.AreEqual(TokenType.EOF, tokenizer.Next(), "7");
88   }
89  
90 1 [Test]
91   public void TestParseBindVariable3()
92   {
93 1 String sql = "/*job*/'CLERK',";
94 1 ISqlTokenizer tokenizer = new SqlTokenizerImpl(sql);
95 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "1");
96 1 Assert.AreEqual("job", tokenizer.Token, "2");
97 1 tokenizer.SkipToken();
98 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "3");
99 1 Assert.AreEqual(",", tokenizer.Token, "4");
100 1 Assert.AreEqual(TokenType.EOF, tokenizer.Next(), "5");
101   }
102  
103 1 [Test]
104   public void TestParseElse()
105   {
106 1 String sql = "SELECT * FROM emp WHERE /*IF job != null*/job = /*job*/'CLERK'-- ELSE job is null/*END*/";
107 1 ISqlTokenizer tokenizer = new SqlTokenizerImpl(sql);
108 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "1");
109 1 Assert.AreEqual("SELECT * FROM emp WHERE ", tokenizer.Token, "2");
110 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "3");
111 1 Assert.AreEqual("IF job != null", tokenizer.Token, "4");
112 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "5");
113 1 Assert.AreEqual("job = ", tokenizer.Token, "6");
114 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "7");
115 1 Assert.AreEqual("job", tokenizer.Token, "8");
116 1 tokenizer.SkipToken();
117 1 Assert.AreEqual(TokenType.ELSE, tokenizer.Next(), "9");
118 1 tokenizer.SkipWhitespace();
119 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "10");
120 1 Assert.AreEqual("job is null", tokenizer.Token, "11");
121 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "12");
122 1 Assert.AreEqual("END", tokenizer.Token, "13");
123 1 Assert.AreEqual(TokenType.EOF, tokenizer.Next(), "14");
124   }
125  
126 1 [Test]
127   public void TestParseElse2()
128   {
129 1 String sql = "/*IF false*/aaa -- ELSE bbb = /*bbb*/123/*END*/";
130 1 ISqlTokenizer tokenizer = new SqlTokenizerImpl(sql);
131 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "1");
132 1 Assert.AreEqual("IF false", tokenizer.Token, "2");
133 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "3");
134 1 Assert.AreEqual("aaa ", tokenizer.Token, "4");
135 1 Assert.AreEqual(TokenType.ELSE, tokenizer.Next(), "5");
136 1 tokenizer.SkipWhitespace();
137 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "6");
138 1 Assert.AreEqual("bbb = ", tokenizer.Token, "7");
139 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "8");
140 1 Assert.AreEqual("bbb", tokenizer.Token, "9");
141 1 tokenizer.SkipToken();
142 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "10");
143 1 Assert.AreEqual("END", tokenizer.Token, "11");
144 1 Assert.AreEqual(TokenType.EOF, tokenizer.Next(), "12");
145   }
146  
147 1 [Test]
148   public void TestAnd()
149   {
150 1 String sql = " AND bbb";
151 1 ISqlTokenizer tokenizer = new SqlTokenizerImpl(sql);
152 1 Assert.AreEqual(" ", tokenizer.SkipWhitespace(), "1");
153 1 Assert.AreEqual("AND", tokenizer.SkipToken(), "2");
154 1 Assert.AreEqual(" AND", tokenizer.Before, "3");
155 1 Assert.AreEqual(" bbb", tokenizer.After, "3");
156   }
157  
158 1 [Test]
159   public void TestBindVariable2()
160   {
161 1 String sql = "? abc ? def ?";
162 1 ISqlTokenizer tokenizer = new SqlTokenizerImpl(sql);
163 1 Assert.AreEqual(TokenType.BIND_VARIABLE, tokenizer.Next(), "1");
164 1 Assert.AreEqual("$1", tokenizer.Token, "2");
165 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "3");
166 1 Assert.AreEqual(" abc ", tokenizer.Token, "4");
167 1 Assert.AreEqual(TokenType.BIND_VARIABLE, tokenizer.Next(), "5");
168 1 Assert.AreEqual("$2", tokenizer.Token, "6");
169 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "7");
170 1 Assert.AreEqual(" def ", tokenizer.Token, "8");
171 1 Assert.AreEqual(TokenType.BIND_VARIABLE, tokenizer.Next(), "9");
172 1 Assert.AreEqual("$3", tokenizer.Token, "10");
173 1 Assert.AreEqual(TokenType.EOF, tokenizer.Next(), "11");
174   }
175  
176 1 [Test]
177   public void TestBindVariable3()
178   {
179 1 String sql = "abc ? def";
180 1 ISqlTokenizer tokenizer = new SqlTokenizerImpl(sql);
181 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "1");
182 1 Assert.AreEqual("abc ", tokenizer.Token, "2");
183 1 Assert.AreEqual(TokenType.BIND_VARIABLE, tokenizer.Next(), "3");
184 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "4");
185 1 Assert.AreEqual(" def", tokenizer.Token, "5");
186 1 Assert.AreEqual(TokenType.EOF, tokenizer.Next(), "6");
187   }
188  
189 1 [Test]
190   public void TestBindVariable4()
191   {
192 1 String sql = "/*IF false*/aaa--ELSE bbb = /*bbb*/123/*END*/";
193 1 ISqlTokenizer tokenizer = new SqlTokenizerImpl(sql);
194 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "1");
195 1 Assert.AreEqual("IF false", tokenizer.Token, "2");
196 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "3");
197 1 Assert.AreEqual("aaa", tokenizer.Token, "4");
198 1 Assert.AreEqual(TokenType.ELSE, tokenizer.Next(), "5");
199 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "6");
200 1 Assert.AreEqual(" bbb = ", tokenizer.Token, "7");
201 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "8");
202 1 Assert.AreEqual("bbb", tokenizer.Token, "9");
203   }
204  
205 1 [Test]
206   public void TestSkipTokenForParent()
207   {
208 1 String sql = "INSERT INTO TABLE_NAME (ID) VALUES (/*id*/20)";
209 1 ISqlTokenizer tokenizer = new SqlTokenizerImpl(sql);
210 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "1");
211 1 Assert.AreEqual(TokenType.COMMENT, tokenizer.Next(), "2");
212 1 Assert.AreEqual("20", tokenizer.SkipToken(), "3");
213 1 Assert.AreEqual(TokenType.SQL, tokenizer.Next(), "4");
214 1 Assert.AreEqual(")", tokenizer.Token, "5");
215 1 Assert.AreEqual(TokenType.EOF, tokenizer.Next(), "6");
216   }
217   }
218   }