Skip to content

Commit

Permalink
edits after second review
Browse files Browse the repository at this point in the history
  • Loading branch information
Kareiman committed Jan 12, 2025
1 parent 911bc26 commit 284bad0
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 0 deletions.
40 changes: 40 additions & 0 deletions solutions/convert_to_uppercase.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# !/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
A module that converts letters to uppercase
Created on 31 12 2024
@author: Kareiman Altayeb
"""


def convert_to_uppercase(user_text: str) -> str:
"""Asks the user to enter a text and returns the text in capital
with all characters in uppercase
Parameters:
user_text (str): The user input text to be converted to uppercase.
Returns:
str : user_text in capital letters
Raises:
AssertionError: If the input is empty or contains only spaces.
Examples:
>>> convert_to_uppercase('hello')
'HELLO'
>>> convert_to_uppercase('HelLo')
'HELLO'
>>> convert_to_uppercase('123hello')
'123HELLO'
"""

user_text = user_text.strip()

if not user_text:
raise AssertionError("Entry cannot be empty or just spaces")

return user_text.upper()
55 changes: 55 additions & 0 deletions solutions/tests/test_convert_to_uppercase.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# !/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
A module to test convert_to_uppercase function
Test categories:
- Standard cases: Regular text with different length
- Edge cases: Mix of different data types
- Defensive tests: Empty input
Created on 03 01 2025
@author: Kareiman Altayeb
"""

import unittest

# To test convert_to_capital
from solutions.convert_to_uppercase import convert_to_uppercase


class TestConvertToCapitalLetters(unittest.TestCase):
"Tests convert_to_capital function"

# Standard test cases

def test_all_small_letters(self):
"""It should convert all letters to capital"""
self.assertEqual(convert_to_uppercase("kareiman"), "KAREIMAN")

def test_some_are_capital_letters(self):
"""It should convert all letters to capital"""
self.assertEqual(convert_to_uppercase("kAREiMan"), "KAREIMAN")

def test_full_sentence(self):
"""It should convert all words to capital"""
self.assertEqual(convert_to_uppercase("happy new year"), "HAPPY NEW YEAR")

# Edge cases

def test_mixed_with_numbers(self):
"""It should return the numbers the same"""
self.assertEqual(convert_to_uppercase("12345kareiman"), "12345KAREIMAN")

def test_special_characters(self):
"""It should return special characters the same"""
self.assertEqual(convert_to_uppercase("?!!!"), "?!!!")

# Defensive tests

def test_empty_entry(self):
"""It should raise an error for space or empty entry"""
with self.assertRaises(AssertionError):
convert_to_uppercase("")

0 comments on commit 284bad0

Please sign in to comment.