public void ContainsProfanityReturnsTrueWhenProfanityIsADollarDollar()
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity("a$$");

            Assert.IsTrue(result);
        }
        public void ContainsProfanityReturnsFalseWhenProfanityDoesNotExist()
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity("Ireland");

            Assert.IsFalse(result);
        }
        public void ContainsProfanityReturnsFalseWhenProfanityIsAaa()
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity("aaa");

            Assert.IsFalse(result);
        }
        public void ContainsProfanityReturnsTrueWhenMultipleProfanitiesExist()
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity("Scuntarsefuckhorpe");

            Assert.IsTrue(result);
        }
        public void ContainsProfanityReturnsFalseIfNullOrEmptyInputString(string input)
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity(input);

            Assert.IsFalse(result);
        }
        public void ContainsProfanityReturnsTrueWhenProfanityExists()
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity("Scunthorpe");

            Assert.IsTrue(result);
        }
        public void ContainsProfanity_InputContainsNoProhibitedTerms_ReturnsFalse()
        {
            var filter = new ProfanityFilter();
            var result = filter.ContainsProfanity("Ireland");

            Assert.False(result);
        }
        public void ContainsProfanity_InputContainsDisguisedProhibitedTerm_ReturnsTrue()
        {
            var filter = new ProfanityFilter();

            filter.Terms.Prohibited.Add("ass");
            var result = filter.ContainsProfanity("a$$");

            Assert.True(result);
        }
        public void ContainsProfanity_InputContainsProhibitedTermWithTrailingNumbers_ReturnsTrue()
        {
            var filter = new ProfanityFilter();

            filter.Terms.Prohibited.Add("c**t");
            var result = filter.ContainsProfanity("cunt123");

            Assert.True(result);
        }
        public void ContainsProfanity_InputContainsProhibitedTermEmbeddedInWord_ReturnsFalse()
        {
            var filter = new ProfanityFilter();

            filter.Terms.Prohibited.Add("c**t");
            var result = filter.ContainsProfanity("Scunthorpe");

            Assert.False(result);
        }
        public void ContainsProfanityReturnsFalseWhenMultipleProfanitiesExistAndAreAllowed()
        {
            var filter = new ProfanityFilter();

            filter.AllowList.Add("c**t");
            filter.AllowList.Add("arse");

            var result = filter.ContainsProfanity("Scuntarsehorpe");

            Assert.IsFalse(result);
        }
        public void ContainsProfanity_InputContainsTwoProhibitedTermsThatAreAlsoPermittedWords_ReturnsFalse()
        {
            var filter = new ProfanityFilter();

            filter.Terms.Prohibited.Add("c**t");
            filter.Terms.Prohibited.Add("arse");
            filter.Terms.Permitted.Add("c**t");
            filter.Terms.Permitted.Add("arse");
            var result = filter.ContainsProfanity("Scuntarsehorpe c**t arse");

            Assert.False(result);
        }