Skip to content

Commit

Permalink
Refactor file structure, update imports, and add new tests
Browse files Browse the repository at this point in the history
  • Loading branch information
emrebiyik committed Jan 3, 2025
1 parent 1ec0547 commit 9795d22
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 44 deletions.
4 changes: 2 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,8 @@
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.ruff": true,
"source.organizeImports.ruff": true
"source.fixAll.ruff": "explicit",
"source.organizeImports.ruff": "explicit"
}
}
}
1 change: 0 additions & 1 deletion solutions/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@

1 change: 1 addition & 0 deletions solutions/is_palindrome.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ def is_palindrome(text: str) -> bool:
>>> is_palindrome("A man a plan a canal Panama")
True
"""
# Ensure the input is of type string to avoid unexpected errors.
assert isinstance(text, str), "Input must be a string"

# Normalize the text: remove spaces and convert to lowercase
Expand Down
41 changes: 0 additions & 41 deletions solutions/test_is_palindrome.py

This file was deleted.

Empty file added solutions/tests/__init__.py
Empty file.
58 changes: 58 additions & 0 deletions solutions/tests/test_is_palindrome.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import unittest
from solutions.is_palindrome import is_palindrome


class TestIsPalindrome(unittest.TestCase):
"""Test the is_palindrome function."""

def test_empty_string(self):
"""It should return True for an empty string."""
self.assertTrue(is_palindrome(""))

def test_single_character(self):
"""It should return True for single character strings."""
self.assertTrue(is_palindrome("a"))

def test_level_palindrome(self):
"""It should return True for the palindrome 'level'."""
self.assertTrue(is_palindrome("level"))

def test_radar_palindrome(self):
"""It should return True for the palindrome 'radar'."""
self.assertTrue(is_palindrome("radar"))

def test_hello_is_not_palindrome(self):
"""It should return False for the non-palindrome 'hello'."""
self.assertFalse(is_palindrome("hello"))

def test_world_is_not_palindrome(self):
"""It should return False for the non-palindrome 'world'."""
self.assertFalse(is_palindrome("world"))

def test_mixed_case_palindromes_return_true(self):
"""It should return True for palindromes with mixed lower-case and upper-case characters."""
self.assertTrue(is_palindrome("RaceCar"))

def test_palindromes_with_spaces_return_true(self):
"""It should return True for palindromes with spaces and mixed cases."""
self.assertTrue(is_palindrome("A man a plan a canal Panama"))

def test_palindrome_with_numbers_returns_true(self):
"""It should return True for palindromes containing numbers."""
self.assertTrue(is_palindrome("12321"))

def test_non_palindrome_numbers_return_false(self):
"""It should return False for non-palindrome numbers."""
self.assertFalse(is_palindrome("12345"))

def test_palindrome_with_special_characters_returns_true(self):
"""It should return True for palindromes with special characters."""
self.assertTrue(is_palindrome("!@#$%^&*()_+_)(*&^%$#@!"))

def test_non_palindrome_with_special_characters_returns_false(self):
"""It should return False for non-palindromes with special characters."""
self.assertFalse(is_palindrome("hello!"))


if __name__ == "__main__":
unittest.main()

0 comments on commit 9795d22

Please sign in to comment.