Skip to content

Commit

Permalink
Merge pull request #61 from MIT-Emerging-Talent/calculating-area-of-c…
Browse files Browse the repository at this point in the history
…ircle

Calculating area of circle
  • Loading branch information
HebaShaheen authored Jan 11, 2025
2 parents be411be + 6b2e6ad commit a574588
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 0 deletions.
47 changes: 47 additions & 0 deletions solutions/area_of_circle.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
"""
A module for calculating the area of a circle.
Module contents:
- area_of_circle: calculates the area of a circle given its radius.
Created on 01 04 2025
@author: Raghad
"""

import math


# Define a function to calculate the area of a circle.
def area_of_circle(radius: float) -> float:
"""Calculate the area of a circle given its radius.
Parameters:
radius: float, the radius of the circle
Returns -> float: area of the circle
Raises:
ValueError: if the radius is negative
Examples:
>>> area_of_circle(5)
78.53981633974483
>>> area_of_circle(0)
0.0
>>> area_of_circle(3.5)
38.48451000647496
"""
# Raise an error if the radius is negative.
if radius < 0:
raise ValueError("Radius cannot be negative")

# Calculate and return the area using the formula: area = π * r^2
return math.pi * radius**2


# Entry point for script execution
if __name__ == "__main__":
# Example usage: Calculate the area of a circle with a radius of 5.
radius = 5
area = area_of_circle(radius)
print("Area of the circle:", area)
38 changes: 38 additions & 0 deletions solutions/tests/test_area_of_circle.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import unittest
from solutions.area_of_circle import area_of_circle


class TestCircleArea(unittest.TestCase):
"""Unit tests for the area_of_circle function."""

def test_positive_radius(self):
"""Test the function with positive radius values."""
self.assertAlmostEqual(area_of_circle(5), 78.53981633974483)
self.assertAlmostEqual(area_of_circle(10), 314.1592653589793)

def test_zero_radius(self):
"""Test the function with a zero radius."""
self.assertEqual(area_of_circle(0), 0.0)

def test_large_radius(self):
"""Test the function with a very large radius."""
self.assertAlmostEqual(area_of_circle(1000), 3141592.653589793)

def test_negative_radius(self):
"""Test the function with a negative radius."""
with self.assertRaises(ValueError) as context:
area_of_circle(-5)
self.assertEqual(str(context.exception), "Radius cannot be negative")

def test_invalid_type(self):
"""Test the function with an invalid type for radius."""
with self.assertRaises(TypeError):
area_of_circle("string")
with self.assertRaises(TypeError):
area_of_circle([1, 2, 3])
with self.assertRaises(TypeError):
area_of_circle(None)


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

0 comments on commit a574588

Please sign in to comment.