public void SutDoesNotEnumerateAnyAccessors()
        {
            var sut = new IdiomaticMembers(typeof(ClassWithMembers), MemberKinds.Default);

            var actual = sut.OfType<MethodInfo>().ToArray();

            var result = actual.All(m => !m.Name.StartsWith("set_") && !m.Name.StartsWith("get_"));
            Assert.True(result, "Do not enumerate any accessors.");
        }
        public void MemberKindsIsCorrectWhenInitializedByGreedyCtor()
        {
            var memberKinds = MemberKinds.InstanceMethod;
            var sut = new IdiomaticMembers(GetType(), memberKinds);

            var actual = sut.MemberKinds;

            Assert.Equal(memberKinds, actual);
        }
        public void SutDoesNotEnumeratesAnyEventMethods()
        {
            var sut = new IdiomaticMembers(typeof(ClassWithMembers), MemberKinds.Default);

            var actual = sut.ToArray();

            var result = actual.All(m => !m.Name.StartsWith("add_") && !m.Name.StartsWith("remove_"));
            Assert.True(result, "Do not enumerate any helper methods of EventInfo.");
        }
        public void SutHasCorrectGuardClauses(
            GuardClauseAssertion assertion)
        {
            var members = new IdiomaticMembers(
                typeof(CompositeIdiomaticAssertion),
                MemberKinds.Constructor);

            foreach (var member in members)
                assertion.Verify(member);
        }
        public void SutEnumeratesAllKindsOfMembersWhenMemberKindsIsDefault()
        {
            var sut = new IdiomaticMembers(typeof(ClassWithMembers), MemberKinds.Default);

            var actual = sut.ToArray();

            Assert.True(actual.Any(m => m is FieldInfo), "FieldInfo.");
            Assert.True(actual.Any(m => m is ConstructorInfo), "ConstructorInfo.");
            Assert.True(actual.Any(m => m is PropertyInfo), "PropertyInfo.");
            Assert.True(actual.Any(m => m is MethodInfo), "MethodInfo.");
            Assert.True(actual.Any(m => m is EventInfo), "EventInfo.");
        }
 public void SutIsEnumerable()
 {
     var sut = new IdiomaticMembers(typeof(object), MemberKinds.Default);
     Assert.IsAssignableFrom<IEnumerable<MemberInfo>>(sut);
 }
 public void SutDoesNotEnumerateNestedTypes()
 {
     var sut = new IdiomaticMembers(typeof(NotExposedReferenceAssertionTest), MemberKinds.Default);
     var actual = sut.ToArray();
     Assert.True(actual.All(m => !(m is Type)), "No Types.");
 }
 public void SutEnumeratesNoMembersWhenMemberKindsIsNone()
 {
     var sut = new IdiomaticMembers(typeof(ClassWithMembers), MemberKinds.None);
     var actual = sut.ToArray();
     Assert.Empty(actual);
 }
 public void MemberKindsIsCorrectWhenInitializedByModestCtor()
 {
     var sut = new IdiomaticMembers(GetType());
     var actual = sut.MemberKinds;
     Assert.Equal(MemberKinds.Default, actual);
 }
        public void SutEnumeratesOnlyDeclaredMembers()
        {
            var nonDeclaredMember = new Methods<ClassWithMembers>().Select(x => x.ToString());
            var sut = new IdiomaticMembers(typeof(ClassWithMembers), MemberKinds.Default);

            var actual = sut.ToArray();

            Assert.DoesNotContain(nonDeclaredMember, actual);
        }
        public void TypeIsCorrectWhenInitializedByModestCtor()
        {
            var type = GetType();
            var sut = new IdiomaticMembers(type);

            var actual = sut.Type;

            Assert.Equal(type, actual);
        }
 public void SutEnumeratesOnlyPropertiesWhenMemberKindsIsProperty()
 {
     var sut = new IdiomaticMembers(typeof(ClassWithMembers), MemberKinds.InstanceProperty);
     var actual = sut.ToArray();
     Assert.True(
         actual.All(m => (GetMemberKinds(m) & MemberKinds.InstanceProperty) != MemberKinds.None),
         "Property.");
 }
 public void SutEnumeratesCorrectMembersWhenMemberKindsIsStaticEvent()
 {
     var sut = new IdiomaticMembers(
         typeof(ClassWithMembers),
         MemberKinds.StaticEvent);
     var actual = sut.ToArray();
     Assert.True(actual.Cast<EventInfo>().All(ei => ei.GetAddMethod(true).IsStatic));
 }
        public void SutEnumeratesCorrectMembersWhenMemberKindsIsConstructorOrMethod()
        {
            var sut = new IdiomaticMembers(
                typeof(ClassWithMembers),
                MemberKinds.InstanceConstructor | MemberKinds.InstanceMethod);

            var actual = sut.ToArray();

            var result = actual.All(
                m => GetMemberKinds(m) == MemberKinds.InstanceConstructor ||
                     GetMemberKinds(m) == MemberKinds.InstanceMethod);
            Assert.True(result, "Constructor or Method.");
        }
        public void SutEnumeratesWritablePropertiesWhenMemberKindsIsGetProperty()
        {
            var sut = new IdiomaticMembers(typeof(ClassWithMembers), MemberKinds.InstanceGetProperty);

            var actual = sut.ToArray();

            Assert.True(actual.Any(m => GetMemberKinds(m) == MemberKinds.InstanceGetProperty), "GetProperty.");
            Assert.True(actual.Any(m => GetMemberKinds(m) == MemberKinds.InstanceProperty), "Property.");
        }
 public void SutEnumeratesStaticMembersWhenMemberKindsIsDefault()
 {
     var sut = new IdiomaticMembers(typeof(ClassWithMembers), MemberKinds.Default);
     var actual = sut.OfType<MethodInfo>().ToArray();
     Assert.True(actual.Any(m => m.IsStatic), "Static Member.");
 }
        public void SutEnumeratesOnlyPublicMembers()
        {
            var sut = new IdiomaticMembers(typeof(ClassWithMembers), MemberKinds.Default);

            var actual = sut.ToArray();

            var result = actual.All(m => (GetAccessibilities(m) & Accessibilities.Public) == Accessibilities.Public);
            Assert.True(result, "Enumerate only public members.");
        }
        public void VerifyTypeVerifiesCorrectMembers()
        {
            var sut = new Mock<ObjectDisposalAssertion>(new Fixture()) { CallBase = true }.Object;
            var members = new List<MemberInfo>();
            sut.ToMock().Setup(x => x.Verify(It.IsAny<MemberInfo>())).Callback<MemberInfo>(members.Add);
            var type = typeof(ClassWithMembers);
            var expected = new IdiomaticMembers(type);

            sut.Verify(type);

            Assert.Equal(expected.OrderBy(m => m.Name), members.OrderBy(m => m.Name));
        }
        public void TypeIsCorrectWhenInitializedByGreedyCtor()
        {
            var type = GetType();
            var sut = new IdiomaticMembers(type, MemberKinds.Default);

            var actual = sut.Type;

            Assert.Equal(type, actual);
        }