/trunk/Examples/test-suite/csharp/csharp_attributes_runme.cs
C# | 266 lines | 202 code | 29 blank | 35 comment | 66 complexity | 0fae30f4cb474a7b2dd154e31379cc01 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- using System;
- using System.Reflection;
- using System.ComponentModel;
- using csharp_attributesNamespace;
- public class runme
- {
- static void Main()
- {
- // Custom attributes typemap tests
- //
- // cstype typemap attributechecks
- //
- // Global function cstype typemap attributes check
- Type globaltype = typeof(csharp_attributes);
- {
- MethodInfo member = (MethodInfo)globaltype.GetMember("GlobalFunction")[0];
- if (Attribute.GetCustomAttribute(member, typeof(IntOutAttribute)) == null)
- throw new Exception("No IntOut attribute for " + member.Name);
- ParameterInfo parameter = member.GetParameters()[0]; // expecting one parameter
- if (parameter.Name != "myInt")
- throw new Exception("Incorrect parameter name");
- Attribute attribute = Attribute.GetCustomAttributes(parameter)[0];
- if (attribute.GetType() != typeof(IntInAttribute))
- throw new Exception("Expecting IntIn attribute");
- }
- // Constant - cstype typemap attributes check
- {
- MemberInfo member = (MemberInfo)globaltype.GetMember("TESTMACRO")[0];
- if (Attribute.GetCustomAttribute(member, typeof(IntOutAttribute)) == null)
- throw new Exception("No IntOut attribute for " + member.Name);
- }
- // Non-static method cstype typemap attributes check
- Type type = typeof(Stations);
- {
- MethodInfo member = (MethodInfo)type.GetMember("Reading")[0];
- if (Attribute.GetCustomAttribute(member, typeof(IntOutAttribute)) == null)
- throw new Exception("No IntOut attribute for " + member.Name);
- ParameterInfo parameter = member.GetParameters()[0]; // expecting one parameter
- if (parameter.Name != "myInt")
- throw new Exception("Incorrect parameter name");
- Attribute attribute = Attribute.GetCustomAttributes(parameter)[0];
- if (attribute.GetType() != typeof(IntInAttribute))
- throw new Exception("Expecting IntIn attribute");
- }
- // Static method cstype typemap attributes check
- {
- MethodInfo member = (MethodInfo)type.GetMember("Swindon")[0];
- if (Attribute.GetCustomAttribute(member, typeof(IntOutAttribute)) == null)
- throw new Exception("No IntOut attribute for " + member.Name);
- ParameterInfo parameter = member.GetParameters()[0]; // expecting one parameter
- if (parameter.Name != "myInt")
- throw new Exception("Incorrect parameter name");
- Attribute attribute = Attribute.GetCustomAttributes(parameter)[0];
- if (attribute.GetType() != typeof(IntInAttribute))
- throw new Exception("Expecting IntIn attribute");
- }
- // Constructor cstype typemap attributes check
- {
- ConstructorInfo member = (ConstructorInfo)type.GetConstructors()[0];
- ParameterInfo parameter = member.GetParameters()[0]; // expecting one parameter
- if (parameter.Name != "myInt")
- throw new Exception("Incorrect parameter name");
- Attribute attribute = Attribute.GetCustomAttributes(parameter)[0];
- if (attribute.GetType() != typeof(IntInAttribute))
- throw new Exception("Expecting IntIn attribute");
- }
- //
- // imtype typemap attributechecks
- //
- // Global function imtype typemap attributes check
- Type imclasstype = typeof(csharp_attributesPINVOKE);
- {
- MethodInfo member = (MethodInfo)imclasstype.GetMember("GlobalFunction")[0];
- if (Attribute.GetCustomAttribute(member, typeof(IntegerOutAttribute)) == null)
- throw new Exception("No IntegerOut attribute for " + member.Name);
- ParameterInfo parameter = member.GetParameters()[0]; // checking 1st parameter
- Attribute attribute = Attribute.GetCustomAttributes(parameter)[0];
- if (attribute.GetType() != typeof(IntegerInAttribute))
- throw new Exception("Expecting IntegerIn attribute");
- }
- // Constant - imtype typemap attributes check
- {
- MethodInfo member = (MethodInfo)imclasstype.GetMember("TESTMACRO_get")[0];
- if (Attribute.GetCustomAttribute(member, typeof(IntegerOutAttribute)) == null)
- throw new Exception("No IntegerOut attribute for " + member.Name);
- }
- // Non-static method imtype typemap attributes check
- {
- MethodInfo member = (MethodInfo)imclasstype.GetMember("Stations_Reading")[0];
- if (Attribute.GetCustomAttribute(member, typeof(IntegerOutAttribute)) == null)
- throw new Exception("No IntegerOut attribute for " + member.Name);
- ParameterInfo parameter = member.GetParameters()[1]; // checking 2nd parameter
- Attribute attribute = Attribute.GetCustomAttributes(parameter)[0];
- if (attribute.GetType() != typeof(IntegerInAttribute))
- throw new Exception("Expecting IntegerIn attribute");
- }
- // Static method imtype typemap attributes check
- {
- MethodInfo member = (MethodInfo)imclasstype.GetMember("Stations_Swindon")[0];
- if (Attribute.GetCustomAttribute(member, typeof(IntegerOutAttribute)) == null)
- throw new Exception("No IntegerOut attribute for " + member.Name);
- ParameterInfo parameter = member.GetParameters()[0]; // checking 1st parameter
- Attribute attribute = Attribute.GetCustomAttributes(parameter)[0];
- if (attribute.GetType() != typeof(IntegerInAttribute))
- throw new Exception("Expecting IntegerIn attribute");
- }
- //
- // attributes feature
- //
- Type moretype = typeof(MoreStations);
- // Constructor attributes feature check
- {
- ConstructorInfo member = (ConstructorInfo)moretype.GetConstructors()[0];
- if (Attribute.GetCustomAttribute(member, typeof(InterCity1Attribute)) == null)
- throw new Exception("MoreStations::MoreStations attribute failed");
- }
- // Non-static method attributes feature check
- {
- MethodInfo member = (MethodInfo)moretype.GetMember("Chippenham")[0];
- if (Attribute.GetCustomAttribute(member, typeof(InterCity2Attribute)) == null)
- throw new Exception("MoreStations::Chippenham attribute failed");
- }
- // Static method attributes feature check
- {
- MethodInfo member = (MethodInfo)moretype.GetMember("Bath")[0];
- if (Attribute.GetCustomAttribute(member, typeof(InterCity3Attribute)) == null)
- throw new Exception("MoreStations::Bath attribute failed");
- }
- // Non-static member variable attributes feature check
- {
- PropertyInfo member = (PropertyInfo)moretype.GetProperty("Bristol");
- if (Attribute.GetCustomAttribute(member, typeof(InterCity4Attribute)) == null)
- throw new Exception("MoreStations::Bristol attribute failed");
- }
- // Static member variable attributes feature check
- {
- PropertyInfo member = (PropertyInfo)moretype.GetProperty("WestonSuperMare");
- if (Attribute.GetCustomAttribute(member, typeof(InterCity5Attribute)) == null)
- throw new Exception("MoreStations::Bristol attribute failed");
- }
- // Global function attributes feature check
- {
- MethodInfo member = (MethodInfo)globaltype.GetMember("Paddington")[0];
- if (Attribute.GetCustomAttribute(member, typeof(InterCity7Attribute)) == null)
- throw new Exception("MoreStations::Paddington attribute failed");
- }
- // Global variables attributes feature check
- {
- PropertyInfo member = (PropertyInfo)globaltype.GetProperty("DidcotParkway");
- if (Attribute.GetCustomAttribute(member, typeof(InterCity8Attribute)) == null)
- throw new Exception("MoreStations::Paddington attribute failed");
- }
- //
- // csattribute typemaps
- //
- // Class csattribute typemap
- {
- Object[] attribs = moretype.GetCustomAttributes(true);
- Eurostar1Attribute tgv = (Eurostar1Attribute)attribs[0];
- if (tgv == null)
- throw new Exception("No attribute for MoreStations");
- }
- // Nested enum csattribute typemap
- {
- MemberInfo member = (MemberInfo)moretype.GetMember("Wales")[0];
- if (Attribute.GetCustomAttribute(member, typeof(Eurostar2Attribute)) == null)
- throw new Exception("No attribute for " + member.Name);
- }
- // Enum value attributes
- Type walesType = typeof(MoreStations.Wales);
- {
- MemberInfo member = (MemberInfo)walesType.GetMember("Cardiff")[0];
- DescriptionAttribute attribute = (DescriptionAttribute)Attribute.GetCustomAttribute(member, typeof(System.ComponentModel.DescriptionAttribute));
- if (attribute == null)
- throw new Exception("No attribute for " + member.Name);
- if (attribute.Description != "Cardiff city station")
- throw new Exception("Incorrect attribute value for " + member.Name);
- }
- {
- MemberInfo member = (MemberInfo)walesType.GetMember("Swansea")[0];
- DescriptionAttribute attribute = (DescriptionAttribute)Attribute.GetCustomAttribute(member, typeof(System.ComponentModel.DescriptionAttribute));
- if (attribute == null)
- throw new Exception("No attribute for " + member.Name);
- if (attribute.Description != "Swansea city station")
- throw new Exception("Incorrect attribute value for " + member.Name);
- }
- // Enum csattribute typemap
- {
- Type cymrutype = typeof(Cymru);
- Object[] attribs = cymrutype.GetCustomAttributes(true);
- Eurostar3Attribute tgv = (Eurostar3Attribute)attribs[0];
- if (tgv == null)
- throw new Exception("No attribute for Cymru");
- }
- // No runtime test for directorinattributes and directoroutattributes
- }
- }
- // Custom attribute classes
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class IntInAttribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class IntOutAttribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class IntegerInAttribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class IntegerOutAttribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class InterCity1Attribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class InterCity2Attribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class InterCity3Attribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class InterCity4Attribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class InterCity5Attribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class InterCity6Attribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class InterCity7Attribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class InterCity8Attribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class Eurostar1Attribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class Eurostar2Attribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class Eurostar3Attribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class ThreadSafeAttribute : Attribute {
- public ThreadSafeAttribute(bool safe) {}
- public ThreadSafeAttribute() {}
- }
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class DirectorIntegerOutAttribute : Attribute {}
- [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
- public class DirectorIntegerInAttribute : Attribute {}