public void TypeSlimVisitor_Visit_NullArguments() { var visitor = new TypeSlimVisitor(); AssertEx.ThrowsException <ArgumentNullException>(() => visitor.Visit((TypeSlim)null), ex => Assert.AreEqual("type", ex.ParamName)); AssertEx.ThrowsException <ArgumentNullException>(() => visitor.Visit((ReadOnlyCollection <TypeSlim>)null), ex => Assert.AreEqual("types", ex.ParamName)); }
public void TypeSlimVisitor_Visit_ResultIsSame() { var visitor = new TypeSlimVisitor(); var slimifier = new TypeToTypeSlimConverter(); var slim = slimifier.Visit(typeof(List <int[]>)); Assert.AreSame(slim, visitor.Visit(slim)); }
public void TypeSlimVisitor_Visit_UnknownType() { var t = new MyTypeSlim(); var visitor = new TypeSlimVisitor(); Assert.ThrowsException <NotSupportedException>(() => visitor.Visit(t)); }
public void TypeSlimVisitor_Visit_Simple() { var t = typeof(int).ToTypeSlim(); var visitor = new TypeSlimVisitor(); Assert.AreSame(t, visitor.Visit(t)); }
public void TypeSlimVisitor_Visit_GenericParameter() { var gp = TypeSlim.GenericParameter("T"); var visitor = new TypeSlimVisitor(); Assert.AreSame(gp, visitor.Visit(gp)); }
public void TypeSlimVisitor_VisitStructural_Recursive_ResultIsSame() { var visitor = new TypeSlimVisitor(); var empty = EmptyReadOnlyCollection <TypeSlim> .Instance; var structural = StructuralTypeSlimReference.Create(hasValueEqualitySemantics: true, StructuralTypeSlimKind.Record); var recursiveRef = structural.GetProperty("Foo", structural, empty, canWrite: true); structural.AddProperty(recursiveRef); structural.Freeze(); Assert.AreSame(structural, visitor.Visit(structural)); }
public void TypeSlimVisitor_VisitStructural_Simple_ResultIsSame() { var visitor = new TypeSlimVisitor(); var structural = StructuralTypeSlimReference.Create(hasValueEqualitySemantics: true, StructuralTypeSlimKind.Record); var index = new List <TypeSlim> { SlimType }.AsReadOnly(); var prop = structural.GetProperty("Foo", SlimType, index, canWrite: true); structural.AddProperty(prop); structural.Freeze(); Assert.AreSame(structural, visitor.Visit(structural)); }
public void TypeSlimVisitor_VisitStructural_DeepRecursive_ResultIsSame() { var visitor = new TypeSlimVisitor(); var empty = EmptyReadOnlyCollection <TypeSlim> .Instance; var s1 = StructuralTypeSlimReference.Create(hasValueEqualitySemantics: true, StructuralTypeSlimKind.Record); var s2 = StructuralTypeSlimReference.Create(hasValueEqualitySemantics: true, StructuralTypeSlimKind.Record); var s1Prop = s2.GetProperty("Foo", s1, empty, canWrite: true); var s2Prop = s1.GetProperty("Bar", s2, empty, canWrite: true); s1.AddProperty(s2Prop); s2.AddProperty(s1Prop); s1.Freeze(); s2.Freeze(); Assert.AreSame(s1, visitor.Visit(s1)); }