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
24 changes: 24 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Tests
on:
push:
branches:
- 'labwork_5'

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, windows-latest ]
fail-fast: false
steps:
- name: check-out repository
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Upgrade libs
run: python -m pip install --upgrade pip requests
- name: to do tests
run: python -m unittest tests.py
19 changes: 17 additions & 2 deletions circle.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,25 @@
import math


def area(r):
'''
Функция принимает число r и возвращает площадь круга с радиусом r

Пример:
input: 10 output: 314

'''


return math.pi * r * r


def perimeter(r):
def perimetr(r):
'''
Функция принимает число r и возвращает длину окружности с радиусом r

Пример:
input: 100 output: 628
'''

return 2 * math.pi * r

99 changes: 95 additions & 4 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,101 @@
# Math formulas
## Area
# **Figures**
Функции данной программы помогут найти площадь и периметр таких фигур, как *квадрат*, *прямоугольник*
*круг* и *треугольник*.
Каждая функция принимает данные о фигуре и по этим данным высчитывает периметр или площадь фигуры.
Для вычислений в функциях были использованы следующие формулы:

## Math formulas
### Area
- Circle: S = πR²
- Rectangle: S = ab
- Square: S = a²
- Triangle: S = a*h/2

## Perimeter
### Perimeter
- Circle: P = 2πR
- Rectangle: P = 2a + 2b
- Square: P = 4a
- Square: P = 4a
- Triangle: P = a + b + c



## Описаниее функций
### [circle.py](https://github.com/salt-caramel/geometric_lib/edit/labwork_2/circle.py):
- *area* получает на вход радиус окружности, возвращает площадь окружности с принимаем адресом
- Пример:\
input: 10 output: 314
- *preimetr* получает на вход радиус окружности и возвращает длину окружности
- Пример:\
input: 100 output: 628

### [rectangle.py](https://github.com/salt-caramel/geometric_lib/edit/labwork_2/rectangle.py):
- *area* получает на вход длину и ширину прямоугольника, возвращает площадь площадь прямоугольника
- Пример:\
input: 5, 2 output: 10
- *preimetr* получает на вход длину и ширину прямоугольника, возвращает периметр прямоугольника
- Пример:\
input: 5, 2 output: 14

### [square.py](https://github.com/salt-caramel/geometric_lib/edit/labwork_2/square.py):
- *area* получает на вход сторону квадрата, возвращает площадь квадрата
- Пример:\
input: 3 output: 9
- *preimetr* получает на вход сторону квадрата и возвращает периметр квадрата
- Пример:\
input: 3 output: 12

### [triangle.py](https://github.com/salt-caramel/geometric_lib/edit/labwork_2/triangle.py):
- *area* получает на вход основание и высоту треугольника, возвращает площадь треугольника
- Пример:\
input: 3, 6 output: 9
- *preimetr* получает на вход значение трёх сторон треугольника, возвращает периметр треугольника
- Пример:\
input: 2, 7, 3 output: 12


# История изменениий

1. Клонирование репозитория, который включал в себя файлы *square.py* и *circle.py*
2. Создание и добавление файла *rectangle.py* с функциями **area** и **perimetr** (1c7a987)
3. Создание и добавление файла *triangle.py* с функциями **area** и **perimetr** (47a9cd2)
4. Изменение ошибки в функции **perimetr** в *rectangle.py* и добавление файла с изменениями(efad489)
5. Дополнение функций комментариями (1fdcb86)


# Тестирование

## План тестирования

1. **Цель:** проверить корректность выполнения расчётов, а также поведения программы при вводе некорректных данных (корректные данные: неотрицательные числа)\
**Задачи**:
- проверить корректность выполнения расчётов проограммы *circle.py*;
- проверить поведение программы *circle.py* при вводе некорретных данных;
- проверить корректность выполнения расчётов проограммы *rectangle.py*;
- проверить поведение программы *rectangle.py* при вводе некорретных данных;
- проверить корректность выполнения расчётов проограммы *square.py*;
- проверить поведение программы *square.py* при вводе некорретных данных;
- проверить корректность выполнения расчётов проограммы *triangle.py*;
- проверить поведение программы *triangle.py* при вводе некорретных данных;
2. Каждая программа должна выполнять расчёты согласно математическим формулам. При вводе некорректных данных должен быть вывод соответственных ошибок;
3. **Область тестирования:** программы *circle.py* (функции `area()` и `perimetr()`), *rectangle.py* (функции `area()` и `perimetr()`), *square.py* (функции `area()` и `perimetr()`), *triangle.py* (функции `area()` и `perimetr()`);
4. **Стратегия тестирования**: тестирование функциональности с помощью unittest;
5. **Критерии приемки и ожидаемые результаты:**

