Ejemplo n.º 1
0
        public void when_visiting_root_then_visits_all_delegates()
        {
            var calledMethod = this.GetType().GetMethod("Called", BindingFlags.Instance | BindingFlags.NonPublic);
            var delegates    = new VisitorDelegates();

            foreach (var prop in typeof(VisitorDelegates).GetProperties())
            {
                var actionTypeParam = prop.PropertyType.GetGenericArguments()[0];
                var expression      = Expression.Lambda(
                    prop.PropertyType,
                    Expression.Call(Expression.Constant(this), calledMethod, Expression.Constant(prop)),
                    Expression.Parameter(actionTypeParam));

                prop.SetValue(delegates, expression.Compile());
            }

            var members = DocReader.Read(typeof(Sample).Assembly);

            members.Accept(new DelegateVisitor(delegates));

            foreach (var prop in typeof(VisitorDelegates).GetProperties())
            {
                if (prop == Reflect <VisitorDelegates> .GetProperty(x => x.VisitUnknownMember))
                {
                    continue;
                }

                Assert.True(calls.GetOrAdd(prop, 0) > 0, string.Format("Delegate on {0} was not called.", prop.Name));
            }
        }
Ejemplo n.º 2
0
        public void when_reading_unknown_member_then_marks_as_unknown()
        {
            var xml = Path.GetTempFileName();

            File.WriteAllText(xml, @"<doc>
    <members>
        <member name='!:Error'>
            <summary>
                blah
            </summary>
        </member>
    </members>
</doc>");

            var member = DocReader.Read(xml).Elements.OfType <UnknownMember>().FirstOrDefault();

            Assert.NotNull(member);
            Assert.Equal(MemberKinds.Unknown, member.Kind);

            var visited   = default(UnknownMember);
            var delegates = new VisitorDelegates {
                VisitUnknownMember = x => visited = x
            };

            member.Accept(new DelegateVisitor(delegates));

            Assert.Same(member, visited);
        }
Ejemplo n.º 3
0
        public void when_visiting_root_then_visits_all_delegates()
        {
            var calledMethod = this.GetType().GetMethod("Called", BindingFlags.Instance | BindingFlags.NonPublic);
            var delegates = new VisitorDelegates();
            foreach (var prop in typeof(VisitorDelegates).GetProperties())
            {
                var actionTypeParam = prop.PropertyType.GetGenericArguments()[0];
                var expression = Expression.Lambda(
                    prop.PropertyType,
                    Expression.Call(Expression.Constant(this), calledMethod, Expression.Constant(prop)),
                    Expression.Parameter(actionTypeParam));

                prop.SetValue(delegates, expression.Compile());
            }

            var members = DocReader.Read(typeof(Sample).Assembly);
            members.Accept(new DelegateVisitor(delegates));

            foreach (var prop in typeof(VisitorDelegates).GetProperties())
            {
                if (prop == Reflect<VisitorDelegates>.GetProperty(x => x.VisitUnknownMember))
                    continue;

                Assert.True(calls.GetOrAdd(prop, 0) > 0, string.Format("Delegate on {0} was not called.", prop.Name));
            }
        }
Ejemplo n.º 4
0
        public void when_reading_unknown_member_then_marks_as_unknown()
        {
            var xml = Path.GetTempFileName();
            File.WriteAllText(xml, @"<doc>
            <members>
            <member name='!:Error'>
            <summary>
                blah
            </summary>
            </member>
            </members>
            </doc>");

            var member = DocReader.Read(xml).Elements.OfType<UnknownMember>().FirstOrDefault();

            Assert.NotNull(member);
            Assert.Equal(MemberKinds.Unknown, member.Kind);

            var visited = default(UnknownMember);
            var delegates = new VisitorDelegates { VisitUnknownMember = x => visited = x };
            member.Accept(new DelegateVisitor(delegates));

            Assert.Same(member, visited);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DelegateVisitor"/> class.
 /// </summary>
 /// <param name="delegates">The delegates to use when visiting the model.</param>
 public DelegateVisitor(VisitorDelegates delegates)
 {
     this.delegates = delegates;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DelegateVisitor"/> class.
 /// </summary>
 /// <param name="delegates">The delegates to use when visiting the model.</param>
 public DelegateVisitor(VisitorDelegates delegates)
 {
     this.delegates = delegates;
 }