Clover.NET coverage report - Coverage for s2dao.net

Coverage timestamp: 2006年5月18日 15:09:15

File Stats: LOC: 459   Methods: 23
NCLOC: 371 Classes: 1
 
Source File Conditionals Statements Methods TOTAL
Seasar.Dao.Tests.Parser\SqlParserTest.cs - 99.3% 100.0% 99.4%
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 System.Collections;
21   using Seasar.Dao;
22   using Seasar.Dao.Parser;
23   using Seasar.Dao.Node;
24   using Seasar.Dao.Context;
25   using NUnit.Framework;
26  
27   namespace Seasar.Dao.Tests.Parser
28   {
29   /// <summary>
30   /// SqlParserTest の概要の説明です。
31   /// </summary>
32   [TestFixture]
33   public class SqlParserTest
34   {
35  
36 1 public SqlParserTest() {
37   }
38  
39 1 [Test]
40   public void TestParse() {
41 1 String sql = "SELECT * FROM emp";
42 1 ISqlParser parser = new SqlParserImpl(sql);
43 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
44 1 INode node = parser.Parse();
45 1 node.Accept(ctx);
46 1 Assert.AreEqual(sql, ctx.Sql,"1");
47   }
48  
49 1 [Test]
50   public void TestParseEndSemicolon() {
51 1 parseEndSemicolon(";");
52 1 parseEndSemicolon(";\t");
53 1 parseEndSemicolon("; ");
54   }
55  
56   //黄色になってしまうのでメソッド名変更
57 3 private void parseEndSemicolon(String endChar) {
58 3 String sql = "SELECT * FROM emp";
59 3 ISqlParser parser = new SqlParserImpl(sql + endChar);
60 3 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
61 3 INode node = parser.Parse();
62 3 node.Accept(ctx);
63 3 Assert.AreEqual(sql, ctx.Sql,"1");
64   }
65  
66 1 [Test, ExpectedException(typeof(TokenNotClosedRuntimeException))]
67   public void TestCommentEndNotFound()
68   {
69 1 String sql = "SELECT * FROM emp/*hoge";
70 1 ISqlParser parser = new SqlParserImpl(sql);
71 1 parser.Parse();
72 0 Assert.Fail("1");
73   }
74  
75 1 [Test]
76   public void TestParseBindVariable() {
77 1 String sql = "SELECT * FROM emp WHERE job = /*job*/'CLERK' AND deptno = /*deptno*/20";
78   //java版とは実装を変えています
79   //String sql2 = "SELECT * FROM emp WHERE job = ? AND deptno = ?";
80 1 String sql2 = "SELECT * FROM emp WHERE job = @job AND deptno = @deptno";
81 1 String sql3 = "SELECT * FROM emp WHERE job = ";
82 1 String sql4 = " AND deptno = ";
83 1 ISqlParser parser = new SqlParserImpl(sql);
84 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
85 1 String job = "CLERK";
86 1 Int32 deptno = 20;
87 1 ctx.AddArg("job", job, job.GetType());
88 1 ctx.AddArg("deptno", deptno, deptno.GetType());
89 1 INode root = parser.Parse();
90 1 root.Accept(ctx);
91   //System.out.println(ctx.Sql);
92 1 Assert.AreEqual(sql2, ctx.Sql,"1");
93 1 Object[] vars = ctx.BindVariables;
94 1 Assert.AreEqual( 2, vars.Length,"2");
95 1 Assert.AreEqual( job, vars[0],"3");
96 1 Assert.AreEqual( deptno, vars[1],"4");
97 1 Assert.AreEqual( 4, root.ChildSize,"5");
98 1 SqlNode sqlNode = (SqlNode) root.GetChild(0);
99 1 Assert.AreEqual( sql3, sqlNode.Sql,"6");
100 1 BindVariableNode varNode = (BindVariableNode) root.GetChild(1);
101 1 Assert.AreEqual( "job", varNode.Expression,"7");
102 1 SqlNode sqlNode2 = (SqlNode) root.GetChild(2);
103 1 Assert.AreEqual( sql4, sqlNode2.Sql,"8");
104 1 BindVariableNode varNode2 = (BindVariableNode) root.GetChild(3);
105 1 Assert.AreEqual( "deptno", varNode2.Expression,"9");
106   }
107  
108 1 [Test]
109   public void TestParseBindVariable2() {
110 1 String sql = "SELECT * FROM emp WHERE job = /* job*/'CLERK'";
111 1 String sql2 = "SELECT * FROM emp WHERE job = 'CLERK'";
112 1 String sql3 = "SELECT * FROM emp WHERE job = ";
113 1 String sql4 = "'CLERK'";
114 1 ISqlParser parser = new SqlParserImpl(sql);
115 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
116 1 INode root = parser.Parse();
117 1 root.Accept(ctx);
118   //System.out.println(ctx.Sql);
119 1 Assert.AreEqual(sql2, ctx.Sql,"1");
120 1 Assert.AreEqual(2,root.ChildSize,"2");
121 1 SqlNode sqlNode = (SqlNode) root.GetChild(0);
122 1 Assert.AreEqual(sql3, sqlNode.Sql,"3");
123 1 SqlNode sqlNode2 = (SqlNode) root.GetChild(1);
124 1 Assert.AreEqual(sql4, sqlNode2.Sql,"4");
125   }
126  
127 1 [Test]
128   public void TestParseWhiteSpace() {
129 1 String sql = "SELECT * FROM emp WHERE empno = /*empno*/1 AND 1 = 1";
130   //String sql2 = "SELECT * FROM emp WHERE empno = ? AND 1 = 1";
131 1 String sql2 = "SELECT * FROM emp WHERE empno = @empno AND 1 = 1";
132 1 String sql3 = " AND 1 = 1";
133 1 ISqlParser parser = new SqlParserImpl(sql);
134 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
135 1 Int32 empno = 7788;
136 1 ctx.AddArg("empno", empno, empno.GetType());
137 1 INode root = parser.Parse();
138 1 root.Accept(ctx);
139   //System.out.println(ctx.Sql);
140 1 Assert.AreEqual(sql2, ctx.Sql,"1");
141 1 SqlNode sqlNode = (SqlNode) root.GetChild(2);
142 1 Assert.AreEqual(sql3, sqlNode.Sql,"2");
143   }
144  
145 1 [Test]
146   public void TestParseIf() {
147 1 String sql = "SELECT * FROM emp/*IF job != null*/ WHERE job = /*job*/'CLERK'/*END*/";
148   //String sql2 = "SELECT * FROM emp WHERE job = ?";
149 1 String sql2 = "SELECT * FROM emp WHERE job = @job";
150 1 String sql3 = "SELECT * FROM emp";
151 1 ISqlParser parser = new SqlParserImpl(sql);
152 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
153 1 String job = "CLERK";
154 1 ctx.AddArg("job", job, job.GetType());
155 1 INode root = parser.Parse();
156 1 root.Accept(ctx);
157   //System.out.println(ctx.Sql);
158 1 Assert.AreEqual(sql2, ctx.Sql,"1");
159 1 Object[] vars = ctx.BindVariables;
160 1 Assert.AreEqual(1, vars.Length,"2");
161 1 Assert.AreEqual(job, vars[0],"3");
162 1 Assert.AreEqual(2, root.ChildSize,"4");
163 1 SqlNode sqlNode = (SqlNode) root.GetChild(0);
164 1 Assert.AreEqual(sql3, sqlNode.Sql,"5");
165 1 IfNode ifNode = (IfNode) root.GetChild(1);
166 1 Assert.AreEqual("self.GetArg('job') != null", ifNode.Expression,"6");
167 1 Assert.AreEqual(2, ifNode.ChildSize,"7");
168 1 SqlNode sqlNode2 = (SqlNode) ifNode.GetChild(0);
169 1 Assert.AreEqual(" WHERE job = ", sqlNode2.Sql,"8");
170 1 BindVariableNode varNode = (BindVariableNode) ifNode.GetChild(1);
171 1 Assert.AreEqual("job", varNode.Expression,"9");
172 1 ICommandContext ctx2 = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
173 1 root.Accept(ctx2);
174   //System.out.println(ctx2.Sql);
175 1 Assert.AreEqual(sql3, ctx2.Sql,"10");
176   }
177  
178 1 [Test]
179   public void TestParseIf2() {
180 1 String sql = "/*IF aaa != null*/aaa/*IF bbb != null*/bbb/*END*//*END*/";
181 1 ISqlParser parser = new SqlParserImpl(sql);
182 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
183 1 INode root = parser.Parse();
184 1 root.Accept(ctx);
185   //System.out.println("[" + ctx.Sql + "]");
186 1 Assert.AreEqual("", ctx.Sql,"1");
187 1 ctx.AddArg("aaa", null, typeof(String));
188 1 ctx.AddArg("bbb", "hoge", typeof(String));
189 1 root.Accept(ctx);
190   //System.out.println("[" + ctx.Sql + "]");
191 1 Assert.AreEqual("", ctx.Sql,"2");
192 1 ctx.AddArg("aaa", "hoge", typeof(String));
193 1 root.Accept(ctx);
194   //System.out.println("[" + ctx.Sql + "]");
195 1 Assert.AreEqual("aaabbb", ctx.Sql,"3");
196 1 ICommandContext ctx2 = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
197 1 ctx2.AddArg("aaa", "hoge", typeof(String));
198 1 ctx2.AddArg("bbb", null, typeof(String));
199 1 root.Accept(ctx2);
200   //System.out.println("[" + ctx2.Sql + "]");
201 1 Assert.AreEqual("aaa", ctx2.Sql,"4");
202   }
203  
204 1 [Test]
205   public void TestParseElse() {
206 1 String sql = "SELECT * FROM emp WHERE /*IF job != null*/job = /*job*/'CLERK'-- ELSE job is null/*END*/";
207 1 string sql2 = "SELECT * FROM emp WHERE job = @job";
208 1 String sql3 = "SELECT * FROM emp WHERE job is null";
209 1 ISqlParser parser = new SqlParserImpl(sql);
210 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
211 1 String job = "CLERK";
212 1 ctx.AddArg("job", job, job.GetType());
213 1 INode root = parser.Parse();
214 1 root.Accept(ctx);
215   //System.out.println("[" + ctx.Sql + "]");
216 1 Assert.AreEqual(sql2, ctx.Sql,"1");
217 1 Object[] vars = ctx.BindVariables;
218 1 Assert.AreEqual(1, vars.Length,"2");
219 1 Assert.AreEqual(job, vars[0],"3");
220 1 ICommandContext ctx2 = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
221 1 root.Accept(ctx2);
222   //System.out.println("[" + ctx2.Sql + "]");
223 1 Assert.AreEqual(sql3, ctx2.Sql,"4");
224   }
225  
226 1 [Test]
227   public void TestParseElse2() {
228 1 String sql = "/*IF false*/aaa--ELSE bbb = /*bbb*/123/*END*/";
229 1 ISqlParser parser = new SqlParserImpl(sql);
230 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
231 1 Int32 bbb = 123;
232 1 ctx.AddArg("bbb", bbb, bbb.GetType());
233 1 INode root = parser.Parse();
234 1 root.Accept(ctx);
235   //System.out.println("[" + ctx.Sql + "]");
236 1 Assert.AreEqual("bbb = @bbb", ctx.Sql,"1");
237 1 Object[] vars = ctx.BindVariables;
238 1 Assert.AreEqual(1, vars.Length,"2");
239 1 Assert.AreEqual(bbb, vars[0],"3");
240   }
241  
242 1 [Test]
243   public void TestParseElse3() {
244 1 String sql = "/*IF false*/aaa--ELSE bbb/*IF false*/ccc--ELSE ddd/*END*//*END*/";
245 1 ISqlParser parser = new SqlParserImpl(sql);
246 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
247 1 INode root = parser.Parse();
248 1 root.Accept(ctx);
249   //System.out.println("[" + ctx.Sql + "]");
250 1 Assert.AreEqual("bbbddd", ctx.Sql,"1");
251   }
252  
253 1 [Test]
254   public void TestElse4() {
255 1 String sql = "SELECT * FROM emp/*BEGIN*/ WHERE /*IF false*/aaa-- ELSE AND deptno = 10/*END*//*END*/";
256 1 String sql2 = "SELECT * FROM emp WHERE deptno = 10";
257 1 ISqlParser parser = new SqlParserImpl(sql);
258 1 INode root = parser.Parse();
259 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
260 1 root.Accept(ctx);
261   //System.out.println(ctx.Sql);
262 1 Assert.AreEqual(sql2, ctx.Sql,"1");
263   }
264  
265 1 [Test]
266   public void TestBegin() {
267 1 String sql = "SELECT * FROM emp/*BEGIN*/ WHERE /*IF job != null*/job = /*job*/'CLERK'/*END*//*IF deptno != null*/ AND deptno = /*deptno*/20/*END*//*END*/";
268 1 String sql2 = "SELECT * FROM emp";
269 1 String sql3 = "SELECT * FROM emp WHERE job = @job";
270 1 String sql4 = "SELECT * FROM emp WHERE job = @job AND deptno = @deptno";
271 1 String sql5 = "SELECT * FROM emp WHERE deptno = @deptno";
272 1 ISqlParser parser = new SqlParserImpl(sql);
273 1 INode root = parser.Parse();
274 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
275 1 root.Accept(ctx);
276   //System.out.println(ctx.Sql);
277 1 Assert.AreEqual(sql2, ctx.Sql,"1");
278  
279 1 ICommandContext ctx2 = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
280 1 ctx2.AddArg("job", "CLERK", typeof(String));
281 1 ctx2.AddArg("deptno", null, typeof(Int32));
282 1 root.Accept(ctx2);
283   //System.out.println(ctx2.Sql);
284 1 Assert.AreEqual(sql3, ctx2.Sql,"2");
285  
286 1 ICommandContext ctx3 = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
287 1 ctx3.AddArg("job", "CLERK", typeof(String));
288 1 ctx3.AddArg("deptno", 20, typeof(Int32));
289 1 root.Accept(ctx3);
290   //System.out.println(ctx3.Sql);
291 1 Assert.AreEqual(sql4, ctx3.Sql,"3");
292  
293 1 ICommandContext ctx4 = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
294 1 ctx4.AddArg("deptno", 20, typeof(Int32));
295 1 ctx4.AddArg("job", null, typeof(String));
296 1 root.Accept(ctx4);
297   //System.out.println(ctx4.Sql);
298 1 Assert.AreEqual(sql5, ctx4.Sql,"4");
299   }
300  
301 1 [Test]
302   public void TestBeginAnd() {
303 1 String sql = "/*BEGIN*/WHERE /*IF true*/aaa BETWEEN /*bbb*/111 AND /*ccc*/123/*END*//*END*/";
304 1 String sql2 = "WHERE aaa BETWEEN @bbb AND @ccc";
305 1 ISqlParser parser = new SqlParserImpl(sql);
306 1 INode root = parser.Parse();
307 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
308 1 ctx.AddArg("bbb", "111", typeof(String));
309 1 ctx.AddArg("ccc", "222", typeof(String));
310 1 root.Accept(ctx);
311   //System.out.println("[" + ctx.Sql + "]");
312 1 Assert.AreEqual(sql2, ctx.Sql,"1");
313   }
314  
315 1 [Test]
316   public void TestIn() {
317 1 String sql = "SELECT * FROM emp WHERE deptno IN /*deptnoList*/(10, 20) ORDER BY ename";
318   //java版とは実装を変えています
319   //String sql2 = "SELECT * FROM emp WHERE deptno IN (?, ?) ORDER BY ename";
320 1 String sql2 = "SELECT * FROM emp WHERE deptno IN (@deptnoList1, @deptnoList2) ORDER BY ename";
321 1 String sql3 = "SELECT * FROM emp WHERE deptno IN (@deptnoList1, @deptnoList2, @deptnoList3, @deptnoList4, @deptnoList5, @deptnoList6, @deptnoList7, @deptnoList8, @deptnoList9, @deptnoList10) ORDER BY ename";
322 1 ISqlParser parser = new SqlParserImpl(sql);
323 1 INode root = parser.Parse();
324 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
325 1 IList deptnoList = new ArrayList();
326 1 deptnoList.Add(10);
327 1 deptnoList.Add(20);
328 1 ctx.AddArg("deptnoList", deptnoList, typeof(IList));
329 1 root.Accept(ctx);
330   //System.out.println(ctx.Sql);
331 1 Assert.AreEqual(sql2, ctx.Sql,"1");
332 1 Object[] vars = ctx.BindVariables;
333 1 Assert.AreEqual(2, vars.Length,"2");
334 1 Assert.AreEqual(10, vars[0],"3");
335 1 Assert.AreEqual(20, vars[1],"4");
336   //追加テスト
337 1 ctx = new CommandContextImpl();
338 1 deptnoList = new ArrayList();
339 1 deptnoList.Add(10);
340 1 deptnoList.Add(20);
341 1 deptnoList.Add(20);
342 1 deptnoList.Add(20);
343 1 deptnoList.Add(20);
344 1 deptnoList.Add(20);
345 1 deptnoList.Add(20);
346 1 deptnoList.Add(20);
347 1 deptnoList.Add(20);
348 1 deptnoList.Add(100);
349 1 ctx.AddArg("deptnoList", deptnoList, typeof(IList));
350 1 root.Accept(ctx);
351 1 Assert.AreEqual(sql3, ctx.Sql,"5");
352 1 vars = ctx.BindVariables;
353 1 Assert.AreEqual(10, vars.Length,"6");
354 1 Assert.AreEqual(10, vars[0],"7");
355 1 Assert.AreEqual(100, vars[9],"8");
356  
357   }
358  
359 1 [Test]
360   public void TestIn2() {
361 1 String sql = "SELECT * FROM emp WHERE deptno IN /*deptnoList*/(10, 20) ORDER BY ename";
362   //java版とは実装を変えています
363   //String sql2 = "SELECT * FROM emp WHERE deptno IN (?, ?) ORDER BY ename";
364 1 String sql2 = "SELECT * FROM emp WHERE deptno IN (@deptnoList1, @deptnoList2) ORDER BY ename";
365 1 ISqlParser parser = new SqlParserImpl(sql);
366 1 INode root = parser.Parse();
367 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
368 1 int[] deptnoArray = {10, 20};
369 1 ctx.AddArg("deptnoList", deptnoArray, deptnoArray.GetType());
370 1 root.Accept(ctx);
371   //System.out.println(ctx.Sql);
372 1 Assert.AreEqual(sql2, ctx.Sql,"1");
373 1 Object[] vars = ctx.BindVariables;
374 1 Assert.AreEqual( 2, vars.Length,"2");
375 1 Assert.AreEqual( 10, vars[0],"3");
376 1 Assert.AreEqual( 20, vars[1],"4");
377   }
378  
379 1 [Test]
380   public void TestIn3() {
381 1 String sql = "SELECT * FROM emp WHERE ename IN /*enames*/('SCOTT','MARY') AND job IN /*jobs*/('ANALYST', 'FREE')";
382   //java版とは実装を変えています
383   //String sql2 = "SELECT * FROM emp WHERE ename IN (?, ?) AND job IN (?, ?)";
384 1 String sql2 = "SELECT * FROM emp WHERE ename IN (@enames1, @enames2) AND job IN (@jobs1, @jobs2)";
385 1 ISqlParser parser = new SqlParserImpl(sql);
386 1 INode root = parser.Parse();
387 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
388 1 String[] enames = {"SCOTT", "MARY"};
389 1 String[] jobs = {"ANALYST", "FREE"};
390 1 ctx.AddArg("enames", enames, enames.GetType());
391 1 ctx.AddArg("jobs", jobs, jobs.GetType());
392 1 root.Accept(ctx);
393   //System.out.println(ctx.Sql);
394 1 Assert.AreEqual(sql2, ctx.Sql,"1");
395 1 Object[] vars = ctx.BindVariables;
396 1 Assert.AreEqual(4, vars.Length,"2");
397 1 Assert.AreEqual("SCOTT", vars[0],"3");
398 1 Assert.AreEqual("MARY", vars[1],"4");
399 1 Assert.AreEqual("ANALYST", vars[2],"5");
400 1 Assert.AreEqual("FREE", vars[3],"6");
401   }
402  
403 1 [Test]
404   public void TestParseBindVariable3() {
405   //java版とは実装を変えています
406   //String sql = "BETWEEN sal ? AND ?";
407 1 string sql = "BETWEEN sal @p AND @p";
408 1 string sql2 = "BETWEEN sal @$1p AND @$2p";
409  
410 1 ISqlParser parser = new SqlParserImpl(sql);
411 1 INode root = parser.Parse();
412 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
413 1 ctx.AddArg("$1", 0, typeof(Int32));
414 1 ctx.AddArg("$2", 1000, typeof(Int32));
415 1 root.Accept(ctx);
416   //System.out.println(ctx.Sql);
417 1 Assert.AreEqual(sql2, ctx.Sql, "1");
418 1 Object[] vars = ctx.BindVariables;
419 1 Assert.AreEqual(2, vars.Length,"2");
420 1 Assert.AreEqual(0, vars[0],"3");
421 1 Assert.AreEqual(1000, vars[1],"4");
422   }
423  
424 1 [Test, ExpectedException(typeof(EndCommentNotFoundRuntimeException))]
425   public void TestEndNotFound()
426   {
427 1 String sql = "/*BEGIN*/";
428 1 ISqlParser parser = new SqlParserImpl(sql);
429 1 parser.Parse();
430 0 Assert.Fail("1");
431   }
432  
433 1 [Test]
434   public void TestEndParent() {
435 1 String sql = "INSERT INTO ITEM (ID, NUM) VALUES (/*id*/1, /*num*/20)";
436 1 ISqlParser parser = new SqlParserImpl(sql);
437 1 INode root = parser.Parse();
438 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
439 1 ctx.AddArg("id", 0, typeof(Int32));
440 1 ctx.AddArg("num", 1, typeof(Int32));
441 1 root.Accept(ctx);
442   //System.out.println(ctx.Sql);
443 1 Assert.AreEqual(true, ctx.Sql.EndsWith(")"),"1");
444   }
445  
446 1 [Test]
447   public void TestEmbeddedValue() {
448 1 String sql = "/*$aaa*/";
449 1 ISqlParser parser = new SqlParserImpl(sql);
450 1 INode root = parser.Parse();
451 1 ICommandContext ctx = new CommandContextImpl();//TODO:OleDbCommandContextImplもテスト
452 1 ctx.AddArg("aaa", 0, typeof(Int32));
453 1 root.Accept(ctx);
454   //System.out.println(ctx.Sql);
455 1 Assert.AreEqual("0", ctx.Sql,"1");
456   }
457   }
458   }
459