public void TypeSlimToTypeConverter_Resolve_ThrowsInvalidOperation() { var visitor = new TypeSlimToTypeConverter(DefaultReflectionProvider.Instance); var intTypeSlim = typeof(int).ToTypeSlim(); visitor.MapType(intTypeSlim, typeof(string)); Assert.ThrowsException <InvalidOperationException>(() => visitor.MapType(intTypeSlim, typeof(long))); }
public void TypeSlimToTypeConverter_ArgumentChecks() { var converter = new TypeSlimToTypeConverter(DefaultReflectionProvider.Instance); AssertEx.ThrowsException <ArgumentNullException>(() => converter.Visit(type: null), ex => Assert.AreEqual(ex.ParamName, "type")); AssertEx.ThrowsException <ArgumentNullException>(() => converter.MapType(typeSlim: null, type: null), ex => Assert.AreEqual(ex.ParamName, "typeSlim")); AssertEx.ThrowsException <ArgumentNullException>(() => converter.MapType(SlimType, type: null), ex => Assert.AreEqual(ex.ParamName, "type")); }
public void TypeSlimToTypeConverter_VisitGenericParameter_ThrowsInvalidOperation() { var visitor = new TypeSlimToTypeConverter(DefaultReflectionProvider.Instance); visitor.Push(new Dictionary <TypeSlim, Type>()); var param = TypeSlim.GenericParameter("T"); Assert.ThrowsException <InvalidOperationException>(() => visitor.Visit(param)); }
public void TypeToTypeSlimConverter_System() { var ttsc = new TypeToTypeSlimConverter(); var tstc = new TypeSlimToTypeConverter(DefaultReflectionProvider.Instance); foreach (var t in typeof(Uri).Assembly.GetTypes().Where(t => t.Namespace == "System")) { Roundtrip(ttsc, tstc, t); } }
public void TypeSlimToTypeConverter_Resolve_Success() { var typeToSlim = new TypeToTypeSlimConverter(); var visitor = new TypeSlimToTypeConverter(DefaultReflectionProvider.Instance); var longTypeSlim = typeToSlim.Visit(typeof(long)); visitor.MapType(longTypeSlim, typeof(int)); var longType = visitor.Visit(longTypeSlim); Assert.AreEqual(typeof(int), longType); visitor.MapType(longTypeSlim, typeof(int)); }
public void TypeSlimToTypeConverter_VisitSimpleFake_ThrowsException() { var visitor = new TypeSlimToTypeConverter(DefaultReflectionProvider.Instance); var simple = TypeSlim.Simple(new AssemblySlim("MyFakeAssembly"), "MyFakeType"); if (Type.GetType("Mono.Runtime") == null) { Assert.ThrowsException <FileNotFoundException>(() => visitor.Visit(simple)); } else { Assert.ThrowsException <TypeLoadException>(() => visitor.Visit(simple)); } }
private static void Roundtrip(TypeToTypeSlimConverter ttsc, TypeSlimToTypeConverter tstc, global::System.Type t) { var slim = ttsc.Visit(t); var exp = t.IsGenericTypeDefinition ? TypeSlimKind.GenericDefinition : TypeSlimKind.Simple; Assert.AreEqual(exp, slim.Kind); var simple = slim as SimpleTypeSlimBase; Assert.IsNotNull(simple, t.Name); Assert.AreEqual(t.FullName, simple.Name); var asm = simple.Assembly; Assert.IsNotNull(asm, t.Name); Assert.AreEqual(t.Assembly.FullName, asm.Name); var res = tstc.Visit(slim); Assert.AreSame(t, res); }