2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System / Test / Microsoft.CSharp / CodeGeneratorFromStatementTest.cs
1 //
2 // Microsoft.CSharp.* Test Cases
3 //
4 // Authors:
5 //      Erik LeBel (eriklebel@yahoo.ca)
6 //
7 // (c) 2003 Erik LeBel
8 //
9 using System;
10 using System.Text;
11 using System.CodeDom;
12 using System.CodeDom.Compiler;
13
14 using NUnit.Framework;
15
16 namespace MonoTests.Microsoft.CSharp
17 {
18         ///
19         /// <summary>
20         ///     Test ICodeGenerator's GenerateCodeFromStatement, along with a 
21         ///     minimal set CodeDom components.
22         /// </summary>
23         ///
24         [TestFixture]
25         public class CodeGeneratorFromStatementTest: CodeGeneratorTestBase
26         {
27                 CodeStatement statement = null;
28
29                 [SetUp]
30                 public void Init ()
31                 {
32                         InitBase ();
33                         statement = new CodeStatement ();
34                 }
35                 
36                 protected override void Generate ()
37                 {
38                         generator.GenerateCodeFromStatement (statement, writer, options);
39                         writer.Close ();
40                 }
41                 
42                 [Test]
43                 [ExpectedException (typeof (ArgumentException))]
44                 public void DefaultStatementTest ()
45                 {
46                         Generate ();
47                 }
48
49                 [Test]
50                 [ExpectedException (typeof (NullReferenceException))]
51                 public void NullStatementTest ()
52                 {
53                         statement = null;
54                         Generate ();
55                 }
56
57                 [Test]
58                 public void DefaultCodeCommentStatementTest ()
59                 {
60                         CodeCommentStatement commentStatement = new CodeCommentStatement ();
61                         CodeComment comment = new CodeComment ();
62                         
63                         commentStatement.Comment = comment;
64                         statement = commentStatement;
65                         
66                         Generate ();
67                         Assertion.AssertEquals ("// \n", Code);
68                 }
69
70                 [Test]
71                 public void MultiLineCodeCommentStatementTest ()
72                 {
73                         CodeCommentStatement commentStatement = new CodeCommentStatement ();
74                         CodeComment comment = new CodeComment ();
75                         
76                         comment.Text = "a\nb";
77                         commentStatement.Comment = comment;
78                         statement = commentStatement;
79                         
80                         Generate ();
81                         Assertion.AssertEquals ("// a\n//b\n", Code);
82                 }
83
84                 [Test]
85                 public void DefaultThrowExceptionStatementTest ()
86                 {
87                         CodeThrowExceptionStatement throwStatement = new CodeThrowExceptionStatement ();
88
89                         statement = throwStatement;
90
91                         Generate ();
92                         Assertion.AssertEquals ("throw;\n", Code);
93                 }
94                 
95                 /*
96                 [Test]
97                 public void ThrowExceptionStatementTest ()
98                 {
99                         CodeThrowExceptionStatement throwStatement = new CodeThrowExceptionStatement ();
100                         throwStatement.ToThrow = ... expression
101                         statement = throwStatement ();
102
103                         Generate();
104                         Assertion.AssertEquals ("", Code);
105                 }
106                 */
107                                 
108                 /*
109                 System.Object
110                    System.CodeDom.CodeObject
111                       System.CodeDom.CodeStatement
112                          System.CodeDom.CodeAssignStatement
113                          System.CodeDom.CodeAttachEventStatement
114                          - System.CodeDom.CodeCommentStatement
115                          System.CodeDom.CodeConditionStatement
116                          System.CodeDom.CodeExpressionStatement
117                          System.CodeDom.CodeGotoStatement
118                          System.CodeDom.CodeIterationStatement
119                          System.CodeDom.CodeLabeledStatement
120                          System.CodeDom.CodeMethodReturnStatement
121                          System.CodeDom.CodeRemoveEventStatement
122                          System.CodeDom.CodeSnippetStatement
123                          System.CodeDom.CodeThrowExceptionStatement
124                          System.CodeDom.CodeTryCatchFinallyStatement
125                          System.CodeDom.CodeVariableDeclarationStatement
126
127                 */
128
129                 
130                 /*
131                 [Test]
132                 public void ReferencedTest ()
133                 {
134                         codeUnit.ReferencedAssemblies.Add ("System.dll");
135                         Generate ();
136                         Assertion.AssertEquals ("", Code);
137                 }
138                 */
139         }
140 }
141