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 WriteFieldInt() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("int", "bar"); Assert.IsTrue(field.Validate(options, new GenericParameterDefinitionList(), new CodeGeneratorContext()), "field.Validate failed!"); generator.WriteField(field, string.Empty, @class); Assert.AreEqual(GetTargetedExpected(nameof(WriteFieldInt)), writer.ToString().NormalizeLineEndings()); }
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()); }
public void WriteConstantField() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("java.lang.String", "bar").SetConstant(); 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 static string bar { get { const string __id = ""bar.Ljava/lang/String;""; var __v = _members.StaticFields.GetObjectValue (__id); return JNIEnv.GetString (__v.Handle, JniHandleOwnership.TransferLocalRef); } } ", builder.ToString()); }
public void WriteConstantField() { var @class = new TestClass("java.lang.Object", "com.mypackage.foo"); var field = new TestField("java.lang.String", "bar").SetConstant(); 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 static string bar { get { if (bar_jfieldId == IntPtr.Zero) bar_jfieldId = JNIEnv.GetStaticFieldID (class_ref, ""bar"", ""Ljava/lang/String;""); IntPtr __ret = JNIEnv.GetStaticObjectField (class_ref, bar_jfieldId); return JNIEnv.GetString (__ret, JniHandleOwnership.TransferLocalRef); } } ", builder.ToString()); }