2 // Microsoft.VisualBasic.* Test Cases
5 // Gert Driesen (drieseng@users.sourceforge.net)
11 using System.CodeDom.Compiler;
12 using System.Globalization;
16 using NUnit.Framework;
18 namespace MonoTests.Microsoft.VisualBasic
21 /// Test ICodeGenerator's GenerateCodeFromNamespace, along with a
22 /// minimal set CodeDom components.
25 public class CodeGeneratorFromNamespaceTest : CodeGeneratorTestBase
27 CodeNamespace codeNamespace = null;
33 codeNamespace = new CodeNamespace ();
36 protected override string Generate (CodeGeneratorOptions options)
38 StringWriter writer = new StringWriter ();
39 writer.NewLine = NewLine;
41 generator.GenerateCodeFromNamespace (codeNamespace, writer, options);
43 return writer.ToString ();
47 [ExpectedException (typeof (NullReferenceException))]
48 public void NullNamespaceTest ()
55 public void NullNamespaceNameTest ()
57 codeNamespace.Name = null;
58 Assert.AreEqual ("\n", Generate ());
63 public void DefaultNamespaceTest ()
65 Assert.AreEqual ("\n", Generate ());
69 public void SimpleNamespaceTest ()
71 codeNamespace.Name = "A";
72 Assert.AreEqual ("\nNamespace A\nEnd Namespace\n", Generate ());
76 public void InvalidNamespaceTest ()
78 codeNamespace.Name = "A,B";
79 Assert.AreEqual ("\nNamespace A,B\nEnd Namespace\n", Generate ());
83 public void CommentOnlyNamespaceTest ()
85 CodeCommentStatement comment = new CodeCommentStatement ("a");
86 codeNamespace.Comments.Add (comment);
87 Assert.AreEqual ("\n'a\n", Generate ());
91 public void ImportsTest ()
93 codeNamespace.Imports.Add (new CodeNamespaceImport ("System"));
94 codeNamespace.Imports.Add (new CodeNamespaceImport ("System.Collections"));
96 Assert.AreEqual (string.Format(CultureInfo.InvariantCulture,
98 "Imports System.Collections{0}" +
99 "{0}", NewLine), Generate (), "#1");
101 codeNamespace.Name = "A";
103 Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
104 "Imports System{0}" +
105 "Imports System.Collections{0}" +
108 "End Namespace{0}", NewLine), Generate (), "#2");
110 codeNamespace.Name = null;
111 codeNamespace.Comments.Add (new CodeCommentStatement ("a"));
113 Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
114 "Imports System{0}" +
115 "Imports System.Collections{0}" +
117 "'a{0}", NewLine), Generate (), "#3");
119 codeNamespace.Name = "A";
121 Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
122 "Imports System{0}" +
123 "Imports System.Collections{0}" +
127 "End Namespace{0}", NewLine), Generate (), "#4");
131 public void TypeTest ()
133 codeNamespace.Types.Add (new CodeTypeDeclaration ("Person"));
134 Assert.AreEqual (string.Format(CultureInfo.InvariantCulture,
137 "Public Class Person{0}" +
138 "End Class{0}", NewLine), Generate (), "#A1");
140 CodeGeneratorOptions options = new CodeGeneratorOptions ();
141 options.BlankLinesBetweenMembers = false;
142 Assert.AreEqual (string.Format(CultureInfo.InvariantCulture,
144 "Public Class Person{0}" +
145 "End Class{0}", NewLine), Generate (options), "#A2");
147 codeNamespace.Name = "A";
148 Assert.AreEqual (string.Format(CultureInfo.InvariantCulture,
152 " Public Class Person{0}" +
154 "End Namespace{0}", NewLine), Generate (), "#B1");
156 Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
159 " Public Class Person{0}" +
161 "End Namespace{0}", NewLine), Generate (options), "#B2");