public void WriteStringField() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("java.lang.String", "bar"); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList()), "field.Validate failed!"); generator.WriteField(field, writer, string.Empty, options, @class); Assert.AreEqual(@"static IntPtr bar_jfieldId; // Metadata.xml XPath field reference: path=""/api/package[@name='com.mypackage']/class[@name='foo']/field[@name='bar']"" [Register (""bar"")] public string bar { get { if (bar_jfieldId == IntPtr.Zero) bar_jfieldId = JNIEnv.GetFieldID (class_ref, ""bar"", ""Ljava/lang/String;""); IntPtr __ret = JNIEnv.GetObjectField (((global::Java.Lang.Object) this).Handle, bar_jfieldId); return JNIEnv.GetString (__ret, JniHandleOwnership.TransferLocalRef); } set { if (bar_jfieldId == IntPtr.Zero) bar_jfieldId = JNIEnv.GetFieldID (class_ref, ""bar"", ""Ljava/lang/String;""); IntPtr native_value = JNIEnv.NewString (value); try { JNIEnv.SetField (((global::Java.Lang.Object) this).Handle, bar_jfieldId, native_value); } finally { JNIEnv.DeleteLocalRef (native_value); } } } ", builder.ToString()); }
public void WriteStringField() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("java.lang.String", "bar"); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList()), "field.Validate failed!"); generator.WriteField(field, writer, string.Empty, options, @class); Assert.AreEqual(@" // Metadata.xml XPath field reference: path=""/api/package[@name='com.mypackage']/class[@name='foo']/field[@name='bar']"" [Register (""bar"")] public string bar { get { const string __id = ""bar.Ljava/lang/String;""; var __v = _members.InstanceFields.GetObjectValue (__id, this); return JNIEnv.GetString (__v.Handle, JniHandleOwnership.TransferLocalRef); } set { const string __id = ""bar.Ljava/lang/String;""; IntPtr native_value = JNIEnv.NewString (value); try { _members.InstanceFields.SetValue (__id, this, new JniObjectReference (native_value)); } finally { JNIEnv.DeleteLocalRef (native_value); } } } ", builder.ToString()); }
public void WriteIntField() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("int", "bar"); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList()), "field.Validate failed!"); generator.WriteField(field, writer, string.Empty, options, @class); Assert.AreEqual(@"static IntPtr bar_jfieldId; // Metadata.xml XPath field reference: path=""/api/package[@name='com.mypackage']/class[@name='foo']/field[@name='bar']"" [Register (""bar"")] public int bar { get { if (bar_jfieldId == IntPtr.Zero) bar_jfieldId = JNIEnv.GetFieldID (class_ref, ""bar"", ""I""); return JNIEnv.GetIntField (((global::Java.Lang.Object) this).Handle, bar_jfieldId); } set { if (bar_jfieldId == IntPtr.Zero) bar_jfieldId = JNIEnv.GetFieldID (class_ref, ""bar"", ""I""); try { JNIEnv.SetField (((global::Java.Lang.Object) this).Handle, bar_jfieldId, value); } finally { } } } ", builder.ToString()); }
public void WriteIntField() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("int", "bar"); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList()), "field.Validate failed!"); generator.WriteField(field, writer, string.Empty, options, @class); Assert.AreEqual(@" // Metadata.xml XPath field reference: path=""/api/package[@name='com.mypackage']/class[@name='foo']/field[@name='bar']"" [Register (""bar"")] public int bar { get { const string __id = ""bar.I""; var __v = _members.InstanceFields.GetInt32Value (__id, this); return __v; } set { const string __id = ""bar.I""; try { _members.InstanceFields.SetValue (__id, this, value); } finally { } } } ", builder.ToString()); }
public void WriteFieldIdField() { var field = new TestField("java.lang.String", "bar"); generator.WriteFieldIdField(field, string.Empty); Assert.AreEqual(GetTargetedExpected(nameof(WriteFieldIdField)), writer.ToString().NormalizeLineEndings()); }
public void WriteFieldIdField() { var field = new TestField("java.lang.String", "bar"); generator.WriteFieldIdField(field, writer, string.Empty, options); Assert.AreEqual(@"static IntPtr bar_jfieldId; ", builder.ToString()); }
public void WriteFieldIdField() { var field = new TestField("java.lang.String", "bar"); generator.WriteFieldIdField(field, writer, string.Empty, options); //NOTE: not needed for JavaInteropCodeGenerator Assert.AreEqual("", builder.ToString()); }
public void WriteFieldString() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("java.lang.String", "bar"); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList(), new CodeGeneratorContext()), "field.Validate failed!"); generator.WriteField(field, string.Empty, @class); Assert.AreEqual(GetTargetedExpected(nameof(WriteFieldString)), writer.ToString().NormalizeLineEndings()); }
public void WriteProtectedField() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("int", "bar").SetVisibility("protected"); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList(), new CodeGeneratorContext()), "field.Validate failed!"); generator.WriteField(field, string.Empty, @class); StringAssert.Contains("protected int bar {", builder.ToString(), "Property should be protected!"); }
public void WriteEnumifiedField() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("int", "bar").SetEnumified(); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList(), new CodeGeneratorContext()), "field.Validate failed!"); generator.WriteField(field, string.Empty, @class); StringAssert.Contains("[global::Android.Runtime.GeneratedEnum]", builder.ToString(), "Should contain GeneratedEnumAttribute!"); }
public void WriteDeprecatedField() { var comment = "Don't use this!"; var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("int", "bar").SetConstant("1234").SetDeprecated(comment, true); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList(), new CodeGeneratorContext()), "field.Validate failed!"); generator.WriteField(field, string.Empty, @class); StringAssert.Contains($"[Obsolete (\"{comment}\", error: true)]", builder.ToString(), "Should contain ObsoleteAttribute!"); }
public void WriteConstantFieldWithIntValue() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("int", "bar").SetConstant("1234"); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList()), "field.Validate failed!"); generator.WriteField(field, writer, string.Empty, options, @class); Assert.AreEqual(@"// Metadata.xml XPath field reference: path=""/api/package[@name='com.mypackage']/class[@name='foo']/field[@name='bar']"" [Register (""bar"")] public const int bar = (int) 1234; ", builder.ToString()); }
public void WriteFieldGetBody() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("java.lang.String", "bar"); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList()), "field.Validate failed!"); generator.WriteFieldGetBody(field, writer, string.Empty, options, @class); Assert.AreEqual(@"if (bar_jfieldId == IntPtr.Zero) bar_jfieldId = JNIEnv.GetFieldID (class_ref, ""bar"", ""Ljava/lang/String;""); IntPtr __ret = JNIEnv.GetObjectField (((global::Java.Lang.Object) this).Handle, bar_jfieldId); return JNIEnv.GetString (__ret, JniHandleOwnership.TransferLocalRef); ", builder.ToString()); }
public void WriteFieldGetBody() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("java.lang.String", "bar"); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList()), "field.Validate failed!"); generator.WriteFieldGetBody(field, writer, string.Empty, options, @class); Assert.AreEqual(@"const string __id = ""bar.Ljava/lang/String;""; var __v = _members.InstanceFields.GetObjectValue (__id, this); return JNIEnv.GetString (__v.Handle, JniHandleOwnership.TransferLocalRef); ", builder.ToString()); }
public void WriteFieldSetBody() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("java.lang.String", "bar"); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList()), "field.Validate failed!"); generator.WriteFieldSetBody(field, writer, string.Empty, options, @class); Assert.AreEqual(@"if (bar_jfieldId == IntPtr.Zero) bar_jfieldId = JNIEnv.GetFieldID (class_ref, ""bar"", ""Ljava/lang/String;""); IntPtr native_value = JNIEnv.NewString (value); try { JNIEnv.SetField (((global::Java.Lang.Object) this).Handle, bar_jfieldId, native_value); } finally { JNIEnv.DeleteLocalRef (native_value); } ", builder.ToString()); }
public void WriteFieldSetBody() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("java.lang.String", "bar"); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList()), "field.Validate failed!"); generator.WriteFieldSetBody(field, writer, string.Empty, options, @class); Assert.AreEqual(@"const string __id = ""bar.Ljava/lang/String;""; IntPtr native_value = JNIEnv.NewString (value); try { _members.InstanceFields.SetValue (__id, this, new JniObjectReference (native_value)); } finally { JNIEnv.DeleteLocalRef (native_value); } ", builder.ToString()); }