public void GetterWithInvalidSetterDoesNotGenerateProperty() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider()); var returnType = new CsFundamentalType(typeof(int)); var getMethod = new CsMethod { Name = "GetActive", ReturnValue = new CsReturnValue { PublicType = returnType, MarshalType = returnType }, }; var invalidSetMethod = new CsMethod { Name = "SetActive", ReturnValue = new CsReturnValue { PublicType = new CsFundamentalType(typeof(void)) } }; Assert.Empty(propertyBuilder.CreateProperties(new[] { getMethod, invalidSetMethod })); Assert.Empty(propertyBuilder.CreateProperties(new[] { invalidSetMethod, getMethod })); }
public void MethodWithNameStartingWithSetAndReturningResultGeneratesProperty() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider()); var paramType = new CsFundamentalType(typeof(int)); var setMethod = new CsMethod { Name = "SetActive", ReturnValue = new CsReturnValue { PublicType = new CsStruct { Name = "SharpGen.Runtime.Result" } } }; setMethod.Add(new CsParameter { PublicType = paramType }); var properties = propertyBuilder.CreateProperties(new[] { setMethod }); Assert.True(properties.ContainsKey("Active"), "Property not created"); var prop = properties["Active"]; Assert.Equal(paramType, prop.PublicType); }
public void SetterVisibilityInternal() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider()); var paramType = new CsFundamentalType(typeof(int)); var setMethod = new CsMethod { Name = "SetActive", ReturnValue = new CsReturnValue { PublicType = new CsFundamentalType(typeof(void)) }, AllowProperty = true }; setMethod.Add(new CsParameter { PublicType = paramType }); var iface = new CsInterface(); iface.Add(setMethod); var prop = new CsProperty("Active") { Setter = setMethod }; propertyBuilder.AttachPropertyToParent(prop); Assert.Equal(Visibility.Internal, setMethod.Visibility); }
public void PersistentGetterGeneratesPersistentProperty() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider()); var paramType = new CsFundamentalType(typeof(int)); var getMethod = new CsMethod { Name = "GetActive", ReturnValue = new CsReturnValue { PublicType = paramType, MarshalType = paramType }, AllowProperty = true, IsPersistent = true }; var iface = new CsInterface(); iface.Add(getMethod); var prop = new CsProperty("Active") { Getter = getMethod }; propertyBuilder.AttachPropertyToParent(prop); Assert.True(prop.IsPersistent); }
public void MethodWithNameStartingWithSetCreatesProperty() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider()); var paramType = new CsFundamentalType(typeof(int)); var setMethod = new CsMethod { Name = "SetActive", ReturnValue = new CsReturnValue { PublicType = new CsFundamentalType(typeof(void)) } }; setMethod.Add(new CsParameter { PublicType = paramType }); var properties = propertyBuilder.CreateProperties(new[] { setMethod }); Assert.True(properties.ContainsKey("Active")); var prop = properties["Active"]; Assert.Equal(paramType, prop.PublicType); }
public void DoesNotGeneratePropertyIfGetterAndSetterMismatch() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider()); var paramType = new CsFundamentalType(typeof(int)); var getMethod = new CsMethod { Name = "GetActive", ReturnValue = new CsReturnValue { PublicType = paramType, MarshalType = paramType }, }; var setMethod = new CsMethod { Name = "SetActive", ReturnValue = new CsReturnValue { PublicType = new CsFundamentalType(typeof(void)) } }; setMethod.Add(new CsParameter { PublicType = new CsFundamentalType(typeof(short)) }); var props = propertyBuilder.CreateProperties(new[] { getMethod, setMethod }); Assert.Empty(props); }
public void GetterMethodReturningStatusCodeWithOutParamGeneratesProperty() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider()); var paramType = new CsFundamentalType(typeof(int)); var getMethod = new CsMethod { Name = "GetActive", ReturnValue = new CsReturnValue { PublicType = new CsStruct { Name = "SharpGen.Runtime.Result" } } }; getMethod.Add(new CsParameter { PublicType = paramType, Attribute = CsParameterAttribute.Out }); var properties = propertyBuilder.CreateProperties(new[] { getMethod }); Assert.True(properties.ContainsKey("Active")); var prop = properties["Active"]; Assert.True(prop.IsPropertyParam); Assert.Equal(paramType, prop.PublicType); }
public void GetterVisibiltyInternal() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider("SharpGen.Runtime")); var paramType = new CsFundamentalType(typeof(int)); var getMethod = new CsMethod { Name = "GetActive", ReturnValue = new CsReturnValue { PublicType = paramType, MarshalType = paramType }, AllowProperty = true }; var iface = new CsInterface(); iface.Add(getMethod); var prop = new CsProperty("Active") { Getter = getMethod }; propertyBuilder.AttachPropertyToParent(prop); Assert.Equal(Visibility.Internal, getMethod.Visibility); }
public void PropertyNotAttachedWhenGetterAllowPropertyIsFalse() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider("SharpGen.Runtime")); var paramType = new CsFundamentalType(typeof(int)); var getMethod = new CsMethod { Name = "GetActive", ReturnValue = new CsReturnValue { PublicType = paramType, MarshalType = paramType }, AllowProperty = false }; var iface = new CsInterface(); iface.Add(getMethod); var prop = new CsProperty("Active") { Getter = getMethod }; propertyBuilder.AttachPropertyToParent(prop); Assert.Null(prop.Parent); }
public void SetOnlyPropertyAttachedToSetterType() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider("SharpGen.Runtime")); var paramType = new CsFundamentalType(typeof(int)); var setMethod = new CsMethod { Name = "SetActive", ReturnValue = new CsReturnValue { PublicType = new CsFundamentalType(typeof(void)) }, AllowProperty = true }; setMethod.Add(new CsParameter { PublicType = paramType }); var iface = new CsInterface(); iface.Add(setMethod); var prop = new CsProperty("Active") { Setter = setMethod }; propertyBuilder.AttachPropertyToParent(prop); Assert.Equal(iface, prop.Parent); }
public void PropertyNotAttachedWhenSetterAllowPropertyIsFalse() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider()); var paramType = new CsFundamentalType(typeof(int)); var setMethod = new CsMethod { Name = "SetActive", ReturnValue = new CsReturnValue { PublicType = new CsFundamentalType(typeof(void)) }, AllowProperty = false }; setMethod.Add(new CsParameter { PublicType = paramType }); var iface = new CsInterface(); iface.Add(setMethod); var prop = new CsProperty("Active") { Setter = setMethod }; propertyBuilder.AttachPropertyToParent(prop); Assert.Null(prop.Parent); }
public SignatureInteropTypeOverride(CsFundamentalType newType, InteropMethodSignatureFlags?setFlags = null) { NewType = newType ?? throw new ArgumentNullException(nameof(newType)); if (setFlags.HasValue) { SetFlags = setFlags.Value; } }
private static bool IsIntegerFundamentalType(CsFundamentalType marshalType) { return(marshalType.Type == typeof(int) || marshalType.Type == typeof(short) || marshalType.Type == typeof(byte) || marshalType.Type == typeof(long) || marshalType.Type == typeof(uint) || marshalType.Type == typeof(ushort) || marshalType.Type == typeof(sbyte) || marshalType.Type == typeof(ulong)); }
public void NonPropertyMethodWithNonPropertyNameShouldNotCreateProperty() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider()); var paramType = new CsFundamentalType(typeof(int)); var setMethod = new CsMethod { Name = "MyMethod", ReturnValue = new CsReturnValue { PublicType = new CsFundamentalType(typeof(void)) } }; Assert.Empty(propertyBuilder.CreateProperties(new[] { setMethod })); }
public void InvalidSetterDoesNotCreateProperty() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider()); var paramType = new CsFundamentalType(typeof(int)); var setMethod = new CsMethod { Name = "SetActive", ReturnValue = new CsReturnValue { PublicType = new CsFundamentalType(typeof(void)) } }; Assert.Empty(propertyBuilder.CreateProperties(new[] { setMethod })); }
public void InvalidGetterDoesNotCreateProperty() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider("SharpGen.Runtime")); var returnType = new CsFundamentalType(typeof(void)); var getMethod = new CsMethod { Name = "GetActive", ReturnValue = new CsReturnValue { PublicType = returnType, MarshalType = returnType }, }; Assert.Empty(propertyBuilder.CreateProperties(new[] { getMethod })); }
public void DoesNotGeneratePropertyIfOverloaded() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider("SharpGen.Runtime")); var paramType = new CsFundamentalType(typeof(int)); var getMethod = new CsMethod { Name = "GetActive", ReturnValue = new CsReturnValue { PublicType = paramType, MarshalType = paramType }, }; var getMethodOverload = new CsMethod { Name = "GetActive", ReturnValue = new CsReturnValue { PublicType = paramType, MarshalType = paramType }, }; var setMethod = new CsMethod { Name = "SetActive", ReturnValue = new CsReturnValue { PublicType = new CsFundamentalType(typeof(void)) } }; setMethod.Add(new CsParameter { PublicType = paramType }); Assert.Empty(propertyBuilder.CreateProperties(new[] { getMethod, setMethod, getMethodOverload })); Assert.Empty(propertyBuilder.CreateProperties(new[] { getMethod, getMethodOverload, setMethod })); }
public void DoesNotGeneratePropertyIfGetterAndSetterMismatch_ParameterizedGetter() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider()); var paramType = new CsFundamentalType(typeof(int)); var getMethod = new CsMethod { Name = "GetActive", ReturnValue = new CsReturnValue { PublicType = new CsStruct { Name = "SharpGen.Runtime.Result" } } }; getMethod.Add(new CsParameter { PublicType = paramType, Attribute = CsParameterAttribute.Out }); var setMethod = new CsMethod { Name = "SetActive", ReturnValue = new CsReturnValue { PublicType = new CsFundamentalType(typeof(void)) } }; setMethod.Add(new CsParameter { PublicType = new CsFundamentalType(typeof(short)) }); var props = propertyBuilder.CreateProperties(new[] { getMethod, setMethod }); Assert.Empty(props); }
public CsEnum(CppEnum cppEnum, string name, CsFundamentalType underlyingType) : base(cppEnum, name) { UnderlyingType = underlyingType ?? throw new ArgumentNullException(nameof(underlyingType)); if (cppEnum == null) { return; } // If C++ enum name is ending with FLAG OR FLAGS, then tag this enum as flags var cppEnumName = cppEnum.Name; if (cppEnumName.EndsWith("FLAG") || cppEnumName.EndsWith("FLAGS")) { IsFlag = true; } var tag = cppEnum.Rule; IsFlag = tag.EnumHasFlags ?? IsFlag; }
public void MethodWithNameStartingWithGetCreatesProperty() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider()); var returnType = new CsFundamentalType(typeof(int)); var getMethod = new CsMethod { Name = "GetActive", ReturnValue = new CsReturnValue { PublicType = returnType, MarshalType = returnType }, }; var properties = propertyBuilder.CreateProperties(new[] { getMethod }); Assert.True(properties.ContainsKey("Active")); var prop = properties["Active"]; Assert.Equal(returnType, prop.PublicType); }
public void GeneratePropertyIfGetterAndSetterMatch() { var propertyBuilder = new PropertyBuilder(new GlobalNamespaceProvider("SharpGen.Runtime")); var paramType = new CsFundamentalType(typeof(int)); var getMethod = new CsMethod { Name = "GetActive", ReturnValue = new CsReturnValue { PublicType = paramType, MarshalType = paramType }, }; var setMethod = new CsMethod { Name = "SetActive", ReturnValue = new CsReturnValue { PublicType = new CsFundamentalType(typeof(void)) } }; setMethod.Add(new CsParameter { PublicType = paramType }); var props = propertyBuilder.CreateProperties(new[] { getMethod, setMethod }); Assert.Single(props); Assert.NotNull(props["Active"].Getter); Assert.NotNull(props["Active"].Setter); }