From fb032edd7509db8690d2f53f40cf34b9f20f8be4 Mon Sep 17 00:00:00 2001 From: momstrosity Date: Mon, 19 May 2025 11:58:55 -0300 Subject: [PATCH 1/4] Start draft PR From 92892d97633194b9503d4d693c8cb9ff742620c7 Mon Sep 17 00:00:00 2001 From: momstrosity Date: Mon, 19 May 2025 11:59:09 -0300 Subject: [PATCH 2/4] Add string reversal function with type checking --- src/string_reversal.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/string_reversal.py diff --git a/src/string_reversal.py b/src/string_reversal.py new file mode 100644 index 0000000..4438f8e --- /dev/null +++ b/src/string_reversal.py @@ -0,0 +1,19 @@ +def reverse_string(input_str): + """ + Reverse a given string. + + Args: + input_str (str): The string to be reversed. + + Returns: + str: The reversed string. + + Raises: + TypeError: If the input is not a string. + """ + # Check if input is a string + if not isinstance(input_str, str): + raise TypeError("Input must be a string") + + # Return the reversed string + return input_str[::-1] \ No newline at end of file From cfd2b620141222cdf0fef2c765bb6081e4c997a8 Mon Sep 17 00:00:00 2001 From: momstrosity Date: Mon, 19 May 2025 11:59:19 -0300 Subject: [PATCH 3/4] Add comprehensive tests for string reversal function --- tests/test_string_reversal.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tests/test_string_reversal.py diff --git a/tests/test_string_reversal.py b/tests/test_string_reversal.py new file mode 100644 index 0000000..2609a36 --- /dev/null +++ b/tests/test_string_reversal.py @@ -0,0 +1,34 @@ +import pytest +from src.string_reversal import reverse_string + +def test_reverse_string_basic(): + """Test basic string reversal.""" + assert reverse_string("hello") == "olleh" + assert reverse_string("python") == "nohtyp" + +def test_reverse_string_empty(): + """Test reversing an empty string.""" + assert reverse_string("") == "" + +def test_reverse_string_single_char(): + """Test reversing a single character string.""" + assert reverse_string("a") == "a" + +def test_reverse_string_with_spaces(): + """Test reversing a string with spaces.""" + assert reverse_string("hello world") == "dlrow olleh" + +def test_reverse_string_with_special_chars(): + """Test reversing a string with special characters.""" + assert reverse_string("a!b@c#") == "#c@b!a" + +def test_reverse_string_invalid_input(): + """Test that a TypeError is raised for non-string inputs.""" + with pytest.raises(TypeError, match="Input must be a string"): + reverse_string(123) + + with pytest.raises(TypeError, match="Input must be a string"): + reverse_string(None) + + with pytest.raises(TypeError, match="Input must be a string"): + reverse_string(["list"]) \ No newline at end of file From df260465807fe82f67af0a796c57bff6a07c5a84 Mon Sep 17 00:00:00 2001 From: labrocadabro Date: Mon, 19 May 2025 12:01:00 -0300 Subject: [PATCH 4/4] Start draft PR