// Microsoft.VisualBasic.* Test Cases
//
// Authors:
-// Gert Driesen (drieseng@users.sourceforge.net)
+// Gert Driesen (drieseng@users.sourceforge.net)
//
// (c) 2005 Novell
//
using System;
using System.Globalization;
+using System.IO;
using System.Text;
using System.CodeDom;
using System.CodeDom.Compiler;
public CodeGeneratorFromCompileUnitTest ()
{
Init();
- Generate();
- codeUnitHeader = Code;
+ codeUnitHeader = Generate ();
}
[SetUp]
InitBase ();
codeUnit = new CodeCompileUnit ();
}
-
- protected override string Code {
- get { return base.Code.Substring (codeUnitHeader.Length); }
- }
-
- protected override void Generate ()
+
+ protected override string Generate (CodeGeneratorOptions options)
{
+ StringWriter writer = new StringWriter ();
+ writer.NewLine = NewLine;
+
generator.GenerateCodeFromCompileUnit (codeUnit, writer, options);
writer.Close ();
+ return writer.ToString ().Substring (codeUnitHeader.Length);
}
-
+
[Test]
public void DefaultCodeUnitTest ()
{
- Generate ();
- Assert.AreEqual ("", Code);
+ Assert.AreEqual ("", Generate ());
}
[Test]
public void ReferencedTest ()
{
codeUnit.ReferencedAssemblies.Add ("System.dll");
- Generate();
- Assert.AreEqual ("", Code);
+ Assert.AreEqual ("", Generate ());
}
[Test]
{
CodeNamespace ns = new CodeNamespace ("A");
codeUnit.Namespaces.Add (ns);
- Generate ();
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}Namespace A{0}End Namespace{0}", writer.NewLine), Code);
+ "{0}Namespace A{0}End Namespace{0}", NewLine), Generate ());
}
[Test]
CodeNamespace ns = new CodeNamespace ("A");
codeUnit.Namespaces.Add (ns);
codeUnit.ReferencedAssemblies.Add ("using System;");
- Generate ();
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}Namespace A{0}End Namespace{0}", writer.NewLine), Code);
+ "{0}Namespace A{0}End Namespace{0}", NewLine), Generate ());
}
[Test]
attrDec.Name = "A";
codeUnit.AssemblyCustomAttributes.Add (attrDec);
- Generate ();
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "<Assembly: A()> {0}", writer.NewLine), Code);
+ "<Assembly: A()> {0}", NewLine), Generate ());
}
[Test]
new CodePrimitiveExpression (false)));
codeUnit.AssemblyCustomAttributes.Add (attrDec);
- Generate ();
- Assert.AreEqual ("<Assembly: A(A1:=false, A2:=true, true, false)> " +
- writer.NewLine, Code);
+ Assert.AreEqual ("<Assembly: A(A1:=false, A2:=true, true, false)> " +
+ NewLine, Generate ());
}
[Test]
attrDec = new CodeAttributeDeclaration ();
attrDec.Name = "B";
codeUnit.AssemblyCustomAttributes.Add (attrDec);
- Generate ();
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "<Assembly: A(), _{0} Assembly: B()> {0}", writer.NewLine),
- Code);
+ "<Assembly: A(), _{0} Assembly: B()> {0}", NewLine),
+ Generate ());
}
[Test]
attrDec.Name = "B";
codeUnit.AssemblyCustomAttributes.Add (attrDec);
- Generate ();
-
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
"<Assembly: A(), _{0} Assembly: B()> {0}{0}Namespace A{0}End "
- + "Namespace{0}",writer.NewLine), Code);
+ + "Namespace{0}", NewLine), Generate ());
+ }
+
+ [Test]
+ public void AttributeAndImportsTest ()
+ {
+ CodeNamespace ns = new CodeNamespace ();
+ codeUnit.Namespaces.Add (ns);
+ ns.Imports.Add(new CodeNamespaceImport("System"));
+ ns.Imports.Add(new CodeNamespaceImport("System.Reflection"));
+
+ CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
+ attrDec.Name = "A";
+ codeUnit.AssemblyCustomAttributes.Add (attrDec);
+
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Imports System{0}Imports System.Reflection{0}<Assembly: A()> {0}{0}",
+ NewLine), Generate ());
+ }
+
+ [Test]
+ public void AttributeAndImportsAndNamespaceTest ()
+ {
+ CodeNamespace ns = new CodeNamespace ("A");
+ codeUnit.Namespaces.Add (ns);
+ ns.Imports.Add(new CodeNamespaceImport("System"));
+ ns.Imports.Add(new CodeNamespaceImport("System.Reflection"));
+
+ CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
+ attrDec.Name = "A";
+ codeUnit.AssemblyCustomAttributes.Add (attrDec);
+
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Imports System{0}Imports System.Reflection{0}<Assembly: A()> {0}{0}"
+ + "Namespace A{0}End Namespace{0}", NewLine), Generate ());
}
[Test]
sb.Append (Environment.NewLine);
sb.Append ("End Class");
+ StringWriter writer = new StringWriter ();
+ writer.NewLine = NewLine;
+
codeUnit = new CodeSnippetCompileUnit (sb.ToString ());
generator.GenerateCodeFromCompileUnit (codeUnit, writer, options);
writer.Close ();
- Assert.AreEqual (sb.ToString () + writer.NewLine,
- writer.ToString());
+ Assert.AreEqual (sb.ToString () + NewLine, writer.ToString());
+ }
+
+ [Test]
+ public void ExternalSourceTest ()
+ {
+ CodeSnippetCompileUnit snippet;
+
+ StringBuilder sb = new StringBuilder();
+ sb.Append ("\n");
+ sb.Append ("#ExternalSource(\"file.vb\",123)");
+ sb.Append ("\n");
+ sb.Append ("\n");
+ sb.Append ("\n");
+ sb.Append ("#End ExternalSource");
+ sb.Append ("\n");
+
+ StringWriter writer = new StringWriter ();
+ writer.NewLine = NewLine;
+
+ codeUnit = new CodeSnippetCompileUnit ("");
+ snippet = (CodeSnippetCompileUnit) codeUnit;
+ snippet.LinePragma = new CodeLinePragma ("file.vb", 123);
+ generator.GenerateCodeFromCompileUnit (codeUnit, writer, options);
+ writer.Close ();
+ Assert.AreEqual (sb.ToString (), writer.ToString());
}
}
}