public class PalindromeCheckerTests
private PalindromeChecker _palindromeChecker;
_palindromeChecker = new PalindromeChecker();
public void IsPalindrome_ValidPalindromeString_ReturnsTrue()
Assert.IsTrue(_palindromeChecker.IsPalindrome("madam"));
public void IsPalindrome_ValidPalindromeNumber_ReturnsTrue()
Assert.IsTrue(_palindromeChecker.IsPalindrome("121"));
public void IsPalindrome_NonPalindromeString_ReturnsFalse()
Assert.IsFalse(_palindromeChecker.IsPalindrome("welcome"));
public void IsPalindrome_PalindromeWithSpaces_ReturnsTrue()
Assert.IsTrue(_palindromeChecker.IsPalindrome("race car"));
public void IsPalindrome_PalindromeWithPunctuation_ReturnsTrue()
Assert.IsTrue(_palindromeChecker.IsPalindrome("A man, a plan, a canal: Panama"));
public void IsPalindrome_EmptyString_ReturnsTrue()
Assert.IsTrue(_palindromeChecker.IsPalindrome(""));
public void IsPalindrome_SingleCharacter_ReturnsTrue()
Assert.IsTrue(_palindromeChecker.IsPalindrome("a"));
public void IsPalindrome_MixedCasePalindrome_ReturnsTrue()
Assert.IsTrue(_palindromeChecker.IsPalindrome("Racecar"));
public void IsPalindrome_NumberWithLeadingZeros_ReturnsFalse()
Assert.IsFalse(_palindromeChecker.IsPalindrome("001"));
public void IsPalindrome_WhitespaceOnly_ThrowsArgumentException()
Assert.Throws<ArgumentException>(() => _palindromeChecker.IsPalindrome(" "));
public void IsPalindrome_NullInput_ThrowsArgumentNullException()
Assert.Throws<ArgumentNullException>(() => _palindromeChecker.IsPalindrome(null));
public void IsPalindrome_LongPalindrome_ReturnsTrue()
string longPalindrome = new string('a', 1000) + "bb" + new string('a', 1000);
Assert.IsTrue(_palindromeChecker.IsPalindrome(longPalindrome));
public void IsPalindrome_StringWithSpecialCharacters_ReturnsTrue()
Assert.IsTrue(_palindromeChecker.IsPalindrome("Kayak!"));