Skip to content

Commit 6751f27

Browse files
authored
[tests][mmp] Move TypeDescriptor (regression) tests to unit tests (#4994)
Also move some tests to share more (now and in future commits) with iOS linker-related tests. Part of #4975
1 parent 6044a74 commit 6751f27

19 files changed

+321
-484
lines changed

Xamarin.Mac.sln

+93
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "generator", "src\generator.
2525
EndProject
2626
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "generator-tests", "tests\generator\generator-tests.csproj", "{10790816-D00E-40A0-8653-2A8AB4DD33A9}"
2727
EndProject
28+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "link sdk-mac", "tests\linker\mac\link sdk\link sdk-mac.csproj", "{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}"
29+
EndProject
30+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "link all-mac", "tests\linker\mac\link all\link all-mac.csproj", "{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}"
31+
EndProject
32+
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}"
33+
EndProject
2834
Global
2935
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3036
Debug|Any CPU = Debug|Any CPU
@@ -351,6 +357,90 @@ Global
351357
{10790816-D00E-40A0-8653-2A8AB4DD33A9}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU
352358
{10790816-D00E-40A0-8653-2A8AB4DD33A9}.winphone_Release|Any CPU.ActiveCfg = Debug|Any CPU
353359
{10790816-D00E-40A0-8653-2A8AB4DD33A9}.winphone_Release|Any CPU.Build.0 = Debug|Any CPU
360+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Debug|Any CPU.ActiveCfg = Debug|x86
361+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Debug|Any CPU.Build.0 = Debug|x86
362+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Release|Any CPU.ActiveCfg = Release|x86
363+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Release|Any CPU.Build.0 = Release|x86
364+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Debug|x86.ActiveCfg = Debug|x86
365+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Debug|x86.Build.0 = Debug|x86
366+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Release|x86.ActiveCfg = Release|x86
367+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.Release|x86.Build.0 = Release|x86
368+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|x86
369+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_2_0_Debug|Any CPU.Build.0 = Debug|x86
370+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_2_0_Release|Any CPU.ActiveCfg = Debug|x86
371+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_2_0_Release|Any CPU.Build.0 = Debug|x86
372+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|x86
373+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_3_5_Debug|Any CPU.Build.0 = Debug|x86
374+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_3_5_Release|Any CPU.ActiveCfg = Debug|x86
375+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_3_5_Release|Any CPU.Build.0 = Debug|x86
376+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|x86
377+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_4_0_Debug|Any CPU.Build.0 = Debug|x86
378+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_4_0_Release|Any CPU.ActiveCfg = Debug|x86
379+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.net_4_0_Release|Any CPU.Build.0 = Debug|x86
380+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.silverlight_Debug|Any CPU.ActiveCfg = Debug|x86
381+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.silverlight_Debug|Any CPU.Build.0 = Debug|x86
382+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.silverlight_Release|Any CPU.ActiveCfg = Debug|x86
383+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.silverlight_Release|Any CPU.Build.0 = Debug|x86
384+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.winphone_Debug|Any CPU.ActiveCfg = Debug|x86
385+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.winphone_Debug|Any CPU.Build.0 = Debug|x86
386+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.winphone_Release|Any CPU.ActiveCfg = Debug|x86
387+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579}.winphone_Release|Any CPU.Build.0 = Debug|x86
388+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Debug|Any CPU.ActiveCfg = Debug|x86
389+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Debug|Any CPU.Build.0 = Debug|x86
390+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Release|Any CPU.ActiveCfg = Release|x86
391+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Release|Any CPU.Build.0 = Release|x86
392+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Debug|x86.ActiveCfg = Debug|x86
393+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Debug|x86.Build.0 = Debug|x86
394+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Release|x86.ActiveCfg = Release|x86
395+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.Release|x86.Build.0 = Release|x86
396+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|x86
397+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_2_0_Debug|Any CPU.Build.0 = Debug|x86
398+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_2_0_Release|Any CPU.ActiveCfg = Debug|x86
399+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_2_0_Release|Any CPU.Build.0 = Debug|x86
400+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|x86
401+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_3_5_Debug|Any CPU.Build.0 = Debug|x86
402+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_3_5_Release|Any CPU.ActiveCfg = Debug|x86
403+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_3_5_Release|Any CPU.Build.0 = Debug|x86
404+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|x86
405+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_4_0_Debug|Any CPU.Build.0 = Debug|x86
406+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_4_0_Release|Any CPU.ActiveCfg = Debug|x86
407+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.net_4_0_Release|Any CPU.Build.0 = Debug|x86
408+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.silverlight_Debug|Any CPU.ActiveCfg = Debug|x86
409+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.silverlight_Debug|Any CPU.Build.0 = Debug|x86
410+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.silverlight_Release|Any CPU.ActiveCfg = Debug|x86
411+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.silverlight_Release|Any CPU.Build.0 = Debug|x86
412+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.winphone_Debug|Any CPU.ActiveCfg = Debug|x86
413+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.winphone_Debug|Any CPU.Build.0 = Debug|x86
414+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.winphone_Release|Any CPU.ActiveCfg = Debug|x86
415+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB}.winphone_Release|Any CPU.Build.0 = Debug|x86
416+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.Debug|Any CPU.ActiveCfg = Debug|x86
417+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.Debug|Any CPU.Build.0 = Debug|x86
418+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.Release|Any CPU.ActiveCfg = Release|x86
419+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.Release|Any CPU.Build.0 = Release|x86
420+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.Debug|x86.ActiveCfg = Debug|x86
421+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.Debug|x86.Build.0 = Debug|x86
422+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.Release|x86.ActiveCfg = Release|x86
423+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.Release|x86.Build.0 = Release|x86
424+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|x86
425+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_2_0_Debug|Any CPU.Build.0 = Debug|x86
426+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_2_0_Release|Any CPU.ActiveCfg = Debug|x86
427+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_2_0_Release|Any CPU.Build.0 = Debug|x86
428+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|x86
429+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_3_5_Debug|Any CPU.Build.0 = Debug|x86
430+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_3_5_Release|Any CPU.ActiveCfg = Debug|x86
431+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_3_5_Release|Any CPU.Build.0 = Debug|x86
432+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|x86
433+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_4_0_Debug|Any CPU.Build.0 = Debug|x86
434+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_4_0_Release|Any CPU.ActiveCfg = Debug|x86
435+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.net_4_0_Release|Any CPU.Build.0 = Debug|x86
436+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.silverlight_Debug|Any CPU.ActiveCfg = Debug|x86
437+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.silverlight_Debug|Any CPU.Build.0 = Debug|x86
438+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.silverlight_Release|Any CPU.ActiveCfg = Debug|x86
439+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.silverlight_Release|Any CPU.Build.0 = Debug|x86
440+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.winphone_Debug|Any CPU.ActiveCfg = Debug|x86
441+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.winphone_Debug|Any CPU.Build.0 = Debug|x86
442+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.winphone_Release|Any CPU.ActiveCfg = Debug|x86
443+
{78831857-A261-8EE0-A5F6-33D2628DE5D0}.winphone_Release|Any CPU.Build.0 = Debug|x86
354444
EndGlobalSection
355445
GlobalSection(MonoDevelopProperties) = preSolution
356446
StartupItem = tools\mmp\mmp.csproj
@@ -385,5 +475,8 @@ Global
385475
{D12F0F7B-8DE3-43EC-BA49-41052D065A9B} = {542D4426-F287-4126-9889-E17628DAECEA}
386476
{EA3E6B50-AE2B-4A63-BBFC-9888B93331CA} = {542D4426-F287-4126-9889-E17628DAECEA}
387477
{10790816-D00E-40A0-8653-2A8AB4DD33A9} = {542D4426-F287-4126-9889-E17628DAECEA}
478+
{F5FF0F5E-0C30-4719-A2B1-5DAE33D1E579} = {542D4426-F287-4126-9889-E17628DAECEA}
479+
{4C943B12-C5AF-4CD4-B583-B4011D13CAAB} = {542D4426-F287-4126-9889-E17628DAECEA}
480+
{78831857-A261-8EE0-A5F6-33D2628DE5D0} = {542D4426-F287-4126-9889-E17628DAECEA}
388481
EndGlobalSection
389482
EndGlobal

tests/linker/CommonDontLinkTest.cs

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using System;
2+
using System.Collections;
3+
using System.Reflection;
4+
5+
using NUnit.Framework;
6+
7+
#if XAMCORE_2_0
8+
using Foundation;
9+
#elif MONOMAC
10+
using MonoMac.Foundation;
11+
#endif
12+
13+
namespace DontLink {
14+
15+
[TestFixture]
16+
public class CommonDontLinkTest {
17+
18+
[Test]
19+
public void TypeDescriptorCanary ()
20+
{
21+
// this will fail is ReflectTypeDescriptionProvider.cs is modified
22+
var rtdp = Type.GetType ("System.ComponentModel.ReflectTypeDescriptionProvider, System");
23+
Assert.NotNull (rtdp, "type");
24+
var p = rtdp.GetProperty ("IntrinsicTypeConverters", BindingFlags.Static | BindingFlags.NonPublic);
25+
Assert.NotNull (p, "property");
26+
var ht = (Hashtable) p.GetGetMethod (true).Invoke (null, null);
27+
Assert.NotNull (ht, "Hashtable");
28+
Assert.That (ht.Count, Is.EqualTo (26), "Count");
29+
foreach (var item in ht.Values) {
30+
var name = item.ToString ();
31+
switch (name) {
32+
case "System.ComponentModel.DateTimeOffsetConverter":
33+
case "System.ComponentModel.DecimalConverter":
34+
case "System.ComponentModel.StringConverter":
35+
case "System.ComponentModel.SByteConverter":
36+
case "System.ComponentModel.CollectionConverter":
37+
case "System.ComponentModel.ReferenceConverter":
38+
case "System.ComponentModel.TypeConverter":
39+
case "System.ComponentModel.DateTimeConverter":
40+
case "System.ComponentModel.UInt64Converter":
41+
case "System.ComponentModel.ArrayConverter":
42+
case "System.ComponentModel.NullableConverter":
43+
case "System.ComponentModel.Int16Converter":
44+
case "System.ComponentModel.CultureInfoConverter":
45+
case "System.ComponentModel.SingleConverter":
46+
case "System.ComponentModel.UInt16Converter":
47+
case "System.ComponentModel.GuidConverter":
48+
case "System.ComponentModel.DoubleConverter":
49+
case "System.ComponentModel.Int32Converter":
50+
case "System.ComponentModel.TimeSpanConverter":
51+
case "System.ComponentModel.CharConverter":
52+
case "System.ComponentModel.Int64Converter":
53+
case "System.ComponentModel.BooleanConverter":
54+
case "System.ComponentModel.UInt32Converter":
55+
case "System.ComponentModel.ByteConverter":
56+
case "System.ComponentModel.EnumConverter":
57+
break;
58+
default:
59+
Assert.Fail ($"Unknown type descriptor {name}");
60+
break;
61+
}
62+
}
63+
}
64+
}
65+
}

tests/linker/CommonLinkAllTest.cs

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using System;
2+
using System.ComponentModel;
3+
4+
using NUnit.Framework;
5+
6+
using Foundation;
7+
8+
namespace LinkAll {
9+
10+
public class CustomConverter : TypeConverter {
11+
// note: the default ctor will be preserved by the linker because it's used in a [TypeConverter] attribute
12+
}
13+
14+
[TypeConverter (typeof (BooleanConverter))]
15+
public class BuiltInConverter {
16+
}
17+
18+
[TypeConverter (typeof (CustomConverter))]
19+
class TypeDescriptorTest {
20+
}
21+
22+
[TestFixture]
23+
// we want the test to be availble if we use the linker
24+
[Preserve (AllMembers = true)]
25+
public class CommonLinkAllTest {
26+
27+
[Test]
28+
public void TypeConverter_BuiltIn ()
29+
{
30+
Assert.NotNull (TypeDescriptor.GetConverter (new BuiltInConverter ()), "BuiltInConverter");
31+
32+
string name = (typeof (BuiltInConverter).GetCustomAttributes (false) [0] as TypeConverterAttribute).ConverterTypeName;
33+
Assert.That (name, Is.EqualTo ("System.ComponentModel.BooleanConverter, System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"), "ConverterTypeName");
34+
}
35+
36+
[Test]
37+
public void TypeConverter_Custom ()
38+
{
39+
Assert.NotNull (TypeDescriptor.GetConverter (new TypeDescriptorTest ()), "TypeDescriptorTest");
40+
41+
string name = (typeof (TypeDescriptorTest).GetCustomAttributes (false) [0] as TypeConverterAttribute).ConverterTypeName;
42+
Assert.That (name, Is.EqualTo ("LinkAll.CustomConverter, link all, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"), "ConverterTypeName");
43+
}
44+
}
45+
}

tests/linker/CommonLinkSdkTest.cs

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
using System;
2+
using System.Collections.ObjectModel;
3+
using System.ComponentModel;
4+
using System.Globalization;
5+
using System.IO;
6+
7+
using NUnit.Framework;
8+
9+
using Foundation;
10+
11+
namespace LinkSdk {
12+
13+
[TestFixture]
14+
// we want the test to be availble if we use the linker
15+
[Preserve (AllMembers = true)]
16+
public class CommonLinkSdkTest {
17+
18+
[Test]
19+
public void TypeDescriptor_A7793 ()
20+
{
21+
var c = TypeDescriptor.GetConverter (typeof (DateTimeOffset));
22+
Assert.That (c.GetType ().Name, Is.EqualTo ("DateTimeOffsetConverter"), "DateTimeOffsetConverter");
23+
24+
c = TypeDescriptor.GetConverter (typeof (decimal));
25+
Assert.That (c.GetType ().Name, Is.EqualTo ("DecimalConverter"), "DecimalConverter");
26+
27+
c = TypeDescriptor.GetConverter (typeof (string));
28+
Assert.That (c.GetType ().Name, Is.EqualTo ("StringConverter"), "StringConverter");
29+
30+
c = TypeDescriptor.GetConverter (typeof (sbyte));
31+
Assert.That (c.GetType ().Name, Is.EqualTo ("SByteConverter"), "SByteConverter");
32+
33+
c = TypeDescriptor.GetConverter (typeof (Collection<string>));
34+
Assert.That (c.GetType ().Name, Is.EqualTo ("CollectionConverter"), "CollectionConverter");
35+
36+
c = TypeDescriptor.GetConverter (typeof (INSCoding));
37+
Assert.That (c.GetType ().Name, Is.EqualTo ("ReferenceConverter"), "ReferenceConverter");
38+
39+
c = TypeDescriptor.GetConverter (typeof (Type));
40+
Assert.That (c.GetType ().Name, Is.EqualTo ("TypeConverter"), "TypeConverter");
41+
42+
c = TypeDescriptor.GetConverter (typeof (ulong));
43+
Assert.That (c.GetType ().Name, Is.EqualTo ("UInt64Converter"), "UInt64Converter");
44+
45+
c = TypeDescriptor.GetConverter (typeof (int[]));
46+
Assert.That (c.GetType ().Name, Is.EqualTo ("ArrayConverter"), "ArrayConverter");
47+
48+
c = TypeDescriptor.GetConverter (typeof (int?));
49+
Assert.That (c.GetType ().Name, Is.EqualTo ("NullableConverter"), "NullableConverter");
50+
51+
c = TypeDescriptor.GetConverter (typeof (short));
52+
Assert.That (c.GetType ().Name, Is.EqualTo ("Int16Converter"), "Int16Converter");
53+
54+
c = TypeDescriptor.GetConverter (typeof (CultureInfo));
55+
Assert.That (c.GetType ().Name, Is.EqualTo ("CultureInfoConverter"), "CultureInfoConverter");
56+
57+
c = TypeDescriptor.GetConverter (typeof (float));
58+
Assert.That (c.GetType ().Name, Is.EqualTo ("SingleConverter"), "SingleConverter");
59+
60+
c = TypeDescriptor.GetConverter (typeof (ushort));
61+
Assert.That (c.GetType ().Name, Is.EqualTo ("UInt16Converter"), "UInt16Converter");
62+
63+
c = TypeDescriptor.GetConverter (typeof (Guid));
64+
Assert.That (c.GetType ().Name, Is.EqualTo ("GuidConverter"), "GuidConverter");
65+
66+
c = TypeDescriptor.GetConverter (typeof (double));
67+
Assert.That (c.GetType ().Name, Is.EqualTo ("DoubleConverter"), "DoubleConverter");
68+
69+
c = TypeDescriptor.GetConverter (typeof (int));
70+
Assert.That (c.GetType ().Name, Is.EqualTo ("Int32Converter"), "Int32Converter");
71+
72+
c = TypeDescriptor.GetConverter (typeof (TimeSpan));
73+
Assert.That (c.GetType ().Name, Is.EqualTo ("TimeSpanConverter"), "TimeSpanConverter");
74+
75+
c = TypeDescriptor.GetConverter (typeof (char));
76+
Assert.That (c.GetType ().Name, Is.EqualTo ("CharConverter"), "CharConverter");
77+
78+
c = TypeDescriptor.GetConverter (typeof (long));
79+
Assert.That (c.GetType ().Name, Is.EqualTo ("Int64Converter"), "Int64Converter");
80+
81+
c = TypeDescriptor.GetConverter (typeof (bool));
82+
Assert.That (c.GetType ().Name, Is.EqualTo ("BooleanConverter"), "BooleanConverter");
83+
84+
c = TypeDescriptor.GetConverter (typeof (long));
85+
Assert.That (c.GetType ().Name, Is.EqualTo ("Int64Converter"), "Int64Converter");
86+
87+
c = TypeDescriptor.GetConverter (typeof (uint));
88+
Assert.That (c.GetType ().Name, Is.EqualTo ("UInt32Converter"), "UInt32Converter");
89+
90+
c = TypeDescriptor.GetConverter (typeof (FileShare));
91+
Assert.That (c.GetType ().Name, Is.EqualTo ("EnumConverter"), "EnumConverter");
92+
93+
// special case - it's not in the default list we reflect in dont link tests
94+
95+
c = TypeDescriptor.GetConverter (typeof (IComponent));
96+
Assert.That (c.GetType ().Name, Is.EqualTo ("ComponentConverter"), "ComponentConverter");
97+
}
98+
}
99+
}

tests/linker/ios/dont link/DontLinkRegressionTests.cs

-47
Original file line numberDiff line numberDiff line change
@@ -108,53 +108,6 @@ public void DefaultEncoding ()
108108
Assert.True (de.IsReadOnly, "IsReadOnly");
109109
}
110110

111-
[Test]
112-
public void TypeDescriptorCanary ()
113-
{
114-
// this will fail is ReflectTypeDescriptionProvider.cs is modified
115-
var rtdp = Type.GetType ("System.ComponentModel.ReflectTypeDescriptionProvider, System");
116-
Assert.NotNull (rtdp, "type");
117-
var p = rtdp.GetProperty ("IntrinsicTypeConverters", BindingFlags.Static | BindingFlags.NonPublic);
118-
Assert.NotNull (p, "property");
119-
var ht = (Hashtable) p.GetGetMethod (true).Invoke (null, null);
120-
Assert.NotNull (ht, "Hashtable");
121-
Assert.That (ht.Count, Is.EqualTo (26), "Count");
122-
foreach (var item in ht.Values) {
123-
var name = item.ToString ();
124-
switch (name) {
125-
case "System.ComponentModel.DateTimeOffsetConverter":
126-
case "System.ComponentModel.DecimalConverter":
127-
case "System.ComponentModel.StringConverter":
128-
case "System.ComponentModel.SByteConverter":
129-
case "System.ComponentModel.CollectionConverter":
130-
case "System.ComponentModel.ReferenceConverter":
131-
case "System.ComponentModel.TypeConverter":
132-
case "System.ComponentModel.DateTimeConverter":
133-
case "System.ComponentModel.UInt64Converter":
134-
case "System.ComponentModel.ArrayConverter":
135-
case "System.ComponentModel.NullableConverter":
136-
case "System.ComponentModel.Int16Converter":
137-
case "System.ComponentModel.CultureInfoConverter":
138-
case "System.ComponentModel.SingleConverter":
139-
case "System.ComponentModel.UInt16Converter":
140-
case "System.ComponentModel.GuidConverter":
141-
case "System.ComponentModel.DoubleConverter":
142-
case "System.ComponentModel.Int32Converter":
143-
case "System.ComponentModel.TimeSpanConverter":
144-
case "System.ComponentModel.CharConverter":
145-
case "System.ComponentModel.Int64Converter":
146-
case "System.ComponentModel.BooleanConverter":
147-
case "System.ComponentModel.UInt32Converter":
148-
case "System.ComponentModel.ByteConverter":
149-
case "System.ComponentModel.EnumConverter":
150-
break;
151-
default:
152-
Assert.Fail ($"Unknown type descriptor {name}");
153-
break;
154-
}
155-
}
156-
}
157-
158111
#if __TVOS__ || __WATCHOS__
159112
void AssertThrowsWrappedNotSupportedException (Action action, string message)
160113
{

tests/linker/ios/dont link/dont link.csproj

+3
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,9 @@
150150
<Compile Include="DontLinkRegressionTests.cs" />
151151
<Compile Include="TableViewSourceTest.cs" />
152152
<Compile Include="CalendarTest.cs" />
153+
<Compile Include="..\..\CommonDontLinkTest.cs">
154+
<Link>CommonDontLinkTest.cs</Link>
155+
</Compile>
153156
</ItemGroup>
154157
<ItemGroup>
155158
<InterfaceDefinition Include="LaunchScreen.storyboard" Condition="'$(TargetFrameworkIdentifier)' != 'Xamarin.WatchOS'" />

0 commit comments

Comments
 (0)