Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 0 additions & 28 deletions String-Reversal.py

This file was deleted.

27 changes: 27 additions & 0 deletions string_reversal.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
def reverse_string(s):
"""Reverses a string.

Args:
s: A string.

Returns:
A string containing the reversed characters of s.
"""
if not isinstance(s, str):
raise TypeError("Input must be a string.")
return s[::-1]


def main():
"""Reverses the string 'Hello, world!' and prints it to the console."""

input_string = "Hello, world!"
reversed_string = reverse_string(input_string)
print(f"Reversed string: {reversed_string}")


if __name__ == "__main__":
main()

"""Output:
Reversed string: !dlrow ,olleH"""
33 changes: 33 additions & 0 deletions tests/test_string_reversal.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import pytest
from string_reversal import reverse_string


def test_basic_reversal():
assert reverse_string("hello") == "olleh"
assert reverse_string("Python") == "nohtyP"


def test_empty_string():
assert reverse_string("") == ""


def test_palindrome():
s = "madam"
assert reverse_string(s) == s


def test_whitespace_and_symbols():
assert reverse_string(" abc ") == " cba "
assert reverse_string("123!@#") == "#@!321"


def test_unicode_characters():
assert reverse_string("äöü") == "üöä"
assert reverse_string("你好") == "好你"


def test_non_string_input():
with pytest.raises(TypeError):
reverse_string(123)
with pytest.raises(TypeError):
reverse_string(None)