public void AndNot_IsFalse()
        {
            // arrange
            var target = new Person {
                Age = 21, Name = "Mike", Gender = "M", MembershipNumber = "1234"
            };
            var isMale       = new IsMale();
            var isClubMember = new IsClubMember();

            // act
            var spec           = isClubMember.AndNot(isMale);
            var isFemaleMember = spec.IsSatisfiedBy(target);

            // assert
            Assert.False(isFemaleMember);
        }
        public void OrNot_IsTrue()
        {
            // arrange
            var target = new Person {
                Age = 21, Name = "Jenn", Gender = "F", MembershipNumber = "1234"
            };
            var isMale   = new IsMale();
            var isMember = new IsClubMember();

            // act
            var spec = isMember.OrNot(isMale);
            var isFemaleOrClubMember = spec.IsSatisfiedBy(target);

            // assert
            Assert.True(isFemaleOrClubMember);
        }
        public void Not_IsTrue()
        {
            // arrange
            var target = new Person {
                Age = 21, Name = "Jenn", Gender = "F"
            };
            var isMale       = new IsMale();
            var isClubMember = new IsClubMember();

            // act
            var spec = isClubMember.Not(isMale); // isMale is irrelevant
            var isFemaleOrClubMember = spec.IsSatisfiedBy(target);

            // assert
            Assert.True(isFemaleOrClubMember);
        }