public class PalindromeChecker
public string IsPalindrome(string input)
if (string.IsNullOrEmpty(input))
return "Error: Input cannot be null or empty.";
if (string.IsNullOrWhiteSpace(input))
return "Error: Input cannot be whitespace only.";
if (IsPalindromeNumber(input))
return $"{input} is a Palindrome number.";
return $"{input} is not a Palindrome number.";
if (IsPalindromeString(input))
return $"{input} is a Palindrome string.";
return $"{input} is not a Palindrome string.";
private bool IsNumeric(string str)
return int.TryParse(str, out _);
private bool IsPalindromeNumber(string numberStr)
int right = numberStr.Length - 1;
if (numberStr[left] != numberStr[right])
private bool IsPalindromeString(string str)
string cleanStr = str.ToLower();
int right = cleanStr.Length - 1;
if (cleanStr[left] != cleanStr[right])
public class PalindromeCheckerTests
private PalindromeChecker palindromeChecker;
palindromeChecker = new PalindromeChecker();
public void IsPalindrome_ValidPalindromeString_ReturnsTrue()
Assert.That(palindromeChecker.IsPalindrome("madam"), Is.EqualTo("madam is a Palindrome string."));
Assert.That(palindromeChecker.IsPalindrome("Aba"), Is.EqualTo("Aba is a Palindrome string."));
Assert.That(palindromeChecker.IsPalindrome("level"), Is.EqualTo("level is a Palindrome string."));
public void IsPalindrome_ValidNonPalindromeString_ReturnsFalse()
Assert.That(palindromeChecker.IsPalindrome("Welcome"), Is.EqualTo("Welcome is not a Palindrome string."));
Assert.That(palindromeChecker.IsPalindrome("hello"), Is.EqualTo("hello is not a Palindrome string."));
public void IsPalindrome_ValidPalindromeNumber_ReturnsTrue()
Assert.That(palindromeChecker.IsPalindrome("121"), Is.EqualTo("121 is a Palindrome number."));
Assert.That(palindromeChecker.IsPalindrome("12321"), Is.EqualTo("12321 is a Palindrome number."));
public void IsPalindrome_ValidNonPalindromeNumber_ReturnsFalse()
Assert.That(palindromeChecker.IsPalindrome("123"), Is.EqualTo("123 is not a Palindrome number."));
Assert.That(palindromeChecker.IsPalindrome("12345"), Is.EqualTo("12345 is not a Palindrome number."));
public void IsPalindrome_EmptyString_ReturnsError()
Assert.That(palindromeChecker.IsPalindrome(""), Is.EqualTo("Error: Input cannot be null or empty."));
public void IsPalindrome_NullString_ReturnsError()
Assert.That(palindromeChecker.IsPalindrome(null), Is.EqualTo("Error: Input cannot be null or empty."));
public void IsPalindrome_WhitespaceString_ReturnsError()
Assert.That(palindromeChecker.IsPalindrome(" "), Is.EqualTo("Error: Input cannot be whitespace only."));
public void IsPalindrome_MixedCasePalindrome_ReturnsTrue()
Assert.That(palindromeChecker.IsPalindrome("Racecar"), Is.EqualTo("Racecar is a Palindrome string."));
Assert.That(palindromeChecker.IsPalindrome("Madam"), Is.EqualTo("Madam is a Palindrome string."));
public void IsPalindrome_StringWithSpaces_ReturnsFalse()
Assert.That(palindromeChecker.IsPalindrome("A man a plan a canal Panama"), Is.EqualTo("A man a plan a canal Panama is not a Palindrome string."));
public void IsPalindrome_NegativeNumber_ReturnsFalse()
Assert.That(palindromeChecker.IsPalindrome("-121"), Is.EqualTo("-121 is not a Palindrome number."));
public void IsPalindrome_SingleCharacter_ReturnsTrue()
Assert.That(palindromeChecker.IsPalindrome("a"), Is.EqualTo("a is a Palindrome string."));
Assert.That(palindromeChecker.IsPalindrome("1"), Is.EqualTo("1 is a Palindrome number."));
public static void Main()
new NUnitLite.AutoRun().Execute(["--noc" ]);