public void UnsignedMethodsXml() { // Ensure Kotlin unsigned types end up in the xml var klass = LoadClassFile("UnsignedTypes.class"); KotlinFixups.Fixup(new [] { klass }); var xml = new XmlClassDeclarationBuilder(klass).ToXElement(); Assert.AreEqual("uint", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_uint-WZ4Q5Ns").Attribute("return").Value); Assert.AreEqual("uint", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_uint-WZ4Q5Ns").Element("parameter").Attribute("type").Value); Assert.AreEqual("ushort", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_ushort-xj2QHRw").Attribute("return").Value); Assert.AreEqual("ushort", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_ushort-xj2QHRw").Element("parameter").Attribute("type").Value); Assert.AreEqual("ulong", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_ulong-VKZWuLQ").Attribute("return").Value); Assert.AreEqual("ulong", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_ulong-VKZWuLQ").Element("parameter").Attribute("type").Value); Assert.AreEqual("ubyte", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_ubyte-7apg3OU").Attribute("return").Value); Assert.AreEqual("ubyte", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_ubyte-7apg3OU").Element("parameter").Attribute("type").Value); Assert.AreEqual("uint[]", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_uintarray--ajY-9A").Attribute("return").Value); Assert.AreEqual("uint[]", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_uintarray--ajY-9A").Element("parameter").Attribute("type").Value); Assert.AreEqual("ushort[]", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_ushortarray-rL5Bavg").Attribute("return").Value); Assert.AreEqual("ushort[]", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_ushortarray-rL5Bavg").Element("parameter").Attribute("type").Value); Assert.AreEqual("ulong[]", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_ulongarray-QwZRm1k").Attribute("return").Value); Assert.AreEqual("ulong[]", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_ulongarray-QwZRm1k").Element("parameter").Attribute("type").Value); Assert.AreEqual("ubyte[]", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_ubytearray-GBYM_sE").Attribute("return").Value); Assert.AreEqual("ubyte[]", xml.Elements("method").Single(f => f.Attribute("name").Value == "foo_ubytearray-GBYM_sE").Element("parameter").Attribute("type").Value); }
public void UnsignedFieldsXml() { // Ensure Kotlin unsigned types end up in the xml var klass = LoadClassFile("UnsignedTypesKt.class"); KotlinFixups.Fixup(new [] { klass }); var xml = new XmlClassDeclarationBuilder(klass).ToXElement(); Assert.AreEqual("uint", xml.Elements("field").Single(f => f.Attribute("name").Value == "UINT_CONST").Attribute("type").Value); Assert.AreEqual("ushort", xml.Elements("field").Single(f => f.Attribute("name").Value == "USHORT_CONST").Attribute("type").Value); Assert.AreEqual("ulong", xml.Elements("field").Single(f => f.Attribute("name").Value == "ULONG_CONST").Attribute("type").Value); Assert.AreEqual("ubyte", xml.Elements("field").Single(f => f.Attribute("name").Value == "UBYTE_CONST").Attribute("type").Value); }
public void HideInternalConstructor() { var klass = LoadClassFile("InternalConstructor.class"); var ctor = klass.Methods.First(m => m.Name == "<init>"); Assert.True(ctor.AccessFlags.HasFlag(MethodAccessFlags.Public)); KotlinFixups.Fixup(new [] { klass }); Assert.False(ctor.AccessFlags.HasFlag(MethodAccessFlags.Public)); var output = new XmlClassDeclarationBuilder(klass).ToXElement().ToString(); Assert.True(output.Contains("visibility=\"kotlin-internal\"")); }
public void HideInternalClass() { var klass = LoadClassFile("InternalClass.class"); var inner_class = klass.InnerClasses.First(); Assert.True(klass.AccessFlags.HasFlag(ClassAccessFlags.Public)); Assert.True(inner_class.InnerClassAccessFlags.HasFlag(ClassAccessFlags.Public)); KotlinFixups.Fixup(new [] { klass }); Assert.False(klass.AccessFlags.HasFlag(ClassAccessFlags.Public)); Assert.False(inner_class.InnerClassAccessFlags.HasFlag(ClassAccessFlags.Public)); var output = new XmlClassDeclarationBuilder(klass).ToXElement().ToString(); Assert.True(output.Contains("visibility=\"private\"")); }
public void NullableAnnotationOutput() { var c = LoadClassFile("NotNullClass.class"); var builder = new XmlClassDeclarationBuilder(c); var xml = builder.ToXElement(); var method = xml.Elements("method").First(m => m.Attribute("name").Value == "notNullFunc"); Assert.AreEqual("true", method.Attribute("return-not-null").Value); var parameter = method.Element("parameter"); Assert.AreEqual("true", parameter.Attribute("not-null").Value); var field = xml.Elements("field").First(f => f.Attribute("name").Value == "notNullField"); Assert.AreEqual("true", field.Attribute("not-null").Value); }
public void HideInternalProperty() { var klass = LoadClassFile("InternalProperty.class"); var getter = klass.Methods.First(m => m.Name == "getCity$main"); var setter = klass.Methods.First(m => m.Name == "setCity$main"); Assert.True(getter.AccessFlags.HasFlag(MethodAccessFlags.Public)); Assert.True(setter.AccessFlags.HasFlag(MethodAccessFlags.Public)); KotlinFixups.Fixup(new [] { klass }); Assert.False(getter.AccessFlags.HasFlag(MethodAccessFlags.Public)); Assert.False(setter.AccessFlags.HasFlag(MethodAccessFlags.Public)); var output = new XmlClassDeclarationBuilder(klass).ToXElement().ToString(); Assert.True(output.Contains("visibility=\"kotlin-internal\"")); }