diff --git a/src/Generator/Generators/CLI/CLISourcesTemplate.cs b/src/Generator/Generators/CLI/CLISourcesTemplate.cs index 669bba9b..a9ca519b 100644 --- a/src/Generator/Generators/CLI/CLISourcesTemplate.cs +++ b/src/Generator/Generators/CLI/CLISourcesTemplate.cs @@ -348,8 +348,11 @@ namespace CppSharp.Generators.CLI var args = new List(); if (isIndexer) - args.Add("int index"); - args.Add(string.Format("{0} value", type)); + args.Add("int index"); + + var function = decl as Function; + var argName = function != null ? function.Parameters[0].Name : "value"; + args.Add(string.Format("{0} {1}", type, argName)); WriteLine("void {0}::{1}::set({2})", QualifiedIdentifier(@class), name, string.Join(", ", args)); diff --git a/tests/Basic/Basic.Tests.cs b/tests/Basic/Basic.Tests.cs index 82a1f43b..19095bb0 100644 --- a/tests/Basic/Basic.Tests.cs +++ b/tests/Basic/Basic.Tests.cs @@ -94,7 +94,7 @@ public class BasicTests : GeneratorTestFixture public void TestAbstractReturnType() { var returnsAbstractFoo = new ReturnsAbstractFoo(); - var abstractFoo = returnsAbstractFoo.getFoo(); + var abstractFoo = returnsAbstractFoo.Foo; Assert.AreEqual(abstractFoo.pureFunction(1), 5); Assert.AreEqual(abstractFoo.pureFunction1(), 10); Assert.AreEqual(abstractFoo.pureFunction2(), 15); @@ -104,7 +104,7 @@ public class BasicTests : GeneratorTestFixture public void TestANSI() { var foo = new Foo(); - Assert.That(foo.GetANSI(), Is.EqualTo("ANSI")); + Assert.That(foo.ANSI, Is.EqualTo("ANSI")); } [Test] @@ -241,5 +241,21 @@ public class BasicTests : GeneratorTestFixture var ret = Basic.basic.Function(); Assert.That(ret, Is.EqualTo(5)); } + + [Test] + public void TestProperties() + { + // Test field property + var prop = new TestProperties(); + Assert.That(prop.Field, Is.EqualTo(0)); + prop.Field = 10; + Assert.That(prop.Field, Is.EqualTo(10)); + + // Test getter/setter property + prop.Field = 20; + Assert.That(prop.FieldValue, Is.EqualTo(20)); + prop.FieldValue = 10; + Assert.That(prop.FieldValue, Is.EqualTo(10)); + } } \ No newline at end of file diff --git a/tests/Basic/Basic.cs b/tests/Basic/Basic.cs index 88ff092d..13acf8d1 100644 --- a/tests/Basic/Basic.cs +++ b/tests/Basic/Basic.cs @@ -1,5 +1,6 @@ using CppSharp.AST; using CppSharp.Generators; +using CppSharp.Passes; using CppSharp.Utils; namespace CppSharp.Tests @@ -22,6 +23,7 @@ namespace CppSharp.Tests public override void Preprocess(Driver driver, ASTContext ctx) { + driver.AddTranslationUnitPass(new GetterSetterToPropertyPass()); ctx.SetClassAsValueType("Bar"); ctx.SetClassAsValueType("Bar2"); ctx.SetMethodParameterUsage("Hello", "TestPrimitiveOut", 1, ParameterUsage.Out); diff --git a/tests/Basic/Basic.h b/tests/Basic/Basic.h index 0381abff..d839385c 100644 --- a/tests/Basic/Basic.h +++ b/tests/Basic/Basic.h @@ -340,3 +340,13 @@ DLL_API int Function() { return 5; } + +// Tests properties +struct DLL_API TestProperties +{ + TestProperties() : Field(0) {} + int Field; + + int getFieldValue() { return Field; } + void setFieldValue(int Value) { Field = Value; } +};