diff --git a/Xamarin.Mac.sln b/Xamarin.Mac.sln index 9ee932978c73..127328a640ea 100644 --- a/Xamarin.Mac.sln +++ b/Xamarin.Mac.sln @@ -25,6 +25,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "generator", "src\generator. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "generator-tests", "tests\generator\generator-tests.csproj", "{10790816-D00E-40A0-8653-2A8AB4DD33A9}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "link sdk-mac", "tests\linker\mac\link sdk\link sdk-mac.csproj", "{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "link all-mac", "tests\linker\mac\link all\link all-mac.csproj", "{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dont link-mac-unified", "tests\linker\mac\dont link\dont link-mac-unified.csproj", "{78831857-A261-8EE0-A5F6-33D2628DE5D0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -351,6 +357,90 @@ Global {10790816-D00E-40A0-8653-2A8AB4DD33A9}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU {10790816-D00E-40A0-8653-2A8AB4DD33A9}.winphone_Release|Any CPU.ActiveCfg = Debug|Any CPU {10790816-D00E-40A0-8653-2A8AB4DD33A9}.winphone_Release|Any CPU.Build.0 = Debug|Any CPU + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Debug|Any CPU.ActiveCfg = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Debug|Any CPU.Build.0 = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Release|Any CPU.ActiveCfg = Release|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Release|Any CPU.Build.0 = Release|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Debug|x86.ActiveCfg = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Debug|x86.Build.0 = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Release|x86.ActiveCfg = Release|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Release|x86.Build.0 = Release|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_2_0_Debug|Any CPU.Build.0 = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_2_0_Release|Any CPU.ActiveCfg = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_2_0_Release|Any CPU.Build.0 = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_3_5_Debug|Any CPU.Build.0 = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_3_5_Release|Any CPU.ActiveCfg = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_3_5_Release|Any CPU.Build.0 = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_4_0_Debug|Any CPU.Build.0 = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_4_0_Release|Any CPU.ActiveCfg = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_4_0_Release|Any CPU.Build.0 = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.silverlight_Debug|Any CPU.ActiveCfg = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.silverlight_Debug|Any CPU.Build.0 = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.silverlight_Release|Any CPU.ActiveCfg = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.silverlight_Release|Any CPU.Build.0 = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.winphone_Debug|Any CPU.ActiveCfg = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.winphone_Debug|Any CPU.Build.0 = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.winphone_Release|Any CPU.ActiveCfg = Debug|x86 + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.winphone_Release|Any CPU.Build.0 = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Debug|Any CPU.ActiveCfg = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Debug|Any CPU.Build.0 = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Release|Any CPU.ActiveCfg = Release|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Release|Any CPU.Build.0 = Release|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Debug|x86.ActiveCfg = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Debug|x86.Build.0 = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Release|x86.ActiveCfg = Release|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Release|x86.Build.0 = Release|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_2_0_Debug|Any CPU.Build.0 = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_2_0_Release|Any CPU.ActiveCfg = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_2_0_Release|Any CPU.Build.0 = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_3_5_Debug|Any CPU.Build.0 = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_3_5_Release|Any CPU.ActiveCfg = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_3_5_Release|Any CPU.Build.0 = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_4_0_Debug|Any CPU.Build.0 = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_4_0_Release|Any CPU.ActiveCfg = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_4_0_Release|Any CPU.Build.0 = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.silverlight_Debug|Any CPU.ActiveCfg = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.silverlight_Debug|Any CPU.Build.0 = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.silverlight_Release|Any CPU.ActiveCfg = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.silverlight_Release|Any CPU.Build.0 = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.winphone_Debug|Any CPU.ActiveCfg = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.winphone_Debug|Any CPU.Build.0 = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.winphone_Release|Any CPU.ActiveCfg = Debug|x86 + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.winphone_Release|Any CPU.Build.0 = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.Debug|Any CPU.ActiveCfg = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.Debug|Any CPU.Build.0 = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.Release|Any CPU.ActiveCfg = Release|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.Release|Any CPU.Build.0 = Release|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.Debug|x86.ActiveCfg = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.Debug|x86.Build.0 = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.Release|x86.ActiveCfg = Release|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.Release|x86.Build.0 = Release|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_2_0_Debug|Any CPU.Build.0 = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_2_0_Release|Any CPU.ActiveCfg = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_2_0_Release|Any CPU.Build.0 = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_3_5_Debug|Any CPU.Build.0 = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_3_5_Release|Any CPU.ActiveCfg = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_3_5_Release|Any CPU.Build.0 = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_4_0_Debug|Any CPU.Build.0 = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_4_0_Release|Any CPU.ActiveCfg = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_4_0_Release|Any CPU.Build.0 = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.silverlight_Debug|Any CPU.ActiveCfg = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.silverlight_Debug|Any CPU.Build.0 = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.silverlight_Release|Any CPU.ActiveCfg = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.silverlight_Release|Any CPU.Build.0 = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.winphone_Debug|Any CPU.ActiveCfg = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.winphone_Debug|Any CPU.Build.0 = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.winphone_Release|Any CPU.ActiveCfg = Debug|x86 + {78831857-A261-8EE0-A5F6-33D2628DE5D0}.winphone_Release|Any CPU.Build.0 = Debug|x86 EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution StartupItem = tools\mmp\mmp.csproj @@ -385,5 +475,8 @@ Global {D12F0F7B-8DE3-43EC-BA49-41052D065A9B} = {542D4426-F287-4126-9889-E17628DAECEA} {EA3E6B50-AE2B-4A63-BBFC-9888B93331CA} = {542D4426-F287-4126-9889-E17628DAECEA} {10790816-D00E-40A0-8653-2A8AB4DD33A9} = {542D4426-F287-4126-9889-E17628DAECEA} + {F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579} = {542D4426-F287-4126-9889-E17628DAECEA} + {4C943B12-C5AF-4CD4-B583-B4011D13CAAB} = {542D4426-F287-4126-9889-E17628DAECEA} + {78831857-A261-8EE0-A5F6-33D2628DE5D0} = {542D4426-F287-4126-9889-E17628DAECEA} EndGlobalSection EndGlobal diff --git a/tests/linker/CommonDontLinkTest.cs b/tests/linker/CommonDontLinkTest.cs new file mode 100644 index 000000000000..1fa9f2dc3181 --- /dev/null +++ b/tests/linker/CommonDontLinkTest.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections; +using System.Reflection; + +using NUnit.Framework; + +#if XAMCORE_2_0 +using Foundation; +#elif MONOMAC +using MonoMac.Foundation; +#endif + +namespace DontLink { + + [TestFixture] + public class CommonDontLinkTest { + + [Test] + public void TypeDescriptorCanary () + { + // this will fail is ReflectTypeDescriptionProvider.cs is modified + var rtdp = Type.GetType ("System.ComponentModel.ReflectTypeDescriptionProvider, System"); + Assert.NotNull (rtdp, "type"); + var p = rtdp.GetProperty ("IntrinsicTypeConverters", BindingFlags.Static | BindingFlags.NonPublic); + Assert.NotNull (p, "property"); + var ht = (Hashtable) p.GetGetMethod (true).Invoke (null, null); + Assert.NotNull (ht, "Hashtable"); + Assert.That (ht.Count, Is.EqualTo (26), "Count"); + foreach (var item in ht.Values) { + var name = item.ToString (); + switch (name) { + case "System.ComponentModel.DateTimeOffsetConverter": + case "System.ComponentModel.DecimalConverter": + case "System.ComponentModel.StringConverter": + case "System.ComponentModel.SByteConverter": + case "System.ComponentModel.CollectionConverter": + case "System.ComponentModel.ReferenceConverter": + case "System.ComponentModel.TypeConverter": + case "System.ComponentModel.DateTimeConverter": + case "System.ComponentModel.UInt64Converter": + case "System.ComponentModel.ArrayConverter": + case "System.ComponentModel.NullableConverter": + case "System.ComponentModel.Int16Converter": + case "System.ComponentModel.CultureInfoConverter": + case "System.ComponentModel.SingleConverter": + case "System.ComponentModel.UInt16Converter": + case "System.ComponentModel.GuidConverter": + case "System.ComponentModel.DoubleConverter": + case "System.ComponentModel.Int32Converter": + case "System.ComponentModel.TimeSpanConverter": + case "System.ComponentModel.CharConverter": + case "System.ComponentModel.Int64Converter": + case "System.ComponentModel.BooleanConverter": + case "System.ComponentModel.UInt32Converter": + case "System.ComponentModel.ByteConverter": + case "System.ComponentModel.EnumConverter": + break; + default: + Assert.Fail ($"Unknown type descriptor {name}"); + break; + } + } + } + } +} diff --git a/tests/linker/CommonLinkAllTest.cs b/tests/linker/CommonLinkAllTest.cs new file mode 100644 index 000000000000..a6d28109fd21 --- /dev/null +++ b/tests/linker/CommonLinkAllTest.cs @@ -0,0 +1,45 @@ +using System; +using System.ComponentModel; + +using NUnit.Framework; + +using Foundation; + +namespace LinkAll { + + public class CustomConverter : TypeConverter { + // note: the default ctor will be preserved by the linker because it's used in a [TypeConverter] attribute + } + + [TypeConverter (typeof (BooleanConverter))] + public class BuiltInConverter { + } + + [TypeConverter (typeof (CustomConverter))] + class TypeDescriptorTest { + } + + [TestFixture] + // we want the test to be availble if we use the linker + [Preserve (AllMembers = true)] + public class CommonLinkAllTest { + + [Test] + public void TypeConverter_BuiltIn () + { + Assert.NotNull (TypeDescriptor.GetConverter (new BuiltInConverter ()), "BuiltInConverter"); + + string name = (typeof (BuiltInConverter).GetCustomAttributes (false) [0] as TypeConverterAttribute).ConverterTypeName; + Assert.That (name, Is.EqualTo ("System.ComponentModel.BooleanConverter, System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"), "ConverterTypeName"); + } + + [Test] + public void TypeConverter_Custom () + { + Assert.NotNull (TypeDescriptor.GetConverter (new TypeDescriptorTest ()), "TypeDescriptorTest"); + + string name = (typeof (TypeDescriptorTest).GetCustomAttributes (false) [0] as TypeConverterAttribute).ConverterTypeName; + Assert.That (name, Is.EqualTo ("LinkAll.CustomConverter, link all, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"), "ConverterTypeName"); + } + } +} \ No newline at end of file diff --git a/tests/linker/CommonLinkSdkTest.cs b/tests/linker/CommonLinkSdkTest.cs new file mode 100644 index 000000000000..d5b2e060f7e5 --- /dev/null +++ b/tests/linker/CommonLinkSdkTest.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Globalization; +using System.IO; + +using NUnit.Framework; + +using Foundation; + +namespace LinkSdk { + + [TestFixture] + // we want the test to be availble if we use the linker + [Preserve (AllMembers = true)] + public class CommonLinkSdkTest { + + [Test] + public void TypeDescriptor_A7793 () + { + var c = TypeDescriptor.GetConverter (typeof (DateTimeOffset)); + Assert.That (c.GetType ().Name, Is.EqualTo ("DateTimeOffsetConverter"), "DateTimeOffsetConverter"); + + c = TypeDescriptor.GetConverter (typeof (decimal)); + Assert.That (c.GetType ().Name, Is.EqualTo ("DecimalConverter"), "DecimalConverter"); + + c = TypeDescriptor.GetConverter (typeof (string)); + Assert.That (c.GetType ().Name, Is.EqualTo ("StringConverter"), "StringConverter"); + + c = TypeDescriptor.GetConverter (typeof (sbyte)); + Assert.That (c.GetType ().Name, Is.EqualTo ("SByteConverter"), "SByteConverter"); + + c = TypeDescriptor.GetConverter (typeof (Collection)); + Assert.That (c.GetType ().Name, Is.EqualTo ("CollectionConverter"), "CollectionConverter"); + + c = TypeDescriptor.GetConverter (typeof (INSCoding)); + Assert.That (c.GetType ().Name, Is.EqualTo ("ReferenceConverter"), "ReferenceConverter"); + + c = TypeDescriptor.GetConverter (typeof (Type)); + Assert.That (c.GetType ().Name, Is.EqualTo ("TypeConverter"), "TypeConverter"); + + c = TypeDescriptor.GetConverter (typeof (ulong)); + Assert.That (c.GetType ().Name, Is.EqualTo ("UInt64Converter"), "UInt64Converter"); + + c = TypeDescriptor.GetConverter (typeof (int[])); + Assert.That (c.GetType ().Name, Is.EqualTo ("ArrayConverter"), "ArrayConverter"); + + c = TypeDescriptor.GetConverter (typeof (int?)); + Assert.That (c.GetType ().Name, Is.EqualTo ("NullableConverter"), "NullableConverter"); + + c = TypeDescriptor.GetConverter (typeof (short)); + Assert.That (c.GetType ().Name, Is.EqualTo ("Int16Converter"), "Int16Converter"); + + c = TypeDescriptor.GetConverter (typeof (CultureInfo)); + Assert.That (c.GetType ().Name, Is.EqualTo ("CultureInfoConverter"), "CultureInfoConverter"); + + c = TypeDescriptor.GetConverter (typeof (float)); + Assert.That (c.GetType ().Name, Is.EqualTo ("SingleConverter"), "SingleConverter"); + + c = TypeDescriptor.GetConverter (typeof (ushort)); + Assert.That (c.GetType ().Name, Is.EqualTo ("UInt16Converter"), "UInt16Converter"); + + c = TypeDescriptor.GetConverter (typeof (Guid)); + Assert.That (c.GetType ().Name, Is.EqualTo ("GuidConverter"), "GuidConverter"); + + c = TypeDescriptor.GetConverter (typeof (double)); + Assert.That (c.GetType ().Name, Is.EqualTo ("DoubleConverter"), "DoubleConverter"); + + c = TypeDescriptor.GetConverter (typeof (int)); + Assert.That (c.GetType ().Name, Is.EqualTo ("Int32Converter"), "Int32Converter"); + + c = TypeDescriptor.GetConverter (typeof (TimeSpan)); + Assert.That (c.GetType ().Name, Is.EqualTo ("TimeSpanConverter"), "TimeSpanConverter"); + + c = TypeDescriptor.GetConverter (typeof (char)); + Assert.That (c.GetType ().Name, Is.EqualTo ("CharConverter"), "CharConverter"); + + c = TypeDescriptor.GetConverter (typeof (long)); + Assert.That (c.GetType ().Name, Is.EqualTo ("Int64Converter"), "Int64Converter"); + + c = TypeDescriptor.GetConverter (typeof (bool)); + Assert.That (c.GetType ().Name, Is.EqualTo ("BooleanConverter"), "BooleanConverter"); + + c = TypeDescriptor.GetConverter (typeof (long)); + Assert.That (c.GetType ().Name, Is.EqualTo ("Int64Converter"), "Int64Converter"); + + c = TypeDescriptor.GetConverter (typeof (uint)); + Assert.That (c.GetType ().Name, Is.EqualTo ("UInt32Converter"), "UInt32Converter"); + + c = TypeDescriptor.GetConverter (typeof (FileShare)); + Assert.That (c.GetType ().Name, Is.EqualTo ("EnumConverter"), "EnumConverter"); + + // special case - it's not in the default list we reflect in dont link tests + + c = TypeDescriptor.GetConverter (typeof (IComponent)); + Assert.That (c.GetType ().Name, Is.EqualTo ("ComponentConverter"), "ComponentConverter"); + } + } +} \ No newline at end of file diff --git a/tests/linker/ios/dont link/DontLinkRegressionTests.cs b/tests/linker/ios/dont link/DontLinkRegressionTests.cs index ec5d4ff43d49..0370dc423eec 100644 --- a/tests/linker/ios/dont link/DontLinkRegressionTests.cs +++ b/tests/linker/ios/dont link/DontLinkRegressionTests.cs @@ -108,53 +108,6 @@ public void DefaultEncoding () Assert.True (de.IsReadOnly, "IsReadOnly"); } - [Test] - public void TypeDescriptorCanary () - { - // this will fail is ReflectTypeDescriptionProvider.cs is modified - var rtdp = Type.GetType ("System.ComponentModel.ReflectTypeDescriptionProvider, System"); - Assert.NotNull (rtdp, "type"); - var p = rtdp.GetProperty ("IntrinsicTypeConverters", BindingFlags.Static | BindingFlags.NonPublic); - Assert.NotNull (p, "property"); - var ht = (Hashtable) p.GetGetMethod (true).Invoke (null, null); - Assert.NotNull (ht, "Hashtable"); - Assert.That (ht.Count, Is.EqualTo (26), "Count"); - foreach (var item in ht.Values) { - var name = item.ToString (); - switch (name) { - case "System.ComponentModel.DateTimeOffsetConverter": - case "System.ComponentModel.DecimalConverter": - case "System.ComponentModel.StringConverter": - case "System.ComponentModel.SByteConverter": - case "System.ComponentModel.CollectionConverter": - case "System.ComponentModel.ReferenceConverter": - case "System.ComponentModel.TypeConverter": - case "System.ComponentModel.DateTimeConverter": - case "System.ComponentModel.UInt64Converter": - case "System.ComponentModel.ArrayConverter": - case "System.ComponentModel.NullableConverter": - case "System.ComponentModel.Int16Converter": - case "System.ComponentModel.CultureInfoConverter": - case "System.ComponentModel.SingleConverter": - case "System.ComponentModel.UInt16Converter": - case "System.ComponentModel.GuidConverter": - case "System.ComponentModel.DoubleConverter": - case "System.ComponentModel.Int32Converter": - case "System.ComponentModel.TimeSpanConverter": - case "System.ComponentModel.CharConverter": - case "System.ComponentModel.Int64Converter": - case "System.ComponentModel.BooleanConverter": - case "System.ComponentModel.UInt32Converter": - case "System.ComponentModel.ByteConverter": - case "System.ComponentModel.EnumConverter": - break; - default: - Assert.Fail ($"Unknown type descriptor {name}"); - break; - } - } - } - #if __TVOS__ || __WATCHOS__ void AssertThrowsWrappedNotSupportedException (Action action, string message) { diff --git a/tests/linker/ios/dont link/dont link.csproj b/tests/linker/ios/dont link/dont link.csproj index 8c268cef7831..0542807a2558 100644 --- a/tests/linker/ios/dont link/dont link.csproj +++ b/tests/linker/ios/dont link/dont link.csproj @@ -150,6 +150,9 @@ + + CommonDontLinkTest.cs + diff --git a/tests/linker/ios/link all/link all.csproj b/tests/linker/ios/link all/link all.csproj index adc2425530a8..c37c67fe4683 100644 --- a/tests/linker/ios/link all/link all.csproj +++ b/tests/linker/ios/link all/link all.csproj @@ -195,6 +195,9 @@ TestRuntime.cs + + CommonLinkAllTest.cs + diff --git a/tests/linker/ios/link sdk/LinkSdkRegressionTest.cs b/tests/linker/ios/link sdk/LinkSdkRegressionTest.cs index ce53fb849460..423ea39eb3b4 100644 --- a/tests/linker/ios/link sdk/LinkSdkRegressionTest.cs +++ b/tests/linker/ios/link sdk/LinkSdkRegressionTest.cs @@ -489,88 +489,7 @@ public void Modal_3489 () } } #endif // !__TVOS__ && !__WATCHOS__ - - [Test] - public void TypeDescriptor_A7793 () - { - var c = TypeDescriptor.GetConverter (typeof (DateTimeOffset)); - Assert.That (c.GetType ().Name, Is.EqualTo ("DateTimeOffsetConverter"), "DateTimeOffsetConverter"); - - c = TypeDescriptor.GetConverter (typeof (decimal)); - Assert.That (c.GetType ().Name, Is.EqualTo ("DecimalConverter"), "DecimalConverter"); - - c = TypeDescriptor.GetConverter (typeof (string)); - Assert.That (c.GetType ().Name, Is.EqualTo ("StringConverter"), "StringConverter"); - - c = TypeDescriptor.GetConverter (typeof (sbyte)); - Assert.That (c.GetType ().Name, Is.EqualTo ("SByteConverter"), "SByteConverter"); - - c = TypeDescriptor.GetConverter (typeof (Collection)); - Assert.That (c.GetType ().Name, Is.EqualTo ("CollectionConverter"), "CollectionConverter"); - - c = TypeDescriptor.GetConverter (typeof (INSCoding)); - Assert.That (c.GetType ().Name, Is.EqualTo ("ReferenceConverter"), "ReferenceConverter"); - - c = TypeDescriptor.GetConverter (typeof (Type)); - Assert.That (c.GetType ().Name, Is.EqualTo ("TypeConverter"), "TypeConverter"); - - c = TypeDescriptor.GetConverter (typeof (ulong)); - Assert.That (c.GetType ().Name, Is.EqualTo ("UInt64Converter"), "UInt64Converter"); - - c = TypeDescriptor.GetConverter (typeof (int[])); - Assert.That (c.GetType ().Name, Is.EqualTo ("ArrayConverter"), "ArrayConverter"); - - c = TypeDescriptor.GetConverter (typeof (int?)); - Assert.That (c.GetType ().Name, Is.EqualTo ("NullableConverter"), "NullableConverter"); - - c = TypeDescriptor.GetConverter (typeof (short)); - Assert.That (c.GetType ().Name, Is.EqualTo ("Int16Converter"), "Int16Converter"); - - c = TypeDescriptor.GetConverter (typeof (CultureInfo)); - Assert.That (c.GetType ().Name, Is.EqualTo ("CultureInfoConverter"), "CultureInfoConverter"); - - c = TypeDescriptor.GetConverter (typeof (float)); - Assert.That (c.GetType ().Name, Is.EqualTo ("SingleConverter"), "SingleConverter"); - - c = TypeDescriptor.GetConverter (typeof (ushort)); - Assert.That (c.GetType ().Name, Is.EqualTo ("UInt16Converter"), "UInt16Converter"); - - c = TypeDescriptor.GetConverter (typeof (Guid)); - Assert.That (c.GetType ().Name, Is.EqualTo ("GuidConverter"), "GuidConverter"); - - c = TypeDescriptor.GetConverter (typeof (double)); - Assert.That (c.GetType ().Name, Is.EqualTo ("DoubleConverter"), "DoubleConverter"); - - c = TypeDescriptor.GetConverter (typeof (int)); - Assert.That (c.GetType ().Name, Is.EqualTo ("Int32Converter"), "Int32Converter"); - - c = TypeDescriptor.GetConverter (typeof (TimeSpan)); - Assert.That (c.GetType ().Name, Is.EqualTo ("TimeSpanConverter"), "TimeSpanConverter"); - - c = TypeDescriptor.GetConverter (typeof (char)); - Assert.That (c.GetType ().Name, Is.EqualTo ("CharConverter"), "CharConverter"); - - c = TypeDescriptor.GetConverter (typeof (long)); - Assert.That (c.GetType ().Name, Is.EqualTo ("Int64Converter"), "Int64Converter"); - - c = TypeDescriptor.GetConverter (typeof (bool)); - Assert.That (c.GetType ().Name, Is.EqualTo ("BooleanConverter"), "BooleanConverter"); - - c = TypeDescriptor.GetConverter (typeof (long)); - Assert.That (c.GetType ().Name, Is.EqualTo ("Int64Converter"), "Int64Converter"); - - c = TypeDescriptor.GetConverter (typeof (uint)); - Assert.That (c.GetType ().Name, Is.EqualTo ("UInt32Converter"), "UInt32Converter"); - - c = TypeDescriptor.GetConverter (typeof (FileShare)); - Assert.That (c.GetType ().Name, Is.EqualTo ("EnumConverter"), "EnumConverter"); - - // special case - it's not in the default list we reflect in dont link tests - - c = TypeDescriptor.GetConverter (typeof (IComponent)); - Assert.That (c.GetType ().Name, Is.EqualTo ("ComponentConverter"), "ComponentConverter"); - } - + [Test] public void Parse_3677 () { diff --git a/tests/linker/ios/link sdk/link sdk.csproj b/tests/linker/ios/link sdk/link sdk.csproj index 4d5643e7004a..47af0b1d7304 100644 --- a/tests/linker/ios/link sdk/link sdk.csproj +++ b/tests/linker/ios/link sdk/link sdk.csproj @@ -189,6 +189,9 @@ ILReader.cs + + CommonLinkSdkTest.cs + diff --git a/tests/linker/mac/dont link/dont link-mac.csproj b/tests/linker/mac/dont link/dont link-mac.csproj index 20a2a9b09be6..1590422dfdf2 100644 --- a/tests/linker/mac/dont link/dont link-mac.csproj +++ b/tests/linker/mac/dont link/dont link-mac.csproj @@ -65,6 +65,9 @@ MacTestMain.cs + + CommonDontLinkTest.cs + diff --git a/tests/linker/mac/link all/link all-mac.csproj b/tests/linker/mac/link all/link all-mac.csproj index 182cd8fbc002..bc9ec562f107 100644 --- a/tests/linker/mac/link all/link all-mac.csproj +++ b/tests/linker/mac/link all/link all-mac.csproj @@ -78,6 +78,9 @@ TestRuntime.cs + + CommonLinkAllTest.cs + diff --git a/tests/linker/mac/link sdk/link sdk-mac.csproj b/tests/linker/mac/link sdk/link sdk-mac.csproj index fe14153b13f1..25b5f1b3a525 100644 --- a/tests/linker/mac/link sdk/link sdk-mac.csproj +++ b/tests/linker/mac/link sdk/link sdk-mac.csproj @@ -76,6 +76,9 @@ TestRuntime.cs + + CommonLinkSdkTest.cs + diff --git a/tests/mmptest/regression/Makefile b/tests/mmptest/regression/Makefile index b4be3a04bda4..bd7bd3370f79 100644 --- a/tests/mmptest/regression/Makefile +++ b/tests/mmptest/regression/Makefile @@ -24,8 +24,6 @@ TESTS_4_0 = \ link-frameworks-1 \ link-aes-1 \ link-blocks-1 \ - link-typedescriptor-1 \ - link-typedescriptor-2 \ embedded-mono \ system-mono \ embedded-mono-profile \ diff --git a/tests/mmptest/regression/link-typedescriptor-1/Info.plist b/tests/mmptest/regression/link-typedescriptor-1/Info.plist deleted file mode 100644 index cb9124a4af95..000000000000 --- a/tests/mmptest/regression/link-typedescriptor-1/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDisplayName - link-typedescriptor-1 - CFBundleIdentifier - com.your-company.linktypedescriptor1 - CFBundleName - link-typedescriptor-1 - CFBundleVersion - 1 - LSMinimumSystemVersion - 10.7 - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - LSUIElement - 1 - - diff --git a/tests/mmptest/regression/link-typedescriptor-1/LinkTypeDescriptor1.cs b/tests/mmptest/regression/link-typedescriptor-1/LinkTypeDescriptor1.cs deleted file mode 100644 index e1ed352fbade..000000000000 --- a/tests/mmptest/regression/link-typedescriptor-1/LinkTypeDescriptor1.cs +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2013 Xamarin Inc. All rights reserved. - -using System; -using System.ComponentModel; -using MonoMac.AppKit; - -// Test -// * Application use System.ComponentModel.TypeDescriptor -// * Application includes every *default* converter (see TypeDescriptor.cs) -// * Application does not include CustomConverter as it's not used by the application -// -// Requirement -// * Link All must be enabled - -namespace Xamarin.Mac.Linker.Test { - - public class CustomConverter : TypeConverter { - } - - class TypeDescriptorTest { - static string typeToCheck = "Xamarin.Mac.Linker.Test.CustomConverter"; - - static void Check (string typeName) - { - var t = Type.GetType (typeName + ", System", false); - Test.Log.WriteLine ("{0}\t{1}", t != null ? "[PASS]" : "[FAIL]", typeName); - } - - static void Main (string[] args) - { - NSApplication.Init (); - - Test.EnsureLinker (true); - - TypeDescriptor td = null; - Test.Log.WriteLine ("{0}\tTypeDescriptor", td == null ? "[PASS]" : "[FAIL]"); - - Check ("System.ComponentModel.BooleanConverter"); - Check ("System.ComponentModel.ByteConverter"); - Check ("System.ComponentModel.SByteConverter"); - Check ("System.ComponentModel.StringConverter"); - Check ("System.ComponentModel.CharConverter"); - Check ("System.ComponentModel.Int16Converter"); - Check ("System.ComponentModel.Int32Converter"); - Check ("System.ComponentModel.Int64Converter"); - Check ("System.ComponentModel.UInt16Converter"); - Check ("System.ComponentModel.UInt32Converter"); - Check ("System.ComponentModel.UInt64Converter"); - Check ("System.ComponentModel.SingleConverter"); - Check ("System.ComponentModel.DoubleConverter"); - Check ("System.ComponentModel.DecimalConverter"); - Check ("System.ComponentModel.TypeConverter"); - Check ("System.ComponentModel.ArrayConverter"); - Check ("System.ComponentModel.CultureInfoConverter"); - Check ("System.ComponentModel.DateTimeConverter"); - Check ("System.ComponentModel.GuidConverter"); - Check ("System.ComponentModel.TimeSpanConverter"); - Check ("System.ComponentModel.CollectionConverter"); - Check ("System.ComponentModel.EnumConverter"); - - var t = Type.GetType (typeToCheck, false); - Test.Log.WriteLine ("{0}\tXamarin.Mac.Linker.Test.CustomConverter", t == null ? "[PASS]" : "[FAIL]"); - - Test.Terminate (); - } - } -} \ No newline at end of file diff --git a/tests/mmptest/regression/link-typedescriptor-1/link-typedescriptor-1.csproj b/tests/mmptest/regression/link-typedescriptor-1/link-typedescriptor-1.csproj deleted file mode 100644 index 0f3ae8dcbef2..000000000000 --- a/tests/mmptest/regression/link-typedescriptor-1/link-typedescriptor-1.csproj +++ /dev/null @@ -1,88 +0,0 @@ - - - - Debug - AnyCPU - 10.0.0 - 2.0 - {0AA2D44B-E4C6-4FC3-B49E-30ED3D744823} - {42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Exe - linktypedescriptor1 - Resources - link-typedescriptor-1 - - - true - full - false - bin\Debug - DEBUG; - prompt - 4 - false - false - true - false - Mac Developer - false - false - Developer ID Installer - - - Full - - - full - true - bin\Release - prompt - 4 - false - Full - false - true - false - Developer ID Application - true - true - - - full - true - bin\AppStore - prompt - 4 - false - Full - false - true - 3rd Party Mac Developer Installer - true - 3rd Party Mac Developer Application - true - true - - - - - - - - - - - - - - - Test.cs - - - - - - MainMenu.xib - - - \ No newline at end of file diff --git a/tests/mmptest/regression/link-typedescriptor-2/Info.plist b/tests/mmptest/regression/link-typedescriptor-2/Info.plist deleted file mode 100644 index 32d5eda74422..000000000000 --- a/tests/mmptest/regression/link-typedescriptor-2/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDisplayName - link-typedescriptor-2 - CFBundleIdentifier - com.your-company.linktypedescriptor2 - CFBundleName - link-typedescriptor-2 - CFBundleVersion - 1 - LSMinimumSystemVersion - 10.7 - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - LSUIElement - 1 - - diff --git a/tests/mmptest/regression/link-typedescriptor-2/LinkTypeDescriptor2.cs b/tests/mmptest/regression/link-typedescriptor-2/LinkTypeDescriptor2.cs deleted file mode 100644 index 5aaf89013f3d..000000000000 --- a/tests/mmptest/regression/link-typedescriptor-2/LinkTypeDescriptor2.cs +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2013 Xamarin Inc. All rights reserved. - -using System; -using System.ComponentModel; -using MonoMac.AppKit; - -// Test -// * Application use [TypeConverter] on a custom (non default) TypeConverter -// * Application includes CustomConverter as it is used by the application -// -// Requirement -// * Link All must be enabled - -namespace Xamarin.Mac.Linker.Test { - - public class CustomConverter : TypeConverter { - // note: the default ctor will be preserved by the linker because it's used in a [TypeConverter] attribute - } - - [TypeConverter (typeof (BooleanConverter))] - public class BuiltInConverter { - } - - [TypeConverter (typeof (CustomConverter))] - class TypeDescriptorTest { - - static void Main (string[] args) - { - NSApplication.Init (); - - Test.EnsureLinker (true); - - TypeConverter converter = null; - string msg = "BooleanConverter"; - - try { - converter = TypeDescriptor.GetConverter (new BuiltInConverter ()); - msg = (typeof (BuiltInConverter).GetCustomAttributes (false) [0] as TypeConverterAttribute).ConverterTypeName; - } - catch (Exception e) { - msg = e.ToString (); - } - finally { - Test.Log.WriteLine ("[{0}]\tTypeDescriptor.GetConverter BooleanConverter", converter != null ? "PASS" : "FAIL"); - bool success = msg == "System.ComponentModel.BooleanConverter, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; - Test.Log.WriteLine ("[{0}]\t{1}", success ? "PASS" : "FAIL", msg); - } - - msg = "CustomConverter"; - try { - converter = TypeDescriptor.GetConverter (new TypeDescriptorTest ()); - msg = (typeof (TypeDescriptorTest).GetCustomAttributes (false) [0] as TypeConverterAttribute).ConverterTypeName; - } - catch (Exception e) { - msg = e.ToString (); - } - finally { - Test.Log.WriteLine ("[{0}]\tTypeDescriptor.GetConverter CustomConverter", converter != null ? "PASS" : "FAIL"); - bool success = msg == "Xamarin.Mac.Linker.Test.CustomConverter, link-typedescriptor-2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"; - Test.Log.WriteLine ("[{0}]\t{1}", success ? "PASS" : "FAIL", msg); - } - - Test.Terminate (); - } - } -} \ No newline at end of file diff --git a/tests/mmptest/regression/link-typedescriptor-2/link-typedescriptor-2.csproj b/tests/mmptest/regression/link-typedescriptor-2/link-typedescriptor-2.csproj deleted file mode 100644 index 44eeb8494f84..000000000000 --- a/tests/mmptest/regression/link-typedescriptor-2/link-typedescriptor-2.csproj +++ /dev/null @@ -1,88 +0,0 @@ - - - - Debug - AnyCPU - 10.0.0 - 2.0 - {3FF064DE-5B37-404B-9FD1-234361AD3DB8} - {42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Exe - linktypedescriptor2 - Resources - link-typedescriptor-2 - - - true - full - false - bin\Debug - DEBUG; - prompt - 4 - false - false - true - false - Mac Developer - false - false - Developer ID Installer - - - Full - - - full - true - bin\Release - prompt - 4 - false - Full - false - true - false - Developer ID Application - true - true - - - full - true - bin\AppStore - prompt - 4 - false - Full - false - true - 3rd Party Mac Developer Installer - true - 3rd Party Mac Developer Application - true - true - - - - - - - - - - - - - - - Test.cs - - - - - - MainMenu.xib - - - \ No newline at end of file