// Microsoft.VisualBasic.* Test Cases
//
// Authors:
-// Gert Driesen (drieseng@users.sourceforge.net)
+// Gert Driesen (drieseng@users.sourceforge.net)
//
// (c) Novell
//
+
using System;
-using System.Globalization;
-using System.Text;
using System.CodeDom;
using System.CodeDom.Compiler;
+using System.Globalization;
+
+using Microsoft.VisualBasic;
using NUnit.Framework;
+using MonoTests.System.CodeDom.Compiler;
+
namespace MonoTests.Microsoft.VisualBasic
{
- ///
- /// <summary>
- /// Test ICodeGenerator's GenerateCodeFromType, along with a
- /// minimal set CodeDom components.
- /// </summary>
- ///
[TestFixture]
- public class CodeGeneratorFromTypeTest : CodeGeneratorTestBase
+ public class CodeGeneratorFromTypeTest_Class : CodeGeneratorFromTypeTestBase
{
- CodeTypeDeclaration type = null;
+ private CodeTypeDeclaration _typeDeclaration;
+ private ICodeGenerator _codeGenerator;
- [SetUp]
- public void Init ()
+ protected override ICodeGenerator CodeGenerator
+ {
+ get { return _codeGenerator; }
+ }
+
+ protected override CodeTypeDeclaration TypeDeclaration
{
- InitBase ();
- type = new CodeTypeDeclaration ();
+ get { return _typeDeclaration; }
}
-
- protected override void Generate ()
+
+ [SetUp]
+ public override void SetUp ()
{
- generator.GenerateCodeFromType (type, writer, options);
- writer.Close ();
+ base.SetUp ();
+ _typeDeclaration = new CodeTypeDeclaration ();
+
+ CodeDomProvider provider = new VBCodeProvider ();
+ _codeGenerator = provider.CreateGenerator ();
}
-
+
[Test]
- public void DefaultTypeTest ()
+ public override void DefaultTypeTest ()
{
- Generate ();
+ string code = GenerateDefaultType (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class {0}End Class{0}", writer.NewLine), Code);
+ "Public Class {0}" +
+ "End Class{0}", NewLine), code);
}
[Test]
[ExpectedException (typeof (NullReferenceException))]
- public void NullTypeTest ()
+ public override void NullTypeTest ()
{
- type = null;
- Generate ();
+ GenerateNullType (Options);
}
[Test]
- public void SimpleTypeTest ()
+ public override void SimpleTypeTest ()
{
- type.Name = "Test1";
- Generate ();
+ string code = GenerateSimpleType (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ "End Class{0}", NewLine), code);
}
[Test]
- public void AttributesAndTypeTest ()
+ public override void DerivedTypeTest ()
{
- type.Name = "Test1";
-
- CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "A";
- type.CustomAttributes.Add (attrDec);
-
- attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "B";
- type.CustomAttributes.Add (attrDec);
-
- Generate ();
+ string code = GenerateDerivedType (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "<A(), _{0} B()> _{0}Public Class Test1{0}End Class{0}",
- writer.NewLine), Code);
+#if NET_2_0
+ "Friend MustInherit Class Test1{0}" +
+#else
+ "MustInherit Class Test1{0}" +
+#endif
+ " Inherits Integer{0}" +
+ " Implements System.Security.Principal.IIdentity, String, System.Security.IPermission{0}" +
+ "End Class{0}", NewLine), code);
}
[Test]
- public void EventMembersTypeTest1 ()
+ public override void AttributesAndTypeTest ()
{
- type.Name = "Test1";
-
- CodeMemberEvent evt = new CodeMemberEvent ();
-
- CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "A";
- evt.CustomAttributes.Add (attrDec);
-
- attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "B";
- evt.CustomAttributes.Add (attrDec);
-
- type.Members.Add (evt);
-
- Generate ();
+ string code = GenerateAttributesAndType (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0} {0} <A(), _{0} B()> _{0} "
- + "Private Event As System.Void{0}End Class{0}", writer.NewLine), Code);
+ "<A(), _{0}" +
+ " B()> _{0}" +
+ "Public Class Test1{0}" +
+ "End Class{0}", NewLine), code);
}
[Test]
- public void EventMembersTypeTest2 ()
+ public override void EventMembersTypeTest1 ()
{
- type.Name = "Test1";
-
- CodeMemberEvent evt = new CodeMemberEvent ();
- evt.Name = "OnClick";
- evt.Attributes = MemberAttributes.Public;
- evt.Type = new CodeTypeReference(typeof (int));
- type.Members.Add (evt);
-
- Generate ();
+ string code = GenerateEventMembersType1 (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0} {0} "
- + "Public Event OnClick As Integer{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+#if NET_2_0
+ " Private Event __exception As System.Void{0}" +
+#else
+ " Private Event As System.Void{0}" +
+#endif
+ "End Class{0}", NewLine), code);
}
[Test]
- public void FieldMembersTypeTest1 ()
+ public override void EventMembersTypeTest2 ()
{
- type.Name = "Test1";
-
- CodeMemberField fld = new CodeMemberField ();
-
- CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "A";
- fld.CustomAttributes.Add (attrDec);
-
- attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "B";
- fld.CustomAttributes.Add (attrDec);
-
- type.Members.Add (fld);
-
- Generate ();
+ string code = GenerateEventMembersType2 (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0} {0} <A(), _{0} B()> _{0} "
- + "Private As System.Void{0}End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Public Event Click As Integer{0}" +
+ "End Class{0}", NewLine), code);
}
[Test]
- public void FieldMembersTypeTest2 ()
+ public override void EventImplementationTypes ()
{
- type.Name = "Test1";
-
- CodeMemberField fld = new CodeMemberField ();
- fld.Name = "Name";
- fld.Attributes = MemberAttributes.Public;
- fld.Type = new CodeTypeReference (typeof (int));
- type.Members.Add (fld);
-
- Generate ();
+ string code = GenerateEventImplementationTypes (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0} {0} "
- + "Public Name As Integer{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Friend Event Click As Integer Implements IPolicy.Click , IWhatever.Click{0}" +
+#else
+ " Friend Event Click As Integer{0}" +
+#endif
+ "End Class{0}", NewLine), code);
}
+ /// <summary>
+ /// Ensure no access modifiers are output if PrivateImplementationType
+ /// is set.
+ /// </summary>
[Test]
- public void PropertyMembersTypeTest1 ()
+ public override void EventPrivateImplementationType ()
{
- type.Name = "Test1";
-
- CodeMemberProperty property = new CodeMemberProperty ();
-
- CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "A";
- property.CustomAttributes.Add (attrDec);
-
- attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "B";
- property.CustomAttributes.Add (attrDec);
-
- type.Members.Add (property);
-
- Generate ();
+ string code = GenerateEventPrivateImplementationType (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " <A(), _{0}"
- + " B()> _{0}"
+ "Public Class Test1{0}" +
+ " {0}" +
#if NET_2_0
- + " Private Property () As System.Void{0}"
+ " Protected Event System_Int32_Click As Integer Implements Integer.Click{0}" +
#else
- + " Private Property As System.Void{0}"
+ " Protected Event Click As Integer{0}" +
#endif
- + " End Property{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "End Class{0}", NewLine), code);
}
+ /// <summary>
+ /// If both ImplementationTypes and PrivateImplementationType are set,
+ /// then only ImplementationTypes are output.
+ /// </summary>
[Test]
- public void PropertyMembersTypeTest2 ()
+ public override void EventImplementationTypeOrder ()
{
- type.Name = "Test1";
-
- CodeMemberProperty property = new CodeMemberProperty ();
- property.Name = "Name";
- property.Attributes = MemberAttributes.Public;
- property.Type = new CodeTypeReference (typeof (int));
- type.Members.Add (property);
+ string code = GenerateEventImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Event System_Int32_Click As Integer Implements IPolicy.Click{0}" +
+#else
+ " Public Event Click As Integer{0}" +
+#endif
+ "End Class{0}", NewLine), code);
+ }
- Generate ();
+ [Test]
+ public override void FieldMembersAttributesTest ()
+ {
+ string code = GenerateFieldMembersAttributes (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
+ "Public Class Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
#if NET_2_0
- + " Public Overridable Property Name() As Integer{0}"
+ " Private __exception As System.Void{0}" +
#else
- + " Public Overridable Property Name As Integer{0}"
+ " Private As System.Void{0}" +
#endif
- + " End Property{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "End Class{0}", NewLine), code);
}
[Test]
- public void PropertyMembersTypeGetOnly ()
+ public override void FieldMembersTypeTest ()
{
- type.Name = "Test1";
+ string code = GenerateFieldMembersType (MemberAttributes.Public, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Public Name As Integer = 2{0}" +
+ "End Class{0}", NewLine), code);
+ }
- CodeMemberProperty property = new CodeMemberProperty ();
- property.Name = "Name";
- property.Attributes = MemberAttributes.Family;
- property.HasGet = true;
- property.Type = new CodeTypeReference (typeof (int));
- type.Members.Add (property);
+ [Test]
+ public override void FieldNewSlotTest ()
+ {
+ string code = GenerateFieldMembersType (MemberAttributes.Assembly |
+ MemberAttributes.New, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Friend Shadows Name As Integer = 2{0}" +
+ "End Class{0}", NewLine), code);
+ }
- Generate ();
+ [Test]
+ public override void PropertyMembersTypeTest1 ()
+ {
+ string code = GeneratePropertyMembersAttributes (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
+ "Public Class Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
#if NET_2_0
- + " Protected Overridable ReadOnly Property Name() As Integer{0}"
+ " Private Property () As System.Void{0}" +
#else
- + " Protected Overridable ReadOnly Property Name As Integer{0}"
+ " Private Property As System.Void{0}" +
#endif
- + " Get{0}"
- + " End Get{0}"
- + " End Property{0}"
- + "End Class{0}", writer.NewLine), Code);
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
[Test]
- public void PropertyMembersTypeSetOnly ()
+ public override void PropertyMembersTypeTest2 ()
{
- type.Name = "Test1";
-
- CodeMemberProperty property = new CodeMemberProperty ();
- property.Name = "Name";
- property.Attributes = MemberAttributes.FamilyAndAssembly;
- property.HasSet = true;
- property.Type = new CodeTypeReference (typeof (int));
- type.Members.Add (property);
-
- Generate ();
+ string code = GeneratePropertyMembersType (MemberAttributes.Public,
+ false, false, Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
+ "Public Class Test1{0}" +
+ " {0}" +
#if NET_2_0
- + " Friend WriteOnly Property Name() As Integer{0}"
+ " Public Overridable Property Name() As Integer{0}" +
#else
- + " Friend WriteOnly Property Name As Integer{0}"
+ " Public Overridable Property Name As Integer{0}" +
#endif
- + " Set{0}"
- + " End Set{0}"
- + " End Property{0}"
- + "End Class{0}", writer.NewLine), Code);
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
[Test]
- public void PropertyMembersTypeGetSet ()
+ public override void PropertyMembersTypeGetOnly ()
{
- type.Name = "Test1";
+ string code = GeneratePropertyMembersType (MemberAttributes.Family,
+ true, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Protected Overridable ReadOnly Property Name() As Integer{0}" +
+#else
+ " Protected Overridable ReadOnly Property Name As Integer{0}" +
+#endif
+ " Get{0}" +
+ " End Get{0}" +
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
+ }
- CodeMemberProperty property = new CodeMemberProperty ();
- property.Name = "Name";
- property.Attributes = MemberAttributes.Family;
- property.HasGet = true;
- property.HasSet = true;
- property.Type = new CodeTypeReference (typeof (int));
- type.Members.Add (property);
+ [Test]
+ public override void PropertyMembersTypeSetOnly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Assembly,
+ false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Friend Overridable WriteOnly Property Name() As Integer{0}" +
+#else
+ " Friend WriteOnly Property Name As Integer{0}" +
+#endif
+ " Set{0}" +
+ " End Set{0}" +
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
+ }
- Generate ();
+ [Test]
+ public override void PropertyMembersTypeGetSet ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Family,
+ true, true, Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
+ "Public Class Test1{0}" +
+ " {0}" +
#if NET_2_0
- + " Protected Overridable Property Name() As Integer{0}"
+ " Protected Overridable Property Name() As Integer{0}" +
#else
- + " Protected Overridable Property Name As Integer{0}"
+ " Protected Overridable Property Name As Integer{0}" +
#endif
- + " Get{0}"
- + " End Get{0}"
- + " Set{0}"
- + " End Set{0}"
- + " End Property{0}"
- + "End Class{0}", writer.NewLine), Code);
+ " Get{0}" +
+ " End Get{0}" +
+ " Set{0}" +
+ " End Set{0}" +
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
#if !NET_2_0
// A bug in MS.NET 1.x causes MemberAttributes.FamilyOrAssembly to be
// generated as Protected
- [Category("NotDotNet")]
+ [Category ("NotDotNet")]
#endif
[Test]
- public void PropertyMembersTypeFamilyOrAssembly ()
+ public override void PropertyMembersTypeFamilyOrAssembly ()
{
- type.Name = "Test1";
-
- CodeMemberProperty property = new CodeMemberProperty ();
- property.Name = "Name";
- property.Attributes = MemberAttributes.FamilyOrAssembly;
- property.Type = new CodeTypeReference (typeof (int));
-
- type.Members.Add (property);
-
- Generate ();
+ string code = GeneratePropertyMembersType (MemberAttributes.FamilyOrAssembly,
+ false, false, Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
+ "Public Class Test1{0}" +
+ " {0}" +
#if NET_2_0
- + " Protected Friend Property Name() As Integer{0}"
+ " Protected Friend Property Name() As Integer{0}" +
#else
- + " Protected Friend Property Name As Integer{0}"
+ " Protected Friend Property Name As Integer{0}" +
#endif
- + " End Property{0}"
- + "End Class{0}", writer.NewLine), Code);
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
#if !NET_2_0
[Category ("NotDotNet")]
#endif
[Test]
- public void PropertyMembersTypeAssembly ()
+ public override void PropertyMembersTypeAssembly ()
{
- type.Name = "Test1";
-
- CodeMemberProperty property = new CodeMemberProperty ();
- property.Name = "Name";
- property.Attributes = MemberAttributes.Assembly;
- property.Type = new CodeTypeReference (typeof (int));
-
- type.Members.Add (property);
-
- Generate ();
+ string code = GeneratePropertyMembersType (MemberAttributes.Assembly,
+ false, false, Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
+ "Public Class Test1{0}" +
+ " {0}" +
#if NET_2_0
- + " Friend Overridable Property Name() As Integer{0}"
+ " Friend Overridable Property Name() As Integer{0}" +
#else
- + " Friend Property Name As Integer{0}"
+ " Friend Property Name As Integer{0}" +
#endif
- + " End Property{0}"
- + "End Class{0}", writer.NewLine), Code);
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
/// <summary>
/// to have parameters.
/// </summary>
[Test]
- public void PropertyParametersTest ()
+ public override void PropertyParametersTest ()
{
- type.Name = "Test1";
-
- CodeMemberProperty property = new CodeMemberProperty ();
- property.Name = "Name";
- property.Attributes = MemberAttributes.Public;
- property.Type = new CodeTypeReference (typeof (int));
-
- CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression (
- typeof (object), "value1");
- property.Parameters.Add (param);
-
- param = new CodeParameterDeclarationExpression (
- typeof (int), "value2");
- param.Direction = FieldDirection.Ref;
- property.Parameters.Add (param);
-
- type.Members.Add (property);
-
- Generate ();
+ string code = GeneratePropertyParameters (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " Public Overridable Property Name(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}"
- + " End Property{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Public Overridable Property Name(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}" +
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
[Test]
- public void PropertyIndexerTest1 ()
+ public override void PropertyIndexerTest1 ()
{
- type.Name = "Test1";
-
- CodeMemberProperty property = new CodeMemberProperty ();
- // ensure case-insensitive comparison is done on name of property
- property.Name = "iTem";
- property.Attributes = MemberAttributes.Public;
- property.Type = new CodeTypeReference (typeof (int));
-
- CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression (
- typeof (object), "value1");
- property.Parameters.Add (param);
-
- param = new CodeParameterDeclarationExpression (
- typeof (int), "value2");
- param.Direction = FieldDirection.Ref;
- property.Parameters.Add (param);
-
- type.Members.Add (property);
-
- Generate ();
+ string code = GeneratePropertyIndexer (MemberAttributes.Public,
+ false, false, true, Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " Public Overridable Default Property iTem(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}"
- + " End Property{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Public Overridable Default Property iTem(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}" +
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
/// <summary>
/// (case-insensitive comparison) AND parameters are defined.
/// </summary>
[Test]
- public void PropertyIndexerTest2 ()
+ public override void PropertyIndexerTest2 ()
{
- type.Name = "Test1";
-
- CodeMemberProperty property = new CodeMemberProperty ();
- // ensure case-insensitive comparison is done on name of property
- property.Name = "iTem";
- property.Attributes = MemberAttributes.Public;
- property.Type = new CodeTypeReference (typeof (int));
- type.Members.Add (property);
-
- Generate ();
+ string code = GeneratePropertyIndexer (MemberAttributes.Public,
+ false, false, false, Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
+ "Public Class Test1{0}" +
+ " {0}" +
#if NET_2_0
- + " Public Overridable Property iTem() As Integer{0}"
+ " Public Overridable Property iTem() As Integer{0}" +
#else
- + " Public Overridable Property iTem As Integer{0}"
+ " Public Overridable Property iTem As Integer{0}" +
#endif
- + " End Property{0}"
- + "End Class{0}", writer.NewLine), Code);
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
+ /// <summary>
+ /// Ensures Default keyword is output after ReadOnly modifier.
+ /// </summary>
[Test]
- public void MethodMembersTypeTest1 ()
+ public override void PropertyIndexerGetOnly ()
{
- type.Name = "Test1";
-
- CodeMemberMethod method = new CodeMemberMethod ();
-
- CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "A";
- method.CustomAttributes.Add (attrDec);
-
- attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "B";
- method.CustomAttributes.Add (attrDec);
-
- type.Members.Add (method);
-
- Generate ();
+ string code = GeneratePropertyIndexer (MemberAttributes.Family,
+ true, false, true, Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " <A(), _{0}"
- + " B()> _{0}"
- + " Private Sub (){0}"
- + " End Sub{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Protected Overridable Default ReadOnly Property iTem(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}" +
+ " Get{0}" +
+ " End Get{0}" +
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
+ /// <summary>
+ /// Ensures Default keyword is output after WriteOnly modifier.
+ /// </summary>
[Test]
- public void MethodMembersTypeTest2 ()
+ public override void PropertyIndexerSetOnly ()
{
- type.Name = "Test1";
-
- CodeMemberMethod method = new CodeMemberMethod ();
- method.Name = "Something";
- method.Attributes = MemberAttributes.Public;
- method.ReturnType = new CodeTypeReference (typeof (int));
-
- CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression (
- typeof(object), "value1");
- method.Parameters.Add (param);
-
- param = new CodeParameterDeclarationExpression (
- typeof (object), "value2");
- param.Direction = FieldDirection.In;
- method.Parameters.Add (param);
-
- param = new CodeParameterDeclarationExpression (typeof (int), "index");
- param.Direction = FieldDirection.Out;
- method.Parameters.Add (param);
-
- param = new CodeParameterDeclarationExpression (typeof (int), "count");
- param.Direction = FieldDirection.Ref;
- method.Parameters.Add (param);
-
- type.Members.Add (method);
-
- Generate ();
+ string code = GeneratePropertyIndexer (MemberAttributes.Family,
+ false, true, true, Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " Public Overridable Function Something(ByVal value1 As Object, ByVal value2 As Object, ByRef index As Integer, ByRef count As Integer) As Integer{0}"
- + " End Function{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Protected Overridable Default WriteOnly Property iTem(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}" +
+ " Set{0}" +
+ " End Set{0}" +
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
[Test]
- public void MethodMembersTypeTest3 ()
+ public override void PropertyImplementationTypes ()
{
- type.Name = "Test1";
-
- CodeMemberMethod method = new CodeMemberMethod ();
- method.Name = "Something";
- method.Attributes = MemberAttributes.Public;
- method.ReturnType = new CodeTypeReference (typeof (int));
-
- // first parameter
- CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression (
- typeof (object), "value");
- method.Parameters.Add (param);
-
- CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "A";
- param.CustomAttributes.Add (attrDec);
-
- attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "B";
- param.CustomAttributes.Add (attrDec);
-
-
- // second parameter
- param = new CodeParameterDeclarationExpression (typeof (int), "index");
- param.Direction = FieldDirection.Out;
- method.Parameters.Add (param);
-
- attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "C";
- attrDec.Arguments.Add (new CodeAttributeArgument ("A1",
- new CodePrimitiveExpression (false)));
- attrDec.Arguments.Add (new CodeAttributeArgument ("A2",
- new CodePrimitiveExpression (true)));
- param.CustomAttributes.Add (attrDec);
-
- attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "D";
- param.CustomAttributes.Add (attrDec);
-
- type.Members.Add (method);
-
- Generate ();
+ string code = GeneratePropertyImplementationTypes (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " Public Overridable Function Something(<A(), B()> ByVal value As Object, <C(A1:=false, A2:=true), D()> ByRef index As Integer) As Integer{0}"
- + " End Function{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Overridable Property Name() As Integer Implements IPolicy.Name , IWhatever.Name{0}" +
+#else
+ " Public Overridable Property Name As Integer Implements IPolicy.Name , IWhatever.Name{0}" +
+#endif
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
+ /// <summary>
+ /// Ensure that Overloads keyword is output for a property which has
+ /// explicitly been marked as Overloaded.
+ /// </summary>
[Test]
- public void ConstructorAttributesTest ()
+ public override void PropertyOverloadsTest1 ()
{
- type.Name = "Test1";
-
- CodeConstructor ctor = new CodeConstructor ();
-
- CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "A";
- ctor.CustomAttributes.Add (attrDec);
-
- attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "B";
- ctor.CustomAttributes.Add (attrDec);
-
- type.Members.Add (ctor);
-
- Generate ();
+ string code = GeneratePropertyOverloads1 (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " <A(), _{0}"
- + " B()> _{0}"
- + " Private Sub New(){0}"
- + " MyBase.New{0}"
- + " End Sub{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Protected Overloads Overridable Property Name() As Integer{0}" +
+#else
+ " Protected Overloads Overridable Property Name As Integer{0}" +
+#endif
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
+ /// <summary>
+ /// Ensure that Overloads keyword is output if multiple properties with
+ /// the same name are defined.
+ /// </summary>
[Test]
- public void ConstructorParametersTest ()
+ public override void PropertyOverloadsTest2 ()
{
- type.Name = "Test1";
-
- CodeConstructor ctor = new CodeConstructor ();
- ctor.Name = "Whatever";
- ctor.Attributes = MemberAttributes.Public;
-
- CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression (
- typeof (object), "value1");
- ctor.Parameters.Add (param);
-
- param = new CodeParameterDeclarationExpression (
- typeof (object), "value2");
- param.Direction = FieldDirection.In;
- ctor.Parameters.Add (param);
-
- param = new CodeParameterDeclarationExpression (typeof (int), "index");
- param.Direction = FieldDirection.Out;
- ctor.Parameters.Add (param);
-
- param = new CodeParameterDeclarationExpression (typeof (int), "count");
- param.Direction = FieldDirection.Ref;
- ctor.Parameters.Add (param);
-
- type.Members.Add (ctor);
-
- Generate ();
+ string code = GeneratePropertyOverloads2 (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " Public Sub New(ByVal value1 As Object, ByVal value2 As Object, ByRef index As Integer, ByRef count As Integer){0}"
- + " MyBase.New{0}"
- + " End Sub{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Overloads Overridable Property Name() As Integer{0}" +
+#else
+ " Public Overloads Overridable Property Name As Integer{0}" +
+#endif
+ " End Property{0}" +
+ " {0}" +
+ " Private Overloads Property Name(ByVal value1 As Object) As Integer{0}" +
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
+ /// <summary>
+ /// Ensure that a property with a PrivateImplementationType and with
+ /// the same name does not qualify as an overload.
+ /// </summary>
[Test]
- public void ConstructorParameterAttributesTest ()
+ public override void PropertyOverloadsTest3 ()
{
- type.Name = "Test1";
-
- CodeConstructor ctor = new CodeConstructor ();
- ctor.Name = "Something";
- ctor.Attributes = MemberAttributes.Public;
-
- // first parameter
- CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression (
- typeof (object), "value");
- ctor.Parameters.Add (param);
-
- CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "A";
- param.CustomAttributes.Add (attrDec);
-
- attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "B";
- param.CustomAttributes.Add (attrDec);
-
- // second parameter
- param = new CodeParameterDeclarationExpression (typeof (int), "index");
- param.Direction = FieldDirection.Out;
- ctor.Parameters.Add (param);
-
- attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "C";
- attrDec.Arguments.Add (new CodeAttributeArgument ("A1",
- new CodePrimitiveExpression (false)));
- attrDec.Arguments.Add (new CodeAttributeArgument ("A2",
- new CodePrimitiveExpression (true)));
- param.CustomAttributes.Add (attrDec);
-
- attrDec = new CodeAttributeDeclaration ();
- attrDec.Name = "D";
- param.CustomAttributes.Add (attrDec);
-
- type.Members.Add (ctor);
-
- Generate ();
+ string code = GeneratePropertyOverloads3 (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " Public Sub New(<A(), B()> ByVal value As Object, <C(A1:=false, A2:=true), D()> ByRef index As Integer){0}"
- + " MyBase.New{0}"
- + " End Sub{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Overridable Property Name() As Integer{0}" +
+#else
+ " Public Overridable Property Name As Integer{0}" +
+#endif
+ " End Property{0}" +
+ " {0}" +
+ " Property System_Int32_Name(ByVal value1 As Object) As Integer Implements Integer.Name{0}" +
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
+ /// <summary>
+ /// Ensure no access modifiers are output if PrivateImplementationType
+ /// is set. Default keyword is also not output in this case.
+ /// </summary>
[Test]
- public void BaseConstructorSingleArg ()
+ public override void PropertyPrivateImplementationType ()
{
- type.Name = "Test1";
-
- CodeConstructor ctor = new CodeConstructor ();
- ctor.Name = "Something";
- ctor.Attributes = MemberAttributes.Public;
-
- // first parameter
- CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression (
- typeof (object), "value1");
- ctor.Parameters.Add (param);
-
- // second parameter
- param = new CodeParameterDeclarationExpression (typeof (int), "value2");
- param.Direction = FieldDirection.Out;
- ctor.Parameters.Add (param);
-
- // base ctor args
- ctor.BaseConstructorArgs.Add (new CodeVariableReferenceExpression ("value1"));
+ string code = GeneratePropertyPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Overridable Property System_Int32_Item(ByVal value1 As Object) As Integer Implements Integer.Item{0}" +
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
+ }
- type.Members.Add (ctor);
+ /// <summary>
+ /// If both ImplementationTypes and PrivateImplementationType are set,
+ /// then only ImplementationTypes are output.
+ /// </summary>
+ [Test]
+ public override void PropertyImplementationTypeOrder ()
+ {
+ string code = GeneratePropertyImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Overridable Property System_Int32_Item(ByVal value1 As Object) As Integer Implements IPolicy.Item{0}" +
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
+ }
- Generate ();
+ [Test]
+ public override void PropertyNewSlotTest ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Private |
+ MemberAttributes.New, true, true, Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " Public Sub New(ByVal value1 As Object, ByRef value2 As Integer){0}"
- + " MyBase.New(value1){0}"
- + " End Sub{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Private Shadows Property Name() As Integer{0}" +
+#else
+ " Private Shadows Property Name As Integer{0}" +
+#endif
+ " Get{0}" +
+ " End Get{0}" +
+ " Set{0}" +
+ " End Set{0}" +
+ " End Property{0}" +
+ "End Class{0}", NewLine), code);
}
[Test]
- public void BaseConstructorMultipleArgs ()
+ public override void MethodMembersTypeTest1 ()
{
- type.Name = "Test1";
+ string code = GenerateMethodMembersType1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+ " Private Sub (){0}" +
+ " End Sub{0}" +
+ "End Class{0}", NewLine), code);
+ }
- CodeConstructor ctor = new CodeConstructor ();
- ctor.Name = "Something";
- ctor.Attributes = MemberAttributes.Public;
+ [Test]
+ public override void MethodMembersTypeTest2 ()
+ {
+ string code = GenerateMethodMembersType2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Public Overridable Function Something(ByVal value1 As Object, ByVal value2 As Object, ByRef index As Integer, ByRef count As Integer) As Integer{0}" +
+ " End Function{0}" +
+ "End Class{0}", NewLine), code);
+ }
- // first parameter
- CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression (
- typeof (object), "value1");
- ctor.Parameters.Add (param);
+ [Test]
+ public override void MethodMembersTypeTest3 ()
+ {
+ string code = GenerateMethodMembersType3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Overridable Function Something(<A(), B()> ByVal value As Object, <C(A1:=false, A2:=true), D()> ByRef __exception As Integer) As Integer{0}" +
+#else
+ " Public Overridable Function Something(<A(), B()> ByVal value As Object, <C(A1:=false, A2:=true), D()> ByRef As Integer) As Integer{0}" +
+#endif
+ " End Function{0}" +
+ "End Class{0}", NewLine), code);
+ }
- // second parameter
- param = new CodeParameterDeclarationExpression (typeof (int), "value2");
- param.Direction = FieldDirection.Out;
- ctor.Parameters.Add (param);
+ [Test]
+ public override void MethodImplementationTypes ()
+ {
+ string code = GenerateMethodImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Friend Overridable Function Execute() As Integer Implements IPolicy.Execute , IWhatever.Execute{0}" +
+#else
+ " Friend Function Execute() As Integer Implements IPolicy.Execute , IWhatever.Execute{0}" +
+#endif
+ " End Function{0}" +
+ "End Class{0}", NewLine), code);
+ }
- // base ctor args
- ctor.BaseConstructorArgs.Add (new CodeVariableReferenceExpression ("value1"));
- ctor.BaseConstructorArgs.Add (new CodeVariableReferenceExpression ("value2"));
+ /// <summary>
+ /// Ensure that Overloads keyword is output for a method which has
+ /// explicitly been marked as Overloaded.
+ /// </summary>
+ [Test]
+ public override void MethodOverloadsTest1 ()
+ {
+ string code = GenerateMethodOverloads1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Friend Overloads Overridable Function Execute() As Integer{0}" +
+#else
+ " Friend Overloads Function Execute() As Integer{0}" +
+#endif
+ " End Function{0}" +
+ "End Class{0}", NewLine), code);
+ }
- type.Members.Add (ctor);
+ /// <summary>
+ /// Ensure that Overloads keyword is output if multiple methods with
+ /// the same name are defined.
+ /// </summary>
+ [Test]
+ public override void MethodOverloadsTest2 ()
+ {
+ string code = GenerateMethodOverloads2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Public Overloads Overridable Sub Execute(){0}" +
+ " End Sub{0}" +
+ " {0}" +
+ " Private Overloads Function Execute(ByVal value1 As Object) As Integer{0}" +
+ " End Function{0}" +
+ "End Class{0}", NewLine), code);
+ }
- Generate ();
+ /// <summary>
+ /// Ensure that a method with a PrivateImplementationType and with
+ /// the same name does not qualify as an overload.
+ /// </summary>
+ [Test]
+ public override void MethodOverloadsTest3 ()
+ {
+ string code = GenerateMethodOverloads3 (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " Public Sub New(ByVal value1 As Object, ByRef value2 As Integer){0}"
- + " MyBase.New(value1, value2){0}"
- + " End Sub{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Public Overridable Sub Execute(){0}" +
+ " End Sub{0}" +
+ " {0}" +
+ " Function System_Int32_Execute(ByVal value1 As Object) As Integer Implements Integer.Execute{0}" +
+ " End Function{0}" +
+ "End Class{0}", NewLine), code);
}
+ /// <summary>
+ /// Ensure no access modifiers are output if PrivateImplementationType
+ /// is set.
+ /// </summary>
[Test]
- public void ChainedConstructorSingleArg ()
+ public override void MethodPrivateImplementationType ()
{
- type.Name = "Test1";
+ string code = GenerateMethodPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Overridable Function System_Int32_Execute(ByVal value1 As Object) As Integer Implements Integer.Execute{0}" +
+ " End Function{0}" +
+ "End Class{0}", NewLine), code);
+ }
- CodeConstructor ctor = new CodeConstructor ();
- ctor.Name = "Something";
- ctor.Attributes = MemberAttributes.Public;
+ /// <summary>
+ /// If both ImplementationTypes and PrivateImplementationType are set,
+ /// then only ImplementationTypes are output.
+ /// </summary>
+ [Test]
+ public override void MethodImplementationTypeOrder ()
+ {
+ string code = GenerateMethodImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Overridable Function System_Int32_Execute(ByVal value1 As Object) As Integer Implements IPolicy.Execute{0}" +
+ " End Function{0}" +
+ "End Class{0}", NewLine), code);
+ }
- // first parameter
- CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression (
- typeof (object), "value1");
- ctor.Parameters.Add (param);
+ [Test]
+ public override void MethodReturnTypeAttributes ()
+ {
+ string code = GenerateMethodReturnTypeAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+ " Public Overridable Function Execute() As <C(A1:=false, A2:=true), D()> Integer{0}" +
+ " End Function{0}" +
+ "End Class{0}", NewLine), code);
+ }
- // second parameter
- param = new CodeParameterDeclarationExpression (typeof (int), "value2");
- param.Direction = FieldDirection.Out;
- ctor.Parameters.Add (param);
+ [Test]
+ public override void MethodNewSlotTest ()
+ {
+ string code = GenerateMethodNewSlot (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Public Shadows Overridable Function Execute() As Integer{0}" +
+ " End Function{0}" +
+ "End Class{0}", NewLine), code);
+ }
- // chained ctor args
- ctor.ChainedConstructorArgs.Add (new CodeVariableReferenceExpression ("value1"));
+ [Test]
+ public override void ConstructorAttributesTest ()
+ {
+ // FIXME: updated to reflect mbas workaround
+ string code = GenerateConstructorAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+ " Private Sub New(){0}" +
+ " MyBase.New(){0}" +
+ " End Sub{0}" +
+ "End Class{0}", NewLine), code);
+ }
- // should be ignored as chained ctor args should take precedence over base
- // ctor args
- ctor.BaseConstructorArgs.Add (new CodeVariableReferenceExpression ("value3"));
+ [Test]
+ public override void ConstructorParametersTest ()
+ {
+ // FIXME: updated to reflect mbas workaround
+ string code = GenerateConstructorParameters (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Public Sub New(ByVal value1 As Object, ByVal value2 As Object, ByRef index As Integer, ByRef count As Integer){0}" +
+ " MyBase.New(){0}" +
+ " End Sub{0}" +
+ "End Class{0}", NewLine), code);
+ }
- type.Members.Add (ctor);
+ [Test]
+ public override void ConstructorParameterAttributesTest ()
+ {
+ // FIXME: updated to reflect mbas workaround
+ string code = GenerateConstructorParameterAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Private Sub New(<A(), B()> ByVal value As Object, <C(A1:=false, A2:=true), D()> ByRef index As Integer){0}" +
+ " MyBase.New(){0}" +
+ " End Sub{0}" +
+ "End Class{0}", NewLine), code);
+ }
- Generate ();
+ [Test]
+ public override void BaseConstructorSingleArg ()
+ {
+ string code = GenerateBaseConstructor (false, Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " Public Sub New(ByVal value1 As Object, ByRef value2 As Integer){0}"
- + " Me.New(value1){0}"
- + " End Sub{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Protected Sub New(ByVal value1 As Object, ByRef value2 As Integer){0}" +
+ " MyBase.New(value1){0}" +
+ " End Sub{0}" +
+ "End Class{0}", NewLine), code);
}
[Test]
- public void ChainedConstructorMultipleArgs ()
+ public override void BaseConstructorMultipleArgs ()
{
- type.Name = "Test1";
+ string code = GenerateBaseConstructor (true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Protected Sub New(ByVal value1 As Object, ByRef value2 As Integer){0}" +
+ " MyBase.New(value1, value2){0}" +
+ " End Sub{0}" +
+ "End Class{0}", NewLine), code);
+ }
- CodeConstructor ctor = new CodeConstructor ();
- ctor.Name = "Something";
- ctor.Attributes = MemberAttributes.Public;
+ [Test]
+ public override void ChainedConstructorSingleArg ()
+ {
+ string code = GenerateChainedConstructor (false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Public Sub New(ByVal value1 As Object, ByRef value2 As Integer){0}" +
+ " Me.New(value1){0}" +
+ " End Sub{0}" +
+ "End Class{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ChainedConstructorMultipleArgs ()
+ {
+ string code = GenerateChainedConstructor (true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+ " Public Sub New(ByVal value1 As Object, ByRef value2 As Integer){0}" +
+ " Me.New(value1, value2){0}" +
+ " End Sub{0}" +
+ "End Class{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void TypeConstructorTest ()
+ {
+ string code = GenerateTypeConstructor (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " <A(), _{0}" +
+ " B()> _{0}" +
+#endif
+ " Shared Sub New(){0}" +
+ " End Sub{0}" +
+ "End Class{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EntryPointMethodTest ()
+ {
+ string code = GenerateEntryPointMethod (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Class Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " <A()> _{0}" +
+#endif
+ " Public Shared Sub Main(){0}" +
+ " Dim x As Test.InnerType{0}" +
+ " End Sub{0}" +
+ "End Class{0}", NewLine), code);
+ }
+ }
+
+ [TestFixture]
+ public class CodeGeneratorFromTypeTest_Delegate : CodeGeneratorFromTypeTestBase
+ {
+ private CodeTypeDeclaration _typeDeclaration;
+ private ICodeGenerator _codeGenerator;
+
+ protected override ICodeGenerator CodeGenerator
+ {
+ get { return _codeGenerator; }
+ }
+
+ protected override CodeTypeDeclaration TypeDeclaration
+ {
+ get { return _typeDeclaration; }
+ }
+
+ [SetUp]
+ public override void SetUp ()
+ {
+ base.SetUp ();
+ _typeDeclaration = new CodeTypeDelegate ();
+
+ CodeDomProvider provider = new VBCodeProvider ();
+ _codeGenerator = provider.CreateGenerator ();
+ }
+
+ [Test]
+ public override void DefaultTypeTest ()
+ {
+ string code = GenerateDefaultType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub (){0}", NewLine), code);
+ }
+
+ [Test]
+ [ExpectedException (typeof (NullReferenceException))]
+ public override void NullTypeTest ()
+ {
+ GenerateNullType (Options);
+ }
+
+ [Test]
+ public override void SimpleTypeTest ()
+ {
+ string code = GenerateSimpleType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}", NewLine), code);
+ }
+
+ [Test]
+ public override void DerivedTypeTest ()
+ {
+ string code = GenerateDerivedType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Delegate Sub Test1(){0}", NewLine), code);
+ }
+
+ [Test]
+ public override void AttributesAndTypeTest ()
+ {
+ CodeTypeDelegate delegateDecl = new CodeTypeDelegate ();
+ delegateDecl.ReturnType = new CodeTypeReference (typeof (int));
+
+ _typeDeclaration = delegateDecl;
+
+ string code = GenerateAttributesAndType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "<A(), _{0}" +
+ " B()> _{0}" +
+ "Public Delegate Function Test1() As Integer{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventMembersTypeTest1 ()
+ {
+ string code = GenerateEventMembersType1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventMembersTypeTest2 ()
+ {
+ string code = GenerateEventMembersType2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventImplementationTypes ()
+ {
+ string code = GenerateEventImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ /// <summary>
+ /// Ensure no access modifiers are output if PrivateImplementationType
+ /// is set.
+ /// </summary>
+ [Test]
+ public override void EventPrivateImplementationType ()
+ {
+ string code = GenerateEventPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ /// <summary>
+ /// If both ImplementationTypes and PrivateImplementationType are set,
+ /// then only ImplementationTypes are output.
+ /// </summary>
+ [Test]
+ public override void EventImplementationTypeOrder ()
+ {
+ string code = GenerateEventImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void FieldMembersAttributesTest ()
+ {
+ string code = GenerateFieldMembersAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void FieldMembersTypeTest ()
+ {
+ string code = GenerateFieldMembersType (MemberAttributes.Public, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void FieldNewSlotTest ()
+ {
+ string code = GenerateFieldMembersType (MemberAttributes.Assembly |
+ MemberAttributes.New, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeTest1 ()
+ {
+ string code = GeneratePropertyMembersAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeTest2 ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Public,
+ false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeGetOnly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Family,
+ true, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeSetOnly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Assembly,
+ false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeGetSet ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Family,
+ true, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeFamilyOrAssembly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.FamilyOrAssembly,
+ false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeAssembly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Assembly,
+ false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyParametersTest ()
+ {
+ string code = GeneratePropertyParameters (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerTest1 ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Public,
+ false, false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerTest2 ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Public,
+ false, false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerGetOnly ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Family,
+ true, false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerSetOnly ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Family,
+ false, true, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyImplementationTypes ()
+ {
+ string code = GeneratePropertyImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyOverloadsTest1 ()
+ {
+ string code = GeneratePropertyOverloads1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyOverloadsTest2 ()
+ {
+ string code = GeneratePropertyOverloads2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyOverloadsTest3 ()
+ {
+ string code = GeneratePropertyOverloads3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyPrivateImplementationType ()
+ {
+ string code = GeneratePropertyPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyImplementationTypeOrder ()
+ {
+ string code = GeneratePropertyImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyNewSlotTest ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Private |
+ MemberAttributes.New, true, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodMembersTypeTest1 ()
+ {
+ string code = GenerateMethodMembersType1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodMembersTypeTest2 ()
+ {
+ string code = GenerateMethodMembersType2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodMembersTypeTest3 ()
+ {
+ string code = GenerateMethodMembersType3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodImplementationTypes ()
+ {
+ string code = GenerateMethodImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodOverloadsTest1 ()
+ {
+ string code = GenerateMethodOverloads1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodOverloadsTest2 ()
+ {
+ string code = GenerateMethodOverloads2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodOverloadsTest3 ()
+ {
+ string code = GenerateMethodOverloads3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodPrivateImplementationType ()
+ {
+ string code = GenerateMethodPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodImplementationTypeOrder ()
+ {
+ string code = GenerateMethodImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodReturnTypeAttributes ()
+ {
+ string code = GenerateMethodReturnTypeAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodNewSlotTest ()
+ {
+ string code = GenerateMethodNewSlot (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ConstructorAttributesTest ()
+ {
+ string code = GenerateConstructorAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ConstructorParametersTest ()
+ {
+ string code = GenerateConstructorParameters (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ConstructorParameterAttributesTest ()
+ {
+ string code = GenerateConstructorParameterAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void BaseConstructorSingleArg ()
+ {
+ string code = GenerateBaseConstructor (false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void BaseConstructorMultipleArgs ()
+ {
+ string code = GenerateBaseConstructor (true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ChainedConstructorSingleArg ()
+ {
+ string code = GenerateChainedConstructor (false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ChainedConstructorMultipleArgs ()
+ {
+ string code = GenerateChainedConstructor (true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void TypeConstructorTest ()
+ {
+ string code = GenerateTypeConstructor (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EntryPointMethodTest ()
+ {
+ string code = GenerateEntryPointMethod (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Delegate Sub Test1(){0}{0}" +
+#if NET_2_0
+ "<A()> _{0}" +
+#endif
+ "Public Shared Sub Main(){0}" +
+ " Dim x As Test.InnerType{0}" +
+ "End Sub{0}", NewLine), code);
+ }
+ }
+
+ [TestFixture]
+ public class CodeGeneratorFromTypeTest_Interface : CodeGeneratorFromTypeTestBase
+ {
+ private CodeTypeDeclaration _typeDeclaration;
+ private ICodeGenerator _codeGenerator;
+
+ protected override ICodeGenerator CodeGenerator
+ {
+ get { return _codeGenerator; }
+ }
+
+ protected override CodeTypeDeclaration TypeDeclaration
+ {
+ get { return _typeDeclaration; }
+ }
+
+ [SetUp]
+ public override void SetUp ()
+ {
+ base.SetUp ();
+ _typeDeclaration = new CodeTypeDeclaration ();
+ _typeDeclaration.IsInterface = true;
+
+ CodeDomProvider provider = new VBCodeProvider ();
+ _codeGenerator = provider.CreateGenerator ();
+ }
+
+ [Test]
+ public override void DefaultTypeTest ()
+ {
+ string code = GenerateDefaultType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface {0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ [ExpectedException (typeof (NullReferenceException))]
+ public override void NullTypeTest ()
+ {
+ GenerateNullType (Options);
+ }
+
+ [Test]
+ public override void SimpleTypeTest ()
+ {
+ string code = GenerateSimpleType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void DerivedTypeTest ()
+ {
+ string code = GenerateDerivedType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+#if NET_2_0
+ "Friend Interface Test1{0}" +
+#else
+ "Interface Test1{0}" +
+#endif
+ " Inherits Integer, System.Security.Principal.IIdentity, String, System.Security.IPermission{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void AttributesAndTypeTest ()
+ {
+ string code = GenerateAttributesAndType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "<A(), _{0}" +
+ " B()> _{0}" +
+ "Public Interface Test1{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventMembersTypeTest1 ()
+ {
+ string code = GenerateEventMembersType1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+#if NET_2_0
+ " Private Event __exception As System.Void{0}" +
+#else
+ " Private Event As System.Void{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventMembersTypeTest2 ()
+ {
+ string code = GenerateEventMembersType2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Public Event Click As Integer{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventImplementationTypes ()
+ {
+ string code = GenerateEventImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Friend Event Click As Integer Implements IPolicy.Click , IWhatever.Click{0}" +
+#else
+ " Friend Event Click As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventPrivateImplementationType ()
+ {
+ string code = GenerateEventPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Protected Event System_Int32_Click As Integer Implements Integer.Click{0}" +
+#else
+ " Protected Event Click As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventImplementationTypeOrder ()
+ {
+ string code = GenerateEventImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Event System_Int32_Click As Integer Implements IPolicy.Click{0}" +
+#else
+ " Public Event Click As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void FieldMembersAttributesTest ()
+ {
+ string code = GenerateFieldMembersAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void FieldMembersTypeTest ()
+ {
+ string code = GenerateFieldMembersType (MemberAttributes.Public, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void FieldNewSlotTest ()
+ {
+ string code = GenerateFieldMembersType (MemberAttributes.Assembly |
+ MemberAttributes.New, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeTest1 ()
+ {
+ string code = GeneratePropertyMembersAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+#if NET_2_0
+ " Property () As System.Void{0}" +
+#else
+ " Property As System.Void{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeTest2 ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Public,
+ false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Property Name() As Integer{0}" +
+#else
+ " Property Name As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeGetOnly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Family,
+ true, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " ReadOnly Property Name() As Integer{0}" +
+#else
+ " ReadOnly Property Name As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeSetOnly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Assembly,
+ false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " WriteOnly Property Name() As Integer{0}" +
+#else
+ " WriteOnly Property Name As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeGetSet ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Family,
+ true, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Property Name() As Integer{0}" +
+#else
+ " Property Name As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeFamilyOrAssembly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.FamilyOrAssembly,
+ false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Property Name() As Integer{0}" +
+#else
+ " Property Name As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeAssembly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Assembly,
+ false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Property Name() As Integer{0}" +
+#else
+ " Property Name As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyParametersTest ()
+ {
+ string code = GeneratePropertyParameters (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Property Name(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerTest1 ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Public,
+ false, false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Default Property iTem(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerTest2 ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Public,
+ false, false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Property iTem() As Integer{0}" +
+#else
+ " Property iTem As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerGetOnly ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Family,
+ true, false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Default ReadOnly Property iTem(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerSetOnly ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Family,
+ false, true, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Default WriteOnly Property iTem(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyImplementationTypes ()
+ {
+ string code = GeneratePropertyImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Property Name() As Integer Implements IPolicy.Name , IWhatever.Name{0}" +
+#else
+ " Property Name As Integer Implements IPolicy.Name , IWhatever.Name{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyOverloadsTest1 ()
+ {
+ string code = GeneratePropertyOverloads1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Property Name() As Integer{0}" +
+#else
+ " Property Name As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyOverloadsTest2 ()
+ {
+ string code = GeneratePropertyOverloads2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Property Name() As Integer{0}" +
+#else
+ " Property Name As Integer{0}" +
+#endif
+ " {0}" +
+ " Property Name(ByVal value1 As Object) As Integer{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyOverloadsTest3 ()
+ {
+ string code = GeneratePropertyOverloads3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Property Name() As Integer{0}" +
+#else
+ " Property Name As Integer{0}" +
+#endif
+ " {0}" +
+ " Property System_Int32_Name(ByVal value1 As Object) As Integer Implements Integer.Name{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyPrivateImplementationType ()
+ {
+ string code = GeneratePropertyPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Property System_Int32_Item(ByVal value1 As Object) As Integer Implements Integer.Item{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyImplementationTypeOrder ()
+ {
+ string code = GeneratePropertyImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Property System_Int32_Item(ByVal value1 As Object) As Integer Implements IPolicy.Item{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyNewSlotTest ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Private |
+ MemberAttributes.New, true, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Shadows Property Name() As Integer{0}" +
+#else
+ " Shadows Property Name As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodMembersTypeTest1 ()
+ {
+ string code = GenerateMethodMembersType1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+ " Sub (){0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodMembersTypeTest2 ()
+ {
+ string code = GenerateMethodMembersType2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Function Something(ByVal value1 As Object, ByVal value2 As Object, ByRef index As Integer, ByRef count As Integer) As Integer{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodMembersTypeTest3 ()
+ {
+ string code = GenerateMethodMembersType3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Function Something(<A(), B()> ByVal value As Object, <C(A1:=false, A2:=true), D()> ByRef __exception As Integer) As Integer{0}" +
+#else
+ " Function Something(<A(), B()> ByVal value As Object, <C(A1:=false, A2:=true), D()> ByRef As Integer) As Integer{0}" +
+#endif
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodImplementationTypes ()
+ {
+ string code = GenerateMethodImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Function Execute() As Integer Implements IPolicy.Execute , IWhatever.Execute{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodOverloadsTest1 ()
+ {
+ string code = GenerateMethodOverloads1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Function Execute() As Integer{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodOverloadsTest2 ()
+ {
+ string code = GenerateMethodOverloads2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Sub Execute(){0}" +
+ " {0}" +
+ " Function Execute(ByVal value1 As Object) As Integer{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodOverloadsTest3 ()
+ {
+ string code = GenerateMethodOverloads3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Sub Execute(){0}" +
+ " {0}" +
+ " Function System_Int32_Execute(ByVal value1 As Object) As Integer Implements Integer.Execute{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodPrivateImplementationType ()
+ {
+ string code = GenerateMethodPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Function System_Int32_Execute(ByVal value1 As Object) As Integer Implements Integer.Execute{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodImplementationTypeOrder ()
+ {
+ string code = GenerateMethodImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Function System_Int32_Execute(ByVal value1 As Object) As Integer Implements IPolicy.Execute{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodReturnTypeAttributes ()
+ {
+ string code = GenerateMethodReturnTypeAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+ " Function Execute() As <C(A1:=false, A2:=true), D()> Integer{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodNewSlotTest ()
+ {
+ string code = GenerateMethodNewSlot (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ " Shadows Function Execute() As Integer{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ConstructorAttributesTest ()
+ {
+ string code = GenerateConstructorAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ConstructorParametersTest ()
+ {
+ string code = GenerateConstructorParameters (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ConstructorParameterAttributesTest ()
+ {
+ string code = GenerateConstructorParameterAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void BaseConstructorSingleArg ()
+ {
+ string code = GenerateBaseConstructor (false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void BaseConstructorMultipleArgs ()
+ {
+ string code = GenerateBaseConstructor (true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ChainedConstructorSingleArg ()
+ {
+ string code = GenerateChainedConstructor (false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ChainedConstructorMultipleArgs ()
+ {
+ string code = GenerateChainedConstructor (true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void TypeConstructorTest ()
+ {
+ string code = GenerateTypeConstructor (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+ "End Interface{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EntryPointMethodTest ()
+ {
+ string code = GenerateEntryPointMethod (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Interface Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " <A()> _{0}" +
+#endif
+ " Public Shared Sub Main(){0}" +
+ " Dim x As Test.InnerType{0}" +
+ " End Sub{0}" +
+ "End Interface{0}", NewLine), code);
+ }
+ }
+
+ [TestFixture]
+ public class CodeGeneratorFromTypeTest_Struct : CodeGeneratorFromTypeTestBase
+ {
+ private CodeTypeDeclaration _typeDeclaration;
+ private ICodeGenerator _codeGenerator;
+
+ protected override ICodeGenerator CodeGenerator
+ {
+ get { return _codeGenerator; }
+ }
+
+ protected override CodeTypeDeclaration TypeDeclaration
+ {
+ get { return _typeDeclaration; }
+ }
+
+ [SetUp]
+ public override void SetUp ()
+ {
+ base.SetUp ();
+ _typeDeclaration = new CodeTypeDeclaration ();
+ _typeDeclaration.IsStruct = true;
+
+ CodeDomProvider provider = new VBCodeProvider ();
+ _codeGenerator = provider.CreateGenerator ();
+ }
+
+ [Test]
+ public override void DefaultTypeTest ()
+ {
+ string code = GenerateDefaultType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure {0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ [ExpectedException (typeof (NullReferenceException))]
+ public override void NullTypeTest ()
+ {
+ GenerateNullType (Options);
+ }
+
+ [Test]
+ public override void SimpleTypeTest ()
+ {
+ string code = GenerateSimpleType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void DerivedTypeTest ()
+ {
+ string code = GenerateDerivedType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+#if NET_2_0
+ "Friend Structure Test1{0}" +
+#else
+ "Structure Test1{0}" +
+#endif
+ " Implements Integer, System.Security.Principal.IIdentity, String, System.Security.IPermission{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void AttributesAndTypeTest ()
+ {
+ string code = GenerateAttributesAndType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "<A(), _{0}" +
+ " B()> _{0}" +
+ "Public Structure Test1{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventMembersTypeTest1 ()
+ {
+ string code = GenerateEventMembersType1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+#if NET_2_0
+ " Private Event __exception As System.Void{0}" +
+#else
+ " Private Event As System.Void{0}" +
+#endif
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventMembersTypeTest2 ()
+ {
+ string code = GenerateEventMembersType2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Public Event Click As Integer{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventImplementationTypes ()
+ {
+ string code = GenerateEventImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Friend Event Click As Integer Implements IPolicy.Click , IWhatever.Click{0}" +
+#else
+ " Friend Event Click As Integer{0}" +
+#endif
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventPrivateImplementationType ()
+ {
+ string code = GenerateEventPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Protected Event System_Int32_Click As Integer Implements Integer.Click{0}" +
+#else
+ " Protected Event Click As Integer{0}" +
+#endif
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventImplementationTypeOrder ()
+ {
+ string code = GenerateEventImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Event System_Int32_Click As Integer Implements IPolicy.Click{0}" +
+#else
+ " Public Event Click As Integer{0}" +
+#endif
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void FieldMembersAttributesTest ()
+ {
+ string code = GenerateFieldMembersAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+#if NET_2_0
+ " Private __exception As System.Void{0}" +
+#else
+ " Private As System.Void{0}" +
+#endif
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void FieldMembersTypeTest ()
+ {
+ string code = GenerateFieldMembersType (MemberAttributes.Public, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Public Name As Integer = 2{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void FieldNewSlotTest ()
+ {
+ string code = GenerateFieldMembersType (MemberAttributes.Assembly |
+ MemberAttributes.New, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Friend Shadows Name As Integer = 2{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeTest1 ()
+ {
+ string code = GeneratePropertyMembersAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+#if NET_2_0
+ " Private Property () As System.Void{0}" +
+#else
+ " Private Property As System.Void{0}" +
+#endif
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeTest2 ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Public,
+ false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Overridable Property Name() As Integer{0}" +
+#else
+ " Public Overridable Property Name As Integer{0}" +
+#endif
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeGetOnly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Family,
+ true, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Protected Overridable ReadOnly Property Name() As Integer{0}" +
+#else
+ " Protected Overridable ReadOnly Property Name As Integer{0}" +
+#endif
+ " Get{0}" +
+ " End Get{0}" +
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeSetOnly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Assembly,
+ false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Friend Overridable WriteOnly Property Name() As Integer{0}" +
+#else
+ " Friend WriteOnly Property Name As Integer{0}" +
+#endif
+ " Set{0}" +
+ " End Set{0}" +
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeGetSet ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Family,
+ true, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Protected Overridable Property Name() As Integer{0}" +
+#else
+ " Protected Overridable Property Name As Integer{0}" +
+#endif
+ " Get{0}" +
+ " End Get{0}" +
+ " Set{0}" +
+ " End Set{0}" +
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+#if !NET_2_0
+ // A bug in MS.NET 1.x causes MemberAttributes.FamilyOrAssembly to be
+ // generated as Protected
+ [Category ("NotDotNet")]
+#endif
+ [Test]
+ public override void PropertyMembersTypeFamilyOrAssembly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.FamilyOrAssembly,
+ false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Protected Friend Property Name() As Integer{0}" +
+#else
+ " Protected Friend Property Name As Integer{0}" +
+#endif
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeAssembly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Assembly,
+ false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Friend Overridable Property Name() As Integer{0}" +
+#else
+ " Friend Property Name As Integer{0}" +
+#endif
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyParametersTest ()
+ {
+ string code = GeneratePropertyParameters (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Public Overridable Property Name(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}" +
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerTest1 ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Public,
+ false, false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Public Overridable Default Property iTem(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}" +
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerTest2 ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Public,
+ false, false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Overridable Property iTem() As Integer{0}" +
+#else
+ " Public Overridable Property iTem As Integer{0}" +
+#endif
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerGetOnly ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Family,
+ true, false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Protected Overridable Default ReadOnly Property iTem(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}" +
+ " Get{0}" +
+ " End Get{0}" +
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerSetOnly ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Family,
+ false, true, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Protected Overridable Default WriteOnly Property iTem(ByVal value1 As Object, ByRef value2 As Integer) As Integer{0}" +
+ " Set{0}" +
+ " End Set{0}" +
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyImplementationTypes ()
+ {
+ string code = GeneratePropertyImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Overridable Property Name() As Integer Implements IPolicy.Name , IWhatever.Name{0}" +
+#else
+ " Public Overridable Property Name As Integer Implements IPolicy.Name , IWhatever.Name{0}" +
+#endif
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyOverloadsTest1 ()
+ {
+ string code = GeneratePropertyOverloads1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Protected Overloads Overridable Property Name() As Integer{0}" +
+#else
+ " Protected Overloads Overridable Property Name As Integer{0}" +
+#endif
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyOverloadsTest2 ()
+ {
+ string code = GeneratePropertyOverloads2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Overloads Overridable Property Name() As Integer{0}" +
+#else
+ " Public Overloads Overridable Property Name As Integer{0}" +
+#endif
+ " End Property{0}" +
+ " {0}" +
+ " Private Overloads Property Name(ByVal value1 As Object) As Integer{0}" +
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyOverloadsTest3 ()
+ {
+ string code = GeneratePropertyOverloads3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Overridable Property Name() As Integer{0}" +
+#else
+ " Public Overridable Property Name As Integer{0}" +
+#endif
+ " End Property{0}" +
+ " {0}" +
+ " Property System_Int32_Name(ByVal value1 As Object) As Integer Implements Integer.Name{0}" +
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyPrivateImplementationType ()
+ {
+ string code = GeneratePropertyPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Overridable Property System_Int32_Item(ByVal value1 As Object) As Integer Implements Integer.Item{0}" +
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyImplementationTypeOrder ()
+ {
+ string code = GeneratePropertyImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Overridable Property System_Int32_Item(ByVal value1 As Object) As Integer Implements IPolicy.Item{0}" +
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyNewSlotTest ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Private |
+ MemberAttributes.New, true, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Private Shadows Property Name() As Integer{0}" +
+#else
+ " Private Shadows Property Name As Integer{0}" +
+#endif
+ " Get{0}" +
+ " End Get{0}" +
+ " Set{0}" +
+ " End Set{0}" +
+ " End Property{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodMembersTypeTest1 ()
+ {
+ string code = GenerateMethodMembersType1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+ " Private Sub (){0}" +
+ " End Sub{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodMembersTypeTest2 ()
+ {
+ string code = GenerateMethodMembersType2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Public Overridable Function Something(ByVal value1 As Object, ByVal value2 As Object, ByRef index As Integer, ByRef count As Integer) As Integer{0}" +
+ " End Function{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodMembersTypeTest3 ()
+ {
+ string code = GenerateMethodMembersType3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Public Overridable Function Something(<A(), B()> ByVal value As Object, <C(A1:=false, A2:=true), D()> ByRef __exception As Integer) As Integer{0}" +
+#else
+ " Public Overridable Function Something(<A(), B()> ByVal value As Object, <C(A1:=false, A2:=true), D()> ByRef As Integer) As Integer{0}" +
+#endif
+ " End Function{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodImplementationTypes ()
+ {
+ string code = GenerateMethodImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Friend Overridable Function Execute() As Integer Implements IPolicy.Execute , IWhatever.Execute{0}" +
+#else
+ " Friend Function Execute() As Integer Implements IPolicy.Execute , IWhatever.Execute{0}" +
+#endif
+ " End Function{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodOverloadsTest1 ()
+ {
+ string code = GenerateMethodOverloads1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " Friend Overloads Overridable Function Execute() As Integer{0}" +
+#else
+ " Friend Overloads Function Execute() As Integer{0}" +
+#endif
+ " End Function{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodOverloadsTest2 ()
+ {
+ string code = GenerateMethodOverloads2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Public Overloads Overridable Sub Execute(){0}" +
+ " End Sub{0}" +
+ " {0}" +
+ " Private Overloads Function Execute(ByVal value1 As Object) As Integer{0}" +
+ " End Function{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodOverloadsTest3 ()
+ {
+ string code = GenerateMethodOverloads3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Public Overridable Sub Execute(){0}" +
+ " End Sub{0}" +
+ " {0}" +
+ " Function System_Int32_Execute(ByVal value1 As Object) As Integer Implements Integer.Execute{0}" +
+ " End Function{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodPrivateImplementationType ()
+ {
+ string code = GenerateMethodPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Overridable Function System_Int32_Execute(ByVal value1 As Object) As Integer Implements Integer.Execute{0}" +
+ " End Function{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodImplementationTypeOrder ()
+ {
+ string code = GenerateMethodImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Overridable Function System_Int32_Execute(ByVal value1 As Object) As Integer Implements IPolicy.Execute{0}" +
+ " End Function{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodReturnTypeAttributes ()
+ {
+ string code = GenerateMethodReturnTypeAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+ " Public Overridable Function Execute() As <C(A1:=false, A2:=true), D()> Integer{0}" +
+ " End Function{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodNewSlotTest ()
+ {
+ string code = GenerateMethodNewSlot (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Public Shadows Overridable Function Execute() As Integer{0}" +
+ " End Function{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ConstructorAttributesTest ()
+ {
+ // FIXME: updated to reflect mbas workaround
+ string code = GenerateConstructorAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+ " Private Sub New(){0}" +
+#if !NET_2_0
+ " MyBase.New(){0}" +
+#endif
+ " End Sub{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ConstructorParametersTest ()
+ {
+ // FIXME: updated to reflect mbas workaround
+ string code = GenerateConstructorParameters (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Public Sub New(ByVal value1 As Object, ByVal value2 As Object, ByRef index As Integer, ByRef count As Integer){0}" +
+#if !NET_2_0
+ " MyBase.New(){0}" +
+#endif
+ " End Sub{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ConstructorParameterAttributesTest ()
+ {
+ // FIXME: updated to reflect mbas workaround
+ string code = GenerateConstructorParameterAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Private Sub New(<A(), B()> ByVal value As Object, <C(A1:=false, A2:=true), D()> ByRef index As Integer){0}" +
+#if !NET_2_0
+ " MyBase.New(){0}" +
+#endif
+ " End Sub{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void BaseConstructorSingleArg ()
+ {
+ string code = GenerateBaseConstructor (false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Protected Sub New(ByVal value1 As Object, ByRef value2 As Integer){0}" +
+ " MyBase.New(value1){0}" +
+ " End Sub{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void BaseConstructorMultipleArgs ()
+ {
+ string code = GenerateBaseConstructor (true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Protected Sub New(ByVal value1 As Object, ByRef value2 As Integer){0}" +
+ " MyBase.New(value1, value2){0}" +
+ " End Sub{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ChainedConstructorSingleArg ()
+ {
+ string code = GenerateChainedConstructor (false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Public Sub New(ByVal value1 As Object, ByRef value2 As Integer){0}" +
+ " Me.New(value1){0}" +
+ " End Sub{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ChainedConstructorMultipleArgs ()
+ {
+ string code = GenerateChainedConstructor (true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+ " Public Sub New(ByVal value1 As Object, ByRef value2 As Integer){0}" +
+ " Me.New(value1, value2){0}" +
+ " End Sub{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void TypeConstructorTest ()
+ {
+ string code = GenerateTypeConstructor (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " <A(), _{0}" +
+ " B()> _{0}" +
+#endif
+ " Shared Sub New(){0}" +
+ " End Sub{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EntryPointMethodTest ()
+ {
+ string code = GenerateEntryPointMethod (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Structure Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " <A()> _{0}" +
+#endif
+ " Public Shared Sub Main(){0}" +
+ " Dim x As Test.InnerType{0}" +
+ " End Sub{0}" +
+ "End Structure{0}", NewLine), code);
+ }
+ }
+
+ [TestFixture]
+ public class CodeGeneratorFromTypeTest_Enum : CodeGeneratorFromTypeTestBase
+ {
+ private CodeTypeDeclaration _typeDeclaration;
+ private ICodeGenerator _codeGenerator;
+
+ protected override ICodeGenerator CodeGenerator
+ {
+ get { return _codeGenerator; }
+ }
+
+ protected override CodeTypeDeclaration TypeDeclaration
+ {
+ get { return _typeDeclaration; }
+ }
+
+ [SetUp]
+ public override void SetUp ()
+ {
+ base.SetUp ();
+ _typeDeclaration = new CodeTypeDeclaration ();
+ _typeDeclaration.IsEnum = true;
+
+ CodeDomProvider provider = new VBCodeProvider ();
+ _codeGenerator = provider.CreateGenerator ();
+ }
+
+ [Test]
+ public override void DefaultTypeTest ()
+ {
+ string code = GenerateDefaultType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ [ExpectedException (typeof (NullReferenceException))]
+ public override void NullTypeTest ()
+ {
+ GenerateNullType (Options);
+ }
+
+ [Test]
+ public override void SimpleTypeTest ()
+ {
+ string code = GenerateSimpleType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void DerivedTypeTest ()
+ {
+ string code = GenerateDerivedType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+#if NET_2_0
+ "Friend Enum Test1 As Integer{0}" +
+#else
+ "Enum Test1 As Integer{0}" +
+#endif
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void AttributesAndTypeTest ()
+ {
+ string code = GenerateAttributesAndType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "<A(), _{0}" +
+ " B()> _{0}" +
+ "Public Enum Test1{0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventMembersTypeTest1 ()
+ {
+ string code = GenerateEventMembersType1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventMembersTypeTest2 ()
+ {
+ string code = GenerateEventMembersType2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventImplementationTypes ()
+ {
+ string code = GenerateEventImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventPrivateImplementationType ()
+ {
+ string code = GenerateEventPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void EventImplementationTypeOrder ()
+ {
+ string code = GenerateEventImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void FieldMembersAttributesTest ()
+ {
+ string code = GenerateFieldMembersAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ " <A(), _{0}" +
+ " B()> _{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void FieldMembersTypeTest ()
+ {
+ string code = GenerateFieldMembersType (MemberAttributes.Public, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ " Name = 2{0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void FieldNewSlotTest ()
+ {
+ string code = GenerateFieldMembersType (MemberAttributes.Assembly |
+ MemberAttributes.New, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ " Name = 2{0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeTest1 ()
+ {
+ string code = GeneratePropertyMembersAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeTest2 ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Public,
+ false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeGetOnly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Family,
+ true, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeSetOnly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Assembly,
+ false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeGetSet ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Family,
+ true, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeFamilyOrAssembly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.FamilyOrAssembly,
+ false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyMembersTypeAssembly ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Assembly,
+ false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyParametersTest ()
+ {
+ string code = GeneratePropertyParameters (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerTest1 ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Public,
+ false, false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerTest2 ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Public,
+ false, false, false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerGetOnly ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Family,
+ true, false, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyIndexerSetOnly ()
+ {
+ string code = GeneratePropertyIndexer (MemberAttributes.Family,
+ false, true, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyImplementationTypes ()
+ {
+ string code = GeneratePropertyImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyOverloadsTest1 ()
+ {
+ string code = GeneratePropertyOverloads1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyOverloadsTest2 ()
+ {
+ string code = GeneratePropertyOverloads2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyOverloadsTest3 ()
+ {
+ string code = GeneratePropertyOverloads3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyPrivateImplementationType ()
+ {
+ string code = GeneratePropertyPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyImplementationTypeOrder ()
+ {
+ string code = GeneratePropertyImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void PropertyNewSlotTest ()
+ {
+ string code = GeneratePropertyMembersType (MemberAttributes.Private |
+ MemberAttributes.New, true, true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodMembersTypeTest1 ()
+ {
+ string code = GenerateMethodMembersType1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodMembersTypeTest2 ()
+ {
+ string code = GenerateMethodMembersType2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodMembersTypeTest3 ()
+ {
+ string code = GenerateMethodMembersType3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodImplementationTypes ()
+ {
+ string code = GenerateMethodImplementationTypes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodOverloadsTest1 ()
+ {
+ string code = GenerateMethodOverloads1 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodOverloadsTest2 ()
+ {
+ string code = GenerateMethodOverloads2 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
- // first parameter
- CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression (
- typeof (object), "value1");
- ctor.Parameters.Add (param);
+ [Test]
+ public override void MethodOverloadsTest3 ()
+ {
+ string code = GenerateMethodOverloads3 (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodPrivateImplementationType ()
+ {
+ string code = GenerateMethodPrivateImplementationType (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodImplementationTypeOrder ()
+ {
+ string code = GenerateMethodImplementationTypeOrder (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodReturnTypeAttributes ()
+ {
+ string code = GenerateMethodReturnTypeAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void MethodNewSlotTest ()
+ {
+ string code = GenerateMethodNewSlot (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ConstructorAttributesTest ()
+ {
+ string code = GenerateConstructorAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ConstructorParametersTest ()
+ {
+ string code = GenerateConstructorParameters (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void ConstructorParameterAttributesTest ()
+ {
+ string code = GenerateConstructorParameterAttributes (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
+
+ [Test]
+ public override void BaseConstructorSingleArg ()
+ {
+ string code = GenerateBaseConstructor (false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
- // second parameter
- param = new CodeParameterDeclarationExpression (typeof (int), "value2");
- param.Direction = FieldDirection.Out;
- ctor.Parameters.Add (param);
+ [Test]
+ public override void BaseConstructorMultipleArgs ()
+ {
+ string code = GenerateBaseConstructor (true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
- // chained ctor args
- ctor.ChainedConstructorArgs.Add (new CodeVariableReferenceExpression ("value1"));
- ctor.ChainedConstructorArgs.Add (new CodeVariableReferenceExpression ("value2"));
+ [Test]
+ public override void ChainedConstructorSingleArg ()
+ {
+ string code = GenerateChainedConstructor (false, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
- // should be ignored as chained ctor args should take precedence over base
- // ctor args
- ctor.BaseConstructorArgs.Add (new CodeVariableReferenceExpression ("value3"));
+ [Test]
+ public override void ChainedConstructorMultipleArgs ()
+ {
+ string code = GenerateChainedConstructor (true, Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
- type.Members.Add (ctor);
+ [Test]
+ public override void TypeConstructorTest ()
+ {
+ string code = GenerateTypeConstructor (Options);
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "Public Enum Test1{0}" +
+ " {0}" +
+ "End Enum{0}", NewLine), code);
+ }
- Generate ();
+ [Test]
+ public override void EntryPointMethodTest ()
+ {
+ string code = GenerateEntryPointMethod (Options);
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "Public Class Test1{0}"
- + " {0}"
- + " Public Sub New(ByVal value1 As Object, ByRef value2 As Integer){0}"
- + " Me.New(value1, value2){0}"
- + " End Sub{0}"
- + "End Class{0}", writer.NewLine), Code);
+ "Public Enum Test1{0}" +
+ " {0}" +
+#if NET_2_0
+ " <A()> _{0}" +
+#endif
+ " Public Shared Sub Main(){0}" +
+ " Dim x As Test.InnerType{0}" +
+ " End Sub{0}" +
+ "End Enum{0}", NewLine), code);
}
}
}