forked from MIT-Emerging-Talent/ET6-practice-code-review
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #61 from MIT-Emerging-Talent/calculating-area-of-c…
…ircle Calculating area of circle
- Loading branch information
Showing
2 changed files
with
85 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |