-
Notifications
You must be signed in to change notification settings - Fork 520
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[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
- Loading branch information
Showing
19 changed files
with
321 additions
and
484 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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"); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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<string>)); | ||
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"); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
6751f27
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ Build was (probably) aborted
🔥 Jenkins job (on internal Jenkins) failed in stage(s) 'Build' 🔥 : hudson.AbortException: script returned exit code 2
🔥 Build failed 🔥