| Название программы и функции | Описание теста | Входные данные | Ожидаемый вывод | Вывод программы |Вердикт | дата проведения тестов |
| ---------------------------- | -------------------------------------------------- | -------------- | --------------- | -----------------------|------- | ---------------------- |
| сircle.py (`area()`) | проверка корректности выполнения вычислений | 10 | ~314 | 314.159 | OK | 14.11.2024 |
| сircle.py (`area()`) | проверка поведения при введении отрицательных чисел| -5 |"Incorrect input"| 78.5398 |Warning | 14.11.2024 |
| сircle.py (`perimetr()`) | проверка корректности выполнения вычислений | 100 | ~628 | 628.3185 | OK | 14.11.2024 |
| сircle.py (`perimetr()`) | проверка поведения при введении строки | "арбуз" |"Incorrect input"| TypeError |Warning | 14.11.2024 |
| rectangle.py (`area()`) | проверка корректности выполнения вычислений | 5, 2 | 10 | 10 | OK | 14.11.2024 |
| rectangle.py (`area()`) | проверка поведения при введении строки | "lol", 8 |"Incorrect input"|lollollollollollollollol|Warning | 14.11.2024 |
| rectangle.py (`perimetr()`) | проверка корректности выполнения вычислений | 5, 2 | 14 | 14 | OK | 14.11.2024 |
| rectangle.py (`perimetr()`) | проверка поведения при введении отрицательных чисел| -3, 5 |"Incorrect input"| 4 |Warning | 14.11.2024 |
| square.py (`area()`) | проверка корректности выполнения вычислений | 3 | 9 | 9 | OK | 14.11.2024 |
| square.py (`area()`) | проверка поведения при введении отрицательных чисел| -7 |"Incorrect input"| 49 |Warning | 14.11.2024 |
| square.py (`perimetr()`) | проверка корректности выполнения вычислений | 3 | 12 | 12 | OK | 14.11.2024 |
| square.py (`perimetr()`) | проверка поведения при введении строки | "vibe" |"Incorrect input"| vibevibevibevibe |Warning | 14.11.2024 |
| triangle.py (`area()`) | проверка корректности выполнения вычислений | 3, 6 | 9 | 9 | OK | 14.11.2024 |
| triangle.py (`area()`) | проверка поведения при введении строки | "a", "b" |"Incorrect input"| TypeError |Warning | 14.11.2024 |
| triangle.py (`perimetr()`) | проверка корректности выполнения вычислений | 2, 7, 3 | 12 | 12 | OK | 14.11.2024 |
| triangle.py (`perimetr()`) | проверка поведения при введении отрицательных чисел| -4, -1, -6 |"Incorrect input"| -11 |Warning | 14.11.2024 |
36 changes: 36 additions & 0 deletions rectangle.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
def area(a, b):
'''
Функция возвращает значение площади прямоугольника

Входные данные:

a: длина прямоугольника
b: ширина прямоугольника

Возвращаемое значение:

a*b: значение площади прямоугольника со сторонами a и b

Пример:

input: 5, 2 output: 10
'''
return a * b

def perimetr(a, b):
'''
Функция возвращает значение периметра прямоугольника

Входные данные:

a: длина прямоугольника
b: ширина прямоугольника

Возвращаемое значение:

(a+b)*2: значение периметра прямоугольника со сторонами a и b
Пример:

input: 5, 2 output: 14
'''
return (a + b)*2
17 changes: 16 additions & 1 deletion square.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@

def area(a):
'''
Функция принимает число a и возвращает площадь квадрата со стороной a

Пример:
input: 3 output: 9

'''

return a * a


def perimeter(a):
def perimetr(a):
'''
Функция принимает число a и возвращает gthbvtnh квадрата со стороной a

Пример:
input: 3 output: 12

'''
return 4 * a
77 changes: 77 additions & 0 deletions tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import unittest
import circle, rectangle, square, triangle


class CircleTestCase(unittest.TestCase):
def test_circle_area_res(self):
res = circle.area(10)
self.assertEqual(res, 314)

def test_circle_area_minus(self):
res = circle.area(-5)
self.assertEqual(res, "Incorrect input")

def test_circle_perimetr_res(self):
res = circle.perimetr(100)
self.assertEqual(res, 628)

def test_circle_perimetr_str(self):
res = circle.perimetr("арбуз")
self.assertEqual(res, "Incorrect input")

class RectangleTestCase(unittest.TestCase):

def test_rectangle_area_res(self):
res = rectangle.area(5, 2)
self.assertEqual(res, 10)

def test_rectangle_area_str(self):
res = rectangle.area("lol", 8)
self.assertEqual(res, "Incorrect input")

def test_rectangle_perimetr_res(self):
res = rectangle.perimetr(5, 2)
self.assertEqual(res, 14)

def test_rectangle_perimetr_minus(self):
res = rectangle.perimetr(-3, 5)
self.assertEqual(res, "Incorrect input")

class SquareTestCase(unittest.TestCase):
def test_square_area_res(self):
res = square.area(3)
self.assertEqual(res, 9)

def test_square_area_minus(self):
res = square.area(-7)
self.assertEqual(res, "Incorrect input")

def test_square_perimetr_res(self):
res = square.perimetr(3)
self.assertEqual(res, 12)

def test_square_perimetr_str(self):
res = square.perimetr("vibe")
self.assertEqual(res, "Incorrect input")

class TriangleTestCase(unittest.TestCase):
def test_triangle_area_res(self):
res = triangle.area(3, 6)
self.assertEqual(res, 9)

def test_triangle_area_str(self):
res = triangle.area("a", "b")
self.assertEqual(res, "Incorrect input")

def test_triangle_perimetr_res(self):
res = triangle.perimetr(2, 7, 3)
self.assertEqual(res, 12)

def test_triangle_perimetr_minus(self):
res = triangle.perimetr(-4, -1, -6)
self.assertEqual(res, "Incorrect input")





36 changes: 36 additions & 0 deletions triangle.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
def area(a, h):
'''
Функция возвращает значение площади треугольника

Входные данные:

a: основание треугольника
b: высота треугольника

Возвращаемое значение:

a*h/2: значение площади треугольника с ооснованием a и высотой h
Пример:

input: 3, 6 output: 9
'''
return a * h / 2

def perimetr(a, b, c):
'''
Функция возвращает значение периметра треугольника

Входные данные:

a: сторона треугольника
b: сторона треугольника
с: сторона треугольника

Возвращаемое значение:

a+b+c: значение периметра треугольника со сторонами a, b и c
Пример:

input: 2, 7, 3 output: 12
'''
return a + b + c