Skip to content
Open
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
36 changes: 36 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@

name: Testing

on:
push:

jobs:
ubuntu_test:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Run tests
run: python -m unittest discover -s . -p "*.py"

windows_test:
runs-on: windows-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Run tests
run: python -m unittest discover -s . -p "*.py"
61 changes: 60 additions & 1 deletion circle.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,69 @@
import math

import unittest

def area(r):
'''
Takes circle radius value, returns circle area value

Example:
area(3)
28.274333882308138
'''
if not isinstance(r, int):
print("Not integer")
return 0
if r < 0:
print("Negative number")
return 0
return math.pi * r * r


def perimeter(r):
'''
Takes circle radius value, returns circuit value

Example:
perimeter(3)
18.84955592153876
'''
if not isinstance(r, int):
print("Not integer")
return 0
if r < 0:
print("Negative number")
return 0
return 2 * math.pi * r


class CircleTestCase(unittest.TestCase):
def test_zero_area(self):
res = area(0)
self.assertEqual(res, 0)

def test_regular_area(self):
res = area(10)
self.assertEqual(res, 314.1592653589793)

def test_str_area(self):
res = area("a")
self.assertEqual(res, 0)

def test_negative_area(self):
res = area(-2)
self.assertEqual(res, 0)

def test_zero_perimeter(self):
res = perimeter(0)
self.assertEqual(res, 0)

def test_regular_perimeter(self):
res = perimeter(3)
self.assertEqual(res, 18.84955592153876)

def test_str_perimeter(self):
res = perimeter("a")
self.assertEqual(res, 0)

def test_negative_perimeter(self):
res = perimeter(-2)
self.assertEqual(res, 0)
148 changes: 147 additions & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,156 @@
# Math formulas
**Geometric_lib allows to use following math formulas in Python:**
## Area

- Circle: S = πR²

- Rectangle: S = ab

- Square: S = a²

- Triangle: S = ah²



## Perimeter

- Circle: P = 2πR

- Rectangle: P = 2a + 2b
- Square: P = 4a

- Square: P = 4a

- Triangle: P = a + b + c



# Functions of math formulas

## Circle
### Area
Takes circle radius value, returns circle area value.
```
def area(r):
return math.pi * r * r
```
***Example of function call:***
```
area(3)
28.274333882308138
```

### Perimeter
Takes circle radius value, returns circuit value.
```
def perimeter(r):
return 2 * math.pi * r
```
***Example of function call:***
```
perimeter(3)
18.84955592153876
```

## Rectangle
### Area
Takes rectangle sides length, returns value of rectangle area.
```
def area(a, b):
return a * b
```
***Example of function call:***
```
area(2, 3)
6
```

### Perimeter
Takes rectangle sides length, returns value of rectangle perimeter.
```
def perimeter(a, b):
return 2 * (a + b)
```
***Example of function call:***
```
perimeter(2, 5)
14
```


## Square
### Area
Takes square side length, returns value of square area.
```
def area(a):
return a * a
```
***Example of function call:***
```
area(4)
16
```

### Perimeter
Takes square side length, returns value of square perimeter.
```
def perimeter(a):
return 4 * a
```
***Example of function call:***
```
perimeter(3)
12
```


## Triangle
### Area
Takes lengths of the triangle side and triangle height, returns area of the triangle.
```
def area(a, h):
return a * h / 2
```
***Example of function call:***
```
area(3, 4)
6
```

### Perimeter
Takes lengths of the triangle sides, returns perimeter of the triangle.
```
def perimeter(a, b, c):
return a + b + c
```
***Example of function call:***
```
perimeter(3, 2, 5)
10
```


# History of project changes

**Commit** ***[a789aa9941a5de78197017f271e52e7b8f181ba6](https://github.com/kseni-sch/geometric_lib/commit/a789aa9941a5de78197017f271e52e7b8f181ba6):***
```
Author: kseni-sch <468150@niuitmo.ru>
Date: Wed Sep 25 11:23:08 2024 +0300

Added file rectangle.py
```

**Commit** ***[d09b839b6f1d79bdf6c7b3325e9a93b894737ed5](https://github.com/kseni-sch/geometric_lib/commit/d09b839b6f1d79bdf6c7b3325e9a93b894737ed5):***
```
Author: kseni-sch <468150@niuitmo.ru>
Date: Wed Sep 25 11:45:11 2024 +0300

Fixed file rectangle.py and added file triangle.py
```

**Commit** ***[1a5ecc8be2ec4ad5edb9bb5a76af61415e2e42e5](https://github.com/kseni-sch/geometric_lib/commit/1a5ecc8be2ec4ad5edb9bb5a76af61415e2e42e5):***
```
Author: kseni-sch <468150@niuitmo.ru>
Date: Tue Nov 5 02:10:03 2024 +0300

Created tests for all functions
```
68 changes: 68 additions & 0 deletions rectangle.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import unittest

def area(a, b):
'''
Takes rectangle sides length, returns value of rectangle area

Example:
area(2, 3)
6
'''
if not isinstance(a, int) or not isinstance(b, int):
print("Not integer")
return 0
if a < 0 or b < 0:
print("Negative number")
return 0
return a * b


def perimeter(a, b):
'''
Takes rectangle sides length, returns value of rectangle perimeter

Example:
perimeter(2, 5)
14
'''
if not isinstance(a, int) or not isinstance(b, int):
print("Not integer")
return 0
if a < 0 or b < 0:
print("Negative number")
return 0
return 2 * (a + b)


class RectangleTestCase(unittest.TestCase):
def test_zero_area(self):
res = area(10, 0)
self.assertEqual(res, 0)

def test_regular_area(self):
res = area(10, 5)
self.assertEqual(res, 50)

def test_str_area(self):
res = area(10, "a")
self.assertEqual(res, 0)

def test_negative_area(self):
res = area(10, -2)
self.assertEqual(res, 0)

def test_zero_perimeter(self):
res = perimeter(10, 0)
self.assertEqual(res, 20)

def test_regular_perimeter(self):
res = perimeter(10, 5)
self.assertEqual(res, 30)

def test_str_perimeter(self):
res = perimeter(10, "a")
self.assertEqual(res, 0)

def test_negative_perimeter(self):
res = perimeter(10, -2)
self.assertEqual(res, 0)
Loading