merge -r 53370:58178
[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.CodeDom;
11 using System.CodeDom.Compiler;
12 using System.IO;
13 using System.Text;
14
15 using NUnit.Framework;
16
17 namespace MonoTests.Microsoft.CSharp
18 {
19         /// <summary>
20         /// Test ICodeGenerator's GenerateCodeFromNamespace, along with a 
21         /// minimal set CodeDom components.
22         /// </summary>
23         [TestFixture]
24         public class CodeGeneratorFromNamespaceTest : CodeGeneratorTestBase
25         {
26                 CodeNamespace codeNamespace = null;
27
28                 [SetUp]
29                 public void Init ()
30                 {
31                         InitBase ();
32                         codeNamespace = new CodeNamespace ();
33                 }
34                 
35                 protected override string Generate (CodeGeneratorOptions options)
36                 {
37                         StringWriter writer = new StringWriter ();
38                         writer.NewLine = NewLine;
39
40                         generator.GenerateCodeFromNamespace (codeNamespace, writer, options);
41                         writer.Close ();
42                         return writer.ToString ();
43                 }
44                 
45                 [Test]
46                 [ExpectedException (typeof (NullReferenceException))]
47                 public void NullNamespaceTest ()
48                 {
49                         codeNamespace = null;
50                         Generate ();
51                 }
52
53                 [Test]
54                 public void NullNamespaceNameTest ()
55                 {
56                         codeNamespace.Name = null;
57                         Assert.AreEqual ("\n", Generate ());
58                 }
59
60                 
61                 [Test]
62                 public void DefaultNamespaceTest ()
63                 {
64                         Assert.AreEqual ("\n", Generate ());
65                 }
66
67                 [Test]
68                 public void SimpleNamespaceTest ()
69                 {
70                         string code = null;
71
72                         codeNamespace.Name = "A";
73                         code = Generate ();
74                         Assert.AreEqual ("namespace A {\n    \n}\n", code, "#1");
75
76                         CodeGeneratorOptions options = new CodeGeneratorOptions ();
77                         options.BracingStyle = "C";
78                         code = Generate (options);
79                         Assert.AreEqual ("namespace A\n{\n    \n}\n", code, "#2");
80                 }
81
82                 [Test]
83                 public void InvalidNamespaceTest ()
84                 {
85                         codeNamespace.Name = "A,B";
86                         Assert.AreEqual ("namespace A,B {\n    \n}\n", Generate ());
87                 }
88
89                 [Test]
90                 public void CommentOnlyNamespaceTest ()
91                 {
92                         CodeCommentStatement comment = new CodeCommentStatement ("a");
93                         codeNamespace.Comments.Add (comment);
94                         Assert.AreEqual ("// a\n\n", Generate ());
95                 }
96         }
97 }