2 // Microsoft.VisualBasic.* Test Cases
5 // Gert Driesen (drieseng@users.sourceforge.net)
11 using System.Globalization;
14 using System.CodeDom.Compiler;
16 using NUnit.Framework;
18 namespace MonoTests.Microsoft.VisualBasic
21 public class CodeGeneratorFromCompileUnitTest : CodeGeneratorTestBase
23 string codeUnitHeader = "";
24 CodeCompileUnit codeUnit = null;
26 public CodeGeneratorFromCompileUnitTest ()
30 codeUnitHeader = Code;
37 codeUnit = new CodeCompileUnit ();
40 protected override string Code {
41 get { return base.Code.Substring (codeUnitHeader.Length); }
44 protected override void Generate ()
46 generator.GenerateCodeFromCompileUnit (codeUnit, writer, options);
51 public void DefaultCodeUnitTest ()
54 Assert.AreEqual ("", Code);
58 [ExpectedException (typeof (NullReferenceException))]
59 public void NullCodeUnitTest ()
66 public void ReferencedTest ()
68 codeUnit.ReferencedAssemblies.Add ("System.dll");
70 Assert.AreEqual ("", Code);
74 public void SimpleNamespaceTest ()
76 CodeNamespace ns = new CodeNamespace ("A");
77 codeUnit.Namespaces.Add (ns);
79 Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
80 "{0}Namespace A{0}End Namespace{0}", writer.NewLine), Code);
84 public void ReferenceAndSimpleNamespaceTest()
86 CodeNamespace ns = new CodeNamespace ("A");
87 codeUnit.Namespaces.Add (ns);
88 codeUnit.ReferencedAssemblies.Add ("using System;");
90 Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
91 "{0}Namespace A{0}End Namespace{0}", writer.NewLine), Code);
95 public void SimpleAttributeTest ()
97 CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
100 codeUnit.AssemblyCustomAttributes.Add (attrDec);
102 Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
103 "<Assembly: A()> {0}", writer.NewLine), Code);
107 public void AttributeWithValueTest ()
109 CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
112 attrDec.Arguments.Add (new CodeAttributeArgument("A1",
113 new CodePrimitiveExpression(false)));
114 attrDec.Arguments.Add (new CodeAttributeArgument("A2",
115 new CodePrimitiveExpression(true)));
117 codeUnit.AssemblyCustomAttributes.Add (attrDec);
119 Assert.AreEqual ("<Assembly: A(A1:=false, A2:=true)> " +
120 writer.NewLine, Code);
124 public void MultipleAttributeTest ()
126 CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
128 codeUnit.AssemblyCustomAttributes.Add (attrDec);
130 attrDec = new CodeAttributeDeclaration ();
132 codeUnit.AssemblyCustomAttributes.Add (attrDec);
134 Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
135 "<Assembly: A(), _{0} Assembly: B()> {0}", writer.NewLine),
140 public void AttributeAndSimpleNamespaceTest ()
142 CodeNamespace ns = new CodeNamespace ("A");
143 codeUnit.Namespaces.Add (ns);
145 CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
147 codeUnit.AssemblyCustomAttributes.Add (attrDec);
149 attrDec = new CodeAttributeDeclaration ();
151 codeUnit.AssemblyCustomAttributes.Add (attrDec);
155 Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
156 "<Assembly: A(), _{0} Assembly: B()> {0}{0}Namespace A{0}End "
157 + "Namespace{0}",writer.NewLine), Code);
161 public void CodeSnippetTest ()
163 StringBuilder sb = new StringBuilder();
164 sb.Append ("Public Class Test1");
165 sb.Append (Environment.NewLine);
166 sb.Append ("End Class");
168 codeUnit = new CodeSnippetCompileUnit (sb.ToString ());
169 generator.GenerateCodeFromCompileUnit (codeUnit, writer, options);
171 Assert.AreEqual (sb.ToString () + writer.NewLine,