2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System / Test / Microsoft.CSharp / CodeGeneratorFromNamespaceTest.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         ///
20         /// <summary>
21         ///     Test ICodeGenerator's GenerateCodeFromNamespace, along with a 
22         ///     minimal set CodeDom components.
23         /// </summary>
24         ///
25         [TestFixture]
26         public class CodeGeneratorFromNamespaceTest : CodeGeneratorTestBase
27         {
28                 CodeNamespace codeNamespace = null;
29
30                 [SetUp]
31                 public void Init ()
32                 {
33                         InitBase ();
34                         codeNamespace = new CodeNamespace ();
35                 }
36                 
37                 protected override void Generate ()
38                 {
39                         generator.GenerateCodeFromNamespace (codeNamespace, writer, options);
40                         writer.Close ();
41                 }
42                 
43                 [Test]
44                 [ExpectedException (typeof (NullReferenceException))]
45                 public void NullNamespaceTest ()
46                 {
47                         codeNamespace = null;
48                         Generate ();
49                 }
50
51                 [Test]
52                 public void NullNamespaceNameTest ()
53                 {
54                         codeNamespace.Name = null;
55                         Generate ();
56                         Assertion.AssertEquals ("\n", Code);
57                 }
58
59                 
60                 [Test]
61                 public void DefaultNamespaceTest ()
62                 {
63                         Generate ();
64                         Assertion.AssertEquals ("\n", Code);
65                 }
66
67                 [Test]
68                 [Ignore ("This only differs in 4 spaces")]
69                 public void SimpleNamespaceTest ()
70                 {
71                         codeNamespace.Name = "A";
72                         Generate();
73                         Assertion.AssertEquals ("namespace A {\n    \n}\n", Code);
74                 }
75
76                 [Test]
77                 [Ignore ("This only differs in 4 spaces")]
78                 public void InvalidNamespaceTest ()
79                 {
80                         codeNamespace.Name = "A,B";
81                         Generate();
82                         Assertion.AssertEquals ("namespace A,B {\n    \n}\n", Code);
83                 }
84
85
86                 [Test]
87                 public void CommentOnlyNamespaceTest ()
88                 {
89                         CodeCommentStatement comment = new CodeCommentStatement ("a");
90                         codeNamespace.Comments.Add (comment);
91                         Generate ();
92                         Assertion.AssertEquals ("// a\n\n", Code);
93                 }
94         }
95
96         // FIXME implement tests for these methods:
97         // GenerateCodeFromType
98         // GenerateCodeFromExpression
99         // GenerateCodeFromStatement
100
101 }
102