Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
        public void TypeSlimVisitor_Visit_UnknownType()
        {
            var t = new MyTypeSlim();

            var visitor = new TypeSlimVisitor();

            Assert.ThrowsException <NotSupportedException>(() => visitor.Visit(t));
        }
Example #4
0
        public void TypeSlimVisitor_Visit_Simple()
        {
            var t = typeof(int).ToTypeSlim();

            var visitor = new TypeSlimVisitor();

            Assert.AreSame(t, visitor.Visit(t));
        }
Example #5
0
        public void TypeSlimVisitor_Visit_GenericParameter()
        {
            var gp = TypeSlim.GenericParameter("T");

            var visitor = new TypeSlimVisitor();

            Assert.AreSame(gp, visitor.Visit(gp));
        }
Example #6
0
        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));
        }
Example #7
0
        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));
        }
Example #8
0
        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));
        }
Example #9
0
        public void TypeSlimVisitor_VisitAndConvert_Success()
        {
            var visitor = new TypeSlimVisitor();

            Assert.AreSame(SlimType, visitor.VisitAndConvert <TypeSlim>(SlimType));
        }