Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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\""));
        }
Ejemplo n.º 4
0
        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\""));
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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\""));
        }