From 5f6002a5f30464e959d3545b9e6807d9042e6342 Mon Sep 17 00:00:00 2001 From: andy Date: Fri, 9 Dec 2022 00:23:08 -0800 Subject: [PATCH] Fixed ContainsProfanity regex CTOR to ignore character casing RegexOptions.IgnoreCase was being included in the String.Format instead of the Regex CTOR. Also included a test to verify ContainsProfanity works with uppercase characters. --- ProfanityFilter.Tests.Unit/ProfanityTests.cs | 12 ++++++++++++ ProfanityFilter/ProfanityFilter/ProfanityFilter.cs | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ProfanityFilter.Tests.Unit/ProfanityTests.cs b/ProfanityFilter.Tests.Unit/ProfanityTests.cs index 33c48f2..9bb786b 100644 --- a/ProfanityFilter.Tests.Unit/ProfanityTests.cs +++ b/ProfanityFilter.Tests.Unit/ProfanityTests.cs @@ -898,5 +898,17 @@ public void ContainsProfanityReturnsTrueWhenProfanityIsADollarDollar() Assert.IsTrue(result); } + + [TestMethod] + [DataRow("ASS")] + [DataRow("Ass")] + [DataRow("A$$")] + public void ContainsProfanityReturnsTrueForWordsWithUppercase(string input) + { + var filter = new ProfanityFilter(); + var result = filter.ContainsProfanity(input); + + Assert.IsTrue(result); + } } } \ No newline at end of file diff --git a/ProfanityFilter/ProfanityFilter/ProfanityFilter.cs b/ProfanityFilter/ProfanityFilter/ProfanityFilter.cs index 3af0bc6..626ca05 100644 --- a/ProfanityFilter/ProfanityFilter/ProfanityFilter.cs +++ b/ProfanityFilter/ProfanityFilter/ProfanityFilter.cs @@ -272,7 +272,7 @@ public bool ContainsProfanity(string term) return false; } - Regex regex = new Regex(string.Format(@"(?:{0})", string.Join("|", potentialProfanities).Replace("$", "\\$"), RegexOptions.IgnoreCase)); + Regex regex = new Regex(string.Format(@"(?:{0})", string.Join("|", potentialProfanities).Replace("$", "\\$")), RegexOptions.IgnoreCase); foreach (Match profanity in regex.Matches(term)) {