public void GivenDemographicForAnyAgeAndSpecificState_WhenCheckingIfTheDemographicAppliesToAMember_ThenReturnTrueOnlyIfMemberIsInThatState
            ([ValueSource(nameof(AllStates))] State memberState, [ValueSource(nameof(AllStates))] State demographicState)
        {
            var member      = new Member("Name", memberState, new DateTime(1970, 1, 1));
            var demographic = new Demographic(demographicState, null, null);

            var applies = demographic.Contains(member, DateTime.UtcNow);

            Assert.That(applies, Is.EqualTo(memberState == demographicState));
        }
        public void GivenDemographicWithStateAndAgeRange_WhenCheckingIfTheDemographicAppliesToAMember_ThenReturnTrueOnlyIfTheMemberConformsToAllParameters
            ([Range(1, 25)] int age, [ValueSource(nameof(AllStates))] State state)
        {
            var now         = DateTime.UtcNow;
            var member      = new Member("Name", state, now.AddYears(-age));
            var demographic = new Demographic(State.Wa, 18, 19);

            var applies = demographic.Contains(member, now);

            Assert.That(applies, Is.EqualTo(state == State.Wa && (age == 18 || age == 19)));
        }
        public void GivenDemographicForAnyStateWithMaximumAgeAndMemberOlderThanThatAge_WhenCheckingIfTheDemographicAppliesToAMember_ThenReturnTrueOnlyIfMemberIsThatAgeOrYounger
            ([Range(1, 25)] int memberAge, [Range(1, 25)] int maximumAge)
        {
            var now         = DateTime.UtcNow;
            var member      = new Member("Name", State.Wa, now.AddYears(-memberAge));
            var demographic = new Demographic(null, null, maximumAge);

            var applies = demographic.Contains(member, now);

            Assert.That(applies, Is.EqualTo(memberAge <= maximumAge));
        }