From e5aebfbae2319571d847e584ce4e16cb77abf9c3 Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Mon, 30 Sep 2024 18:32:17 +0300 Subject: [PATCH 01/11] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=BF=D0=BB=D0=BE?= =?UTF-8?q?=D1=89=D0=B0=D0=B4=D1=8C=20=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=20=D0=9F=D1=80=D1=8F=D0=BC=D0=BE=D1=83?= =?UTF-8?q?=D0=B3=D0=BE=D0=BB=D1=8C=D0=BD=D0=B8=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rectangle.py | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 rectangle.py diff --git a/rectangle.py b/rectangle.py new file mode 100644 index 0000000000..62710cb844 --- /dev/null +++ b/rectangle.py @@ -0,0 +1,5 @@ +def area(a, b): + return a * b + +def perimeter(a, b): + return a + b \ No newline at end of file From 2948d3e67c535af4d544e379057a159ad3d38e10 Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Mon, 30 Sep 2024 18:36:47 +0300 Subject: [PATCH 02/11] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=84=D0=B0=D0=B9=D0=BB=20=D1=81=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B8=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=BC=20=D0=B8=20?= =?UTF-8?q?=D0=BF=D0=BB=D0=BE=D1=89=D0=B0=D0=B4=D1=8C=D1=8E=20=D0=A2=D1=80?= =?UTF-8?q?=D0=B5=D1=83=D0=B3=D0=BE=D0=BB=D1=8C=D0=BD=D0=B8=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- triangle.py | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 triangle.py diff --git a/triangle.py b/triangle.py new file mode 100644 index 0000000000..e1e4295c09 --- /dev/null +++ b/triangle.py @@ -0,0 +1,5 @@ +def area(a, h): + return a * h / 2 + +def perimeter(a, b, c): + return a + b + c \ No newline at end of file From e9eba38bb06e9f494dccf4d8f2e3d929cd929a81 Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Mon, 30 Sep 2024 18:41:46 +0300 Subject: [PATCH 03/11] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=84=D0=BE=D1=80=D0=BC=D1=83=D0=BB=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B8=D0=BC=D0=B5=D1=82=D1=80=D0=B0=20=D0=9F?= =?UTF-8?q?=D1=80=D1=8F=D0=BC=D0=BE=D1=83=D0=B3=D0=BE=D0=BB=D1=8C=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B2=20rectangle.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rectangle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rectangle.py b/rectangle.py index 62710cb844..586eaffda0 100644 --- a/rectangle.py +++ b/rectangle.py @@ -2,4 +2,4 @@ def area(a, b): return a * b def perimeter(a, b): - return a + b \ No newline at end of file + return 2a + 2b \ No newline at end of file From 7ac30db8653568216a3eaa1f208faf8a771af5ab Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Tue, 15 Oct 2024 14:15:36 +0300 Subject: [PATCH 04/11] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=D1=80=D0=B8=D0=B8=20=D0=BA=D0=BE=20=D0=B2=D1=81=D0=B5?= =?UTF-8?q?=D0=BC=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F=D0=BC=20?= =?UTF-8?q?=D0=B2=D0=BE=20=D0=B2=D1=81=D0=B5=D1=85=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- circle.py | 13 ++++++++++++- rectangle.py | 15 ++++++++++++++- square.py | 13 ++++++++++++- triangle.py | 15 ++++++++++++++- 4 files changed, 52 insertions(+), 4 deletions(-) diff --git a/circle.py b/circle.py index c3eb8647c9..c61863e790 100644 --- a/circle.py +++ b/circle.py @@ -2,9 +2,20 @@ def area(r): + """ + Получает на вход r, возвращает r в квадрате умноженное на pi. + + При вызове функции area(5) + 5 * 5 * pi = 25pi + """ return math.pi * r * r def perimeter(r): - return 2 * math.pi * r + """ + Получает на вход r, возвращает r умноженное на 2 и на pi. + При вызове функции area(5) + 5 * 2 * pi = 10pi + """ + return 2 * math.pi * r diff --git a/rectangle.py b/rectangle.py index 586eaffda0..fc3423f57b 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,5 +1,18 @@ def area(a, b): + """ + На вход подаётся два значения a и b, возвращается их произведение a на b + + При вызове функции area(4,5) + 4 * 5 = 20 + """ return a * b + def perimeter(a, b): - return 2a + 2b \ No newline at end of file + """ + На вход подаётся два значения a и b, возвращается сумма произведение a на 2 и b на 2 + + При вызове функции perimeter(4,5) + 2 * 4 + 2 * 5 = 18 + """ + return 2 * a + 2 * b diff --git a/square.py b/square.py index 0f98724205..8b40df7072 100644 --- a/square.py +++ b/square.py @@ -1,7 +1,18 @@ - def area(a): + """ + На вход подаётся a, возвращается a в квадрате. + + При вызове функции area(10) + 10 * 10 = 100 + """ return a * a def perimeter(a): + """ + На вход подаётся a, возвращается a умноженное на 4. + + При вызове функции area(5) + 5 * 4 = 20 + """ return 4 * a diff --git a/triangle.py b/triangle.py index e1e4295c09..b6cdfca108 100644 --- a/triangle.py +++ b/triangle.py @@ -1,5 +1,18 @@ def area(a, h): + """ + На вход подаётся два значения a и h, возвращается произведение значений a на h, и разделенное на 2 + + При вызове функции area(10,3) + 10 * 3 / 2 = 15 + """ return a * h / 2 + def perimeter(a, b, c): - return a + b + c \ No newline at end of file + """ + На вход подаётся три значения a, b, c, возвращается сумма всех трех значений + + При вызове функции area(1,2,3) + 1 + 2 + 3 = 6 + """ + return a + b + c From c25d274b8d9e8a8d8fdfe11e4e3b0b6ee7b61567 Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Tue, 15 Oct 2024 15:27:13 +0300 Subject: [PATCH 05/11] =?UTF-8?q?=D0=94=D0=BB=D1=8F=20push=20=D0=BD=D0=B0?= =?UTF-8?q?=20gitHub?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- circle.py | 12 ------------ rectangle.py | 12 ------------ square.py | 12 ------------ triangle.py | 12 ------------ 4 files changed, 48 deletions(-) diff --git a/circle.py b/circle.py index c61863e790..21e9a17793 100644 --- a/circle.py +++ b/circle.py @@ -2,20 +2,8 @@ def area(r): - """ - Получает на вход r, возвращает r в квадрате умноженное на pi. - - При вызове функции area(5) - 5 * 5 * pi = 25pi - """ return math.pi * r * r def perimeter(r): - """ - Получает на вход r, возвращает r умноженное на 2 и на pi. - - При вызове функции area(5) - 5 * 2 * pi = 10pi - """ return 2 * math.pi * r diff --git a/rectangle.py b/rectangle.py index fc3423f57b..0c6a8eb850 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,18 +1,6 @@ def area(a, b): - """ - На вход подаётся два значения a и b, возвращается их произведение a на b - - При вызове функции area(4,5) - 4 * 5 = 20 - """ return a * b def perimeter(a, b): - """ - На вход подаётся два значения a и b, возвращается сумма произведение a на 2 и b на 2 - - При вызове функции perimeter(4,5) - 2 * 4 + 2 * 5 = 18 - """ return 2 * a + 2 * b diff --git a/square.py b/square.py index 8b40df7072..c782610dfe 100644 --- a/square.py +++ b/square.py @@ -1,18 +1,6 @@ def area(a): - """ - На вход подаётся a, возвращается a в квадрате. - - При вызове функции area(10) - 10 * 10 = 100 - """ return a * a def perimeter(a): - """ - На вход подаётся a, возвращается a умноженное на 4. - - При вызове функции area(5) - 5 * 4 = 20 - """ return 4 * a diff --git a/triangle.py b/triangle.py index b6cdfca108..142a65b479 100644 --- a/triangle.py +++ b/triangle.py @@ -1,18 +1,6 @@ def area(a, h): - """ - На вход подаётся два значения a и h, возвращается произведение значений a на h, и разделенное на 2 - - При вызове функции area(10,3) - 10 * 3 / 2 = 15 - """ return a * h / 2 def perimeter(a, b, c): - """ - На вход подаётся три значения a, b, c, возвращается сумма всех трех значений - - При вызове функции area(1,2,3) - 1 + 2 + 3 = 6 - """ return a + b + c From 3a4a4ce62549f7b70188a25bec0cb73a0dd4dfba Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Mon, 25 Nov 2024 19:24:38 +0300 Subject: [PATCH 06/11] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20unit-=D1=82=D0=B5=D1=81=D1=82=D1=8B=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=81=D1=83=D1=89=D0=B5=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D1=83=D1=8E=D1=89=D0=B8=D1=85=20=D1=84=D1=83=D0=BD=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- circle.py | 8 +++++ rectangle.py | 11 ++++++- square.py | 8 +++++ triangle.py | 10 +++++- unittestcircle.py | 44 ++++++++++++++++++++++++++ unittestrectangle.py | 56 +++++++++++++++++++++++++++++++++ unittestsquare.py | 44 ++++++++++++++++++++++++++ unittesttriangle.py | 74 ++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 253 insertions(+), 2 deletions(-) create mode 100644 unittestcircle.py create mode 100644 unittestrectangle.py create mode 100644 unittestsquare.py create mode 100644 unittesttriangle.py diff --git a/circle.py b/circle.py index 21e9a17793..0b3b4a23cf 100644 --- a/circle.py +++ b/circle.py @@ -2,8 +2,16 @@ def area(r): + if not isinstance(r, (int, float)): + raise TypeError("Value must be number") + if r < 0: + raise ValueError("Value must be positive") return math.pi * r * r def perimeter(r): + if not isinstance(r, (int, float)): + raise TypeError("Value must be number") + if r < 0: + raise ValueError("Value must be positive") return 2 * math.pi * r diff --git a/rectangle.py b/rectangle.py index 0c6a8eb850..8067fdb404 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,6 +1,15 @@ + def area(a, b): + if not isinstance(a, (int, float)) or not isinstance(b, (int, float)): + raise TypeError("Values must be numbers") + if a < 0 or b < 0: + raise ValueError("Values must be positive") return a * b def perimeter(a, b): - return 2 * a + 2 * b + if not isinstance(a, (int, float)) or not isinstance(b, (int, float)): + raise TypeError("Values must be numbers") + if a < 0 or b < 0: + raise ValueError("Values must be positive") + return 2 * a + 2 * b \ No newline at end of file diff --git a/square.py b/square.py index c782610dfe..88df8bf36f 100644 --- a/square.py +++ b/square.py @@ -1,6 +1,14 @@ def area(a): + if not isinstance(a, (int, float)): + raise TypeError("Value must be number") + if a < 0: + raise ValueError("Value must be positive") return a * a def perimeter(a): + if not isinstance(a, (int, float)): + raise TypeError("Value must be number") + if a < 0: + raise ValueError("Value must be positive") return 4 * a diff --git a/triangle.py b/triangle.py index 142a65b479..108dab7eac 100644 --- a/triangle.py +++ b/triangle.py @@ -1,6 +1,14 @@ def area(a, h): + if not isinstance(a, (int, float)) or not isinstance(h, (int, float)): + raise TypeError("Values must be numbers") + if a < 0 or h < 0: + raise ValueError("Values must be positive") return a * h / 2 def perimeter(a, b, c): - return a + b + c + if not isinstance(a, (int, float)) or not isinstance(b, (int, float) or not isinstance(c, (int, float))): + raise TypeError("Values must be numbers") + if a < 0 or b < 0 or c < 0: + raise ValueError("Values must be positive") + return a + b + c \ No newline at end of file diff --git a/unittestcircle.py b/unittestcircle.py new file mode 100644 index 0000000000..062d8f2294 --- /dev/null +++ b/unittestcircle.py @@ -0,0 +1,44 @@ +import circle +import unittest + + +class CircleTestCase(unittest.TestCase): + def test_area_zero(self): + res = circle.area(0) + self.assertEqual(res, 0) + + def test_area_negative(self): + with self.assertRaises(ValueError): + circle.area(-10) + + def test_area_str_input(self): + with self.assertRaises(TypeError): + circle.area("a") + + def test_area_none_value(self): + with self.assertRaises(TypeError): + circle.area(None) + + def test_area_big_value(self): + res = circle.area(10**10) + self.assertEqual(res, 0) + + def test_area_small_velue(self): + res = circle.area(10 ** - 10) + self.assertEqual(res, 0) + + def test_perimeter_zero(self): + res = circle.perimeter(0) + self.assertEqual(res, 0) + + def test_perimeter_negative(self): + with self.assertRaises(ValueError): + circle.perimeter(-10) + + def test_perimeter_str_input(self): + with self.assertRaises(TypeError): + circle.perimeter("a") + + def test_perimeter_none_value(self): + with self.assertRaises(TypeError): + circle.perimeter(None) \ No newline at end of file diff --git a/unittestrectangle.py b/unittestrectangle.py new file mode 100644 index 0000000000..ad266c715f --- /dev/null +++ b/unittestrectangle.py @@ -0,0 +1,56 @@ +import rectangle +import unittest + + +class RectangleTestCase(unittest.TestCase): + def test_area_zero(self): + res = rectangle.area(10, 0) + self.assertEqual(res, 0) + + def test_area_square(self): + res = rectangle.area(10, 10) + self.assertEqual(res, 100) + + def test_area_negative(self): + with self.assertRaises(ValueError): + rectangle.area(-10, 0) + + def test_area_str_input(self): + with self.assertRaises(TypeError): + rectangle.area("a", 10) + + def test_area_none_value(self): + with self.assertRaises(TypeError): + rectangle.area(None, 10) + with self.assertRaises(TypeError): + rectangle.area(10, None) + + def test_area_big_value(self): + res = rectangle.area(10**10, 10**5) + self.assertEqual(res, 0) + + def test_area_small_velue(self): + res = rectangle.area(10 ** - 10, 10 ** 5) + self.assertEqual(res, 0) + + def test_perimeter_zero(self): + res = rectangle.perimeter(10, 0) + self.assertEqual(res, 20) + + def test_perimeter_square(self): + res = rectangle.perimeter(10, 10) + self.assertEqual(res, 40) + + def test_perimeter_negative(self): + with self.assertRaises(ValueError): + rectangle.perimeter(-10, 0) + + def test_perimeter_str_input(self): + with self.assertRaises(TypeError): + rectangle.perimeter("a", 0) + + def test_perimeter_none_value(self): + with self.assertRaises(TypeError): + rectangle.perimeter(None, 10) + with self.assertRaises(TypeError): + rectangle.perimeter(10, None) diff --git a/unittestsquare.py b/unittestsquare.py new file mode 100644 index 0000000000..97c35c52c8 --- /dev/null +++ b/unittestsquare.py @@ -0,0 +1,44 @@ +import square +import unittest + + +class SquareTestCase(unittest.TestCase): + def test_area_zero_int(self): + res = square.area(0) + self.assertEqual(res, 0) + + def test_area_negative(self): + with self.assertRaises(ValueError): + square.area(-10) + + def test_area_str_input(self): + with self.assertRaises(TypeError): + square.area("a") + + def test_area_none_value(self): + with self.assertRaises(TypeError): + square.area(None) + + def test_area_big_value(self): + res = square.area(10**10) + self.assertEqual(res, 0) + + def test_area_small_velue(self): + res = square.area(10 ** - 10) + self.assertEqual(res, 0) + + def test_perimeter_zero(self): + res = square.perimeter(0) + self.assertEqual(res, 0) + + def test_perimeter_negative(self): + with self.assertRaises(ValueError): + square.perimeter(-10) + + def test_perimeter_str_input(self): + with self.assertRaises(TypeError): + square.perimeter("a") + + def test_perimeter_none_value(self): + with self.assertRaises(TypeError): + square.perimeter(None) diff --git a/unittesttriangle.py b/unittesttriangle.py new file mode 100644 index 0000000000..e2c010310e --- /dev/null +++ b/unittesttriangle.py @@ -0,0 +1,74 @@ +import triangle +import unittest + + +class TriangleTestCase(unittest.TestCase): + def test_area_zero_int(self): + res = triangle.area(10, 0) + self.assertEqual(res, 0) + + def test_area_zero_float(self): + res = triangle.area(10.6, 0) + self.assertEqual(res, 0) + + def test_area_negative(self): + with self.assertRaises(ValueError): + triangle.area(-10, 10) + with self.assertRaises(ValueError): + triangle.area(10, -10) + + def test_area_str_input(self): + with self.assertRaises(TypeError): + triangle.area("a", 10) + with self.assertRaises(TypeError): + triangle.area(10, "a") + + def test_area_negative(self): + with self.assertRaises(ValueError): + triangle.perimeter(-10, 10, 10) + + def test_area_none_value(self): + with self.assertRaises(TypeError): + triangle.area(None, 10) + with self.assertRaises(TypeError): + triangle.area(10, None) + + def test_area_big_value(self): + res = triangle.area(10**10, 10**5) + self.assertEqual(res, 0) + + def test_area_small_velue(self): + res = triangle.area(10 ** - 10, 10 ** 5) + self.assertEqual(res, 0) + + def test_perimeter_zero_int(self): + res = triangle.perimeter(10, 0, 20) + self.assertEqual(res, 30) + + def test_perimeter_zero_float(self): + res = triangle.perimeter(10.5, 0, 10.5) + self.assertEqual(res, 21) + + def test_perimeter_equilateral_int(self): + res = triangle.perimeter(10, 10, 10) + self.assertEqual(res, 30) + + def test_perimeter_equilateral_float(self): + res = triangle.perimeter(10.5, 10.5, 10.5) + self.assertEqual(res, 31.5) + + def test_perimetr_str_input(self): + with self.assertRaises(TypeError): + triangle.perimeter("a", 50, 50) + with self.assertRaises(TypeError): + triangle.perimeter(50, "a", 50) + with self.assertRaises(TypeError): + triangle.perimeter(50, 50, "a") + + def test_perimeter_none_value(self): + with self.assertRaises(TypeError): + triangle.perimeter(None, 10, 50) + with self.assertRaises(TypeError): + triangle.perimeter(10, None, 50) + with self.assertRaises(TypeError): + triangle.perimeter(10, 10, None) From a94a15c4b99692c7c4c4e883a9f49b9a104e690f Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Tue, 26 Nov 2024 00:17:15 +0300 Subject: [PATCH 07/11] =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_circle.py | 44 ++++++++++++++++++++++++++++ test_rectangle.py | 56 +++++++++++++++++++++++++++++++++++ test_square.py | 44 ++++++++++++++++++++++++++++ test_triangle.py | 74 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 218 insertions(+) create mode 100644 test_circle.py create mode 100644 test_rectangle.py create mode 100644 test_square.py create mode 100644 test_triangle.py diff --git a/test_circle.py b/test_circle.py new file mode 100644 index 0000000000..062d8f2294 --- /dev/null +++ b/test_circle.py @@ -0,0 +1,44 @@ +import circle +import unittest + + +class CircleTestCase(unittest.TestCase): + def test_area_zero(self): + res = circle.area(0) + self.assertEqual(res, 0) + + def test_area_negative(self): + with self.assertRaises(ValueError): + circle.area(-10) + + def test_area_str_input(self): + with self.assertRaises(TypeError): + circle.area("a") + + def test_area_none_value(self): + with self.assertRaises(TypeError): + circle.area(None) + + def test_area_big_value(self): + res = circle.area(10**10) + self.assertEqual(res, 0) + + def test_area_small_velue(self): + res = circle.area(10 ** - 10) + self.assertEqual(res, 0) + + def test_perimeter_zero(self): + res = circle.perimeter(0) + self.assertEqual(res, 0) + + def test_perimeter_negative(self): + with self.assertRaises(ValueError): + circle.perimeter(-10) + + def test_perimeter_str_input(self): + with self.assertRaises(TypeError): + circle.perimeter("a") + + def test_perimeter_none_value(self): + with self.assertRaises(TypeError): + circle.perimeter(None) \ No newline at end of file diff --git a/test_rectangle.py b/test_rectangle.py new file mode 100644 index 0000000000..ad266c715f --- /dev/null +++ b/test_rectangle.py @@ -0,0 +1,56 @@ +import rectangle +import unittest + + +class RectangleTestCase(unittest.TestCase): + def test_area_zero(self): + res = rectangle.area(10, 0) + self.assertEqual(res, 0) + + def test_area_square(self): + res = rectangle.area(10, 10) + self.assertEqual(res, 100) + + def test_area_negative(self): + with self.assertRaises(ValueError): + rectangle.area(-10, 0) + + def test_area_str_input(self): + with self.assertRaises(TypeError): + rectangle.area("a", 10) + + def test_area_none_value(self): + with self.assertRaises(TypeError): + rectangle.area(None, 10) + with self.assertRaises(TypeError): + rectangle.area(10, None) + + def test_area_big_value(self): + res = rectangle.area(10**10, 10**5) + self.assertEqual(res, 0) + + def test_area_small_velue(self): + res = rectangle.area(10 ** - 10, 10 ** 5) + self.assertEqual(res, 0) + + def test_perimeter_zero(self): + res = rectangle.perimeter(10, 0) + self.assertEqual(res, 20) + + def test_perimeter_square(self): + res = rectangle.perimeter(10, 10) + self.assertEqual(res, 40) + + def test_perimeter_negative(self): + with self.assertRaises(ValueError): + rectangle.perimeter(-10, 0) + + def test_perimeter_str_input(self): + with self.assertRaises(TypeError): + rectangle.perimeter("a", 0) + + def test_perimeter_none_value(self): + with self.assertRaises(TypeError): + rectangle.perimeter(None, 10) + with self.assertRaises(TypeError): + rectangle.perimeter(10, None) diff --git a/test_square.py b/test_square.py new file mode 100644 index 0000000000..97c35c52c8 --- /dev/null +++ b/test_square.py @@ -0,0 +1,44 @@ +import square +import unittest + + +class SquareTestCase(unittest.TestCase): + def test_area_zero_int(self): + res = square.area(0) + self.assertEqual(res, 0) + + def test_area_negative(self): + with self.assertRaises(ValueError): + square.area(-10) + + def test_area_str_input(self): + with self.assertRaises(TypeError): + square.area("a") + + def test_area_none_value(self): + with self.assertRaises(TypeError): + square.area(None) + + def test_area_big_value(self): + res = square.area(10**10) + self.assertEqual(res, 0) + + def test_area_small_velue(self): + res = square.area(10 ** - 10) + self.assertEqual(res, 0) + + def test_perimeter_zero(self): + res = square.perimeter(0) + self.assertEqual(res, 0) + + def test_perimeter_negative(self): + with self.assertRaises(ValueError): + square.perimeter(-10) + + def test_perimeter_str_input(self): + with self.assertRaises(TypeError): + square.perimeter("a") + + def test_perimeter_none_value(self): + with self.assertRaises(TypeError): + square.perimeter(None) diff --git a/test_triangle.py b/test_triangle.py new file mode 100644 index 0000000000..e2c010310e --- /dev/null +++ b/test_triangle.py @@ -0,0 +1,74 @@ +import triangle +import unittest + + +class TriangleTestCase(unittest.TestCase): + def test_area_zero_int(self): + res = triangle.area(10, 0) + self.assertEqual(res, 0) + + def test_area_zero_float(self): + res = triangle.area(10.6, 0) + self.assertEqual(res, 0) + + def test_area_negative(self): + with self.assertRaises(ValueError): + triangle.area(-10, 10) + with self.assertRaises(ValueError): + triangle.area(10, -10) + + def test_area_str_input(self): + with self.assertRaises(TypeError): + triangle.area("a", 10) + with self.assertRaises(TypeError): + triangle.area(10, "a") + + def test_area_negative(self): + with self.assertRaises(ValueError): + triangle.perimeter(-10, 10, 10) + + def test_area_none_value(self): + with self.assertRaises(TypeError): + triangle.area(None, 10) + with self.assertRaises(TypeError): + triangle.area(10, None) + + def test_area_big_value(self): + res = triangle.area(10**10, 10**5) + self.assertEqual(res, 0) + + def test_area_small_velue(self): + res = triangle.area(10 ** - 10, 10 ** 5) + self.assertEqual(res, 0) + + def test_perimeter_zero_int(self): + res = triangle.perimeter(10, 0, 20) + self.assertEqual(res, 30) + + def test_perimeter_zero_float(self): + res = triangle.perimeter(10.5, 0, 10.5) + self.assertEqual(res, 21) + + def test_perimeter_equilateral_int(self): + res = triangle.perimeter(10, 10, 10) + self.assertEqual(res, 30) + + def test_perimeter_equilateral_float(self): + res = triangle.perimeter(10.5, 10.5, 10.5) + self.assertEqual(res, 31.5) + + def test_perimetr_str_input(self): + with self.assertRaises(TypeError): + triangle.perimeter("a", 50, 50) + with self.assertRaises(TypeError): + triangle.perimeter(50, "a", 50) + with self.assertRaises(TypeError): + triangle.perimeter(50, 50, "a") + + def test_perimeter_none_value(self): + with self.assertRaises(TypeError): + triangle.perimeter(None, 10, 50) + with self.assertRaises(TypeError): + triangle.perimeter(10, None, 50) + with self.assertRaises(TypeError): + triangle.perimeter(10, 10, None) From 02a79887e2cebb9f607ca612d5c72bebece5d822 Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Tue, 26 Nov 2024 02:03:22 +0300 Subject: [PATCH 08/11] =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20=D1=84=D0=B0?= =?UTF-8?q?=D0=B9=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_circle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_circle.py b/test_circle.py index 062d8f2294..6dd6b0d80b 100644 --- a/test_circle.py +++ b/test_circle.py @@ -4,7 +4,7 @@ class CircleTestCase(unittest.TestCase): def test_area_zero(self): - res = circle.area(0) + res = circle.area(0 self.assertEqual(res, 0) def test_area_negative(self): From 9e365d435a0c2901344b0e76f37ea46dcfd23a7d Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Tue, 26 Nov 2024 02:08:29 +0300 Subject: [PATCH 09/11] =?UTF-8?q?=D0=92=D0=BE=D0=B7=D0=B2=D1=80=D0=B0?= =?UTF-8?q?=D1=89=D0=B5=D0=BD=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D1=8E=D1=89=D0=B0=D1=8F=20=D1=84=D1=83=D0=BD=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_circle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_circle.py b/test_circle.py index 6dd6b0d80b..062d8f2294 100644 --- a/test_circle.py +++ b/test_circle.py @@ -4,7 +4,7 @@ class CircleTestCase(unittest.TestCase): def test_area_zero(self): - res = circle.area(0 + res = circle.area(0) self.assertEqual(res, 0) def test_area_negative(self): From cdb21374674ca9ab9ad613bc8cfc56e07ee4a14d Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Tue, 26 Nov 2024 02:09:03 +0300 Subject: [PATCH 10/11] =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20=D1=84=D0=B0?= =?UTF-8?q?=D0=B9=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- unittestcircle.py | 44 -------------------------- unittestrectangle.py | 56 --------------------------------- unittestsquare.py | 44 -------------------------- unittesttriangle.py | 74 -------------------------------------------- 4 files changed, 218 deletions(-) delete mode 100644 unittestcircle.py delete mode 100644 unittestrectangle.py delete mode 100644 unittestsquare.py delete mode 100644 unittesttriangle.py diff --git a/unittestcircle.py b/unittestcircle.py deleted file mode 100644 index 062d8f2294..0000000000 --- a/unittestcircle.py +++ /dev/null @@ -1,44 +0,0 @@ -import circle -import unittest - - -class CircleTestCase(unittest.TestCase): - def test_area_zero(self): - res = circle.area(0) - self.assertEqual(res, 0) - - def test_area_negative(self): - with self.assertRaises(ValueError): - circle.area(-10) - - def test_area_str_input(self): - with self.assertRaises(TypeError): - circle.area("a") - - def test_area_none_value(self): - with self.assertRaises(TypeError): - circle.area(None) - - def test_area_big_value(self): - res = circle.area(10**10) - self.assertEqual(res, 0) - - def test_area_small_velue(self): - res = circle.area(10 ** - 10) - self.assertEqual(res, 0) - - def test_perimeter_zero(self): - res = circle.perimeter(0) - self.assertEqual(res, 0) - - def test_perimeter_negative(self): - with self.assertRaises(ValueError): - circle.perimeter(-10) - - def test_perimeter_str_input(self): - with self.assertRaises(TypeError): - circle.perimeter("a") - - def test_perimeter_none_value(self): - with self.assertRaises(TypeError): - circle.perimeter(None) \ No newline at end of file diff --git a/unittestrectangle.py b/unittestrectangle.py deleted file mode 100644 index ad266c715f..0000000000 --- a/unittestrectangle.py +++ /dev/null @@ -1,56 +0,0 @@ -import rectangle -import unittest - - -class RectangleTestCase(unittest.TestCase): - def test_area_zero(self): - res = rectangle.area(10, 0) - self.assertEqual(res, 0) - - def test_area_square(self): - res = rectangle.area(10, 10) - self.assertEqual(res, 100) - - def test_area_negative(self): - with self.assertRaises(ValueError): - rectangle.area(-10, 0) - - def test_area_str_input(self): - with self.assertRaises(TypeError): - rectangle.area("a", 10) - - def test_area_none_value(self): - with self.assertRaises(TypeError): - rectangle.area(None, 10) - with self.assertRaises(TypeError): - rectangle.area(10, None) - - def test_area_big_value(self): - res = rectangle.area(10**10, 10**5) - self.assertEqual(res, 0) - - def test_area_small_velue(self): - res = rectangle.area(10 ** - 10, 10 ** 5) - self.assertEqual(res, 0) - - def test_perimeter_zero(self): - res = rectangle.perimeter(10, 0) - self.assertEqual(res, 20) - - def test_perimeter_square(self): - res = rectangle.perimeter(10, 10) - self.assertEqual(res, 40) - - def test_perimeter_negative(self): - with self.assertRaises(ValueError): - rectangle.perimeter(-10, 0) - - def test_perimeter_str_input(self): - with self.assertRaises(TypeError): - rectangle.perimeter("a", 0) - - def test_perimeter_none_value(self): - with self.assertRaises(TypeError): - rectangle.perimeter(None, 10) - with self.assertRaises(TypeError): - rectangle.perimeter(10, None) diff --git a/unittestsquare.py b/unittestsquare.py deleted file mode 100644 index 97c35c52c8..0000000000 --- a/unittestsquare.py +++ /dev/null @@ -1,44 +0,0 @@ -import square -import unittest - - -class SquareTestCase(unittest.TestCase): - def test_area_zero_int(self): - res = square.area(0) - self.assertEqual(res, 0) - - def test_area_negative(self): - with self.assertRaises(ValueError): - square.area(-10) - - def test_area_str_input(self): - with self.assertRaises(TypeError): - square.area("a") - - def test_area_none_value(self): - with self.assertRaises(TypeError): - square.area(None) - - def test_area_big_value(self): - res = square.area(10**10) - self.assertEqual(res, 0) - - def test_area_small_velue(self): - res = square.area(10 ** - 10) - self.assertEqual(res, 0) - - def test_perimeter_zero(self): - res = square.perimeter(0) - self.assertEqual(res, 0) - - def test_perimeter_negative(self): - with self.assertRaises(ValueError): - square.perimeter(-10) - - def test_perimeter_str_input(self): - with self.assertRaises(TypeError): - square.perimeter("a") - - def test_perimeter_none_value(self): - with self.assertRaises(TypeError): - square.perimeter(None) diff --git a/unittesttriangle.py b/unittesttriangle.py deleted file mode 100644 index e2c010310e..0000000000 --- a/unittesttriangle.py +++ /dev/null @@ -1,74 +0,0 @@ -import triangle -import unittest - - -class TriangleTestCase(unittest.TestCase): - def test_area_zero_int(self): - res = triangle.area(10, 0) - self.assertEqual(res, 0) - - def test_area_zero_float(self): - res = triangle.area(10.6, 0) - self.assertEqual(res, 0) - - def test_area_negative(self): - with self.assertRaises(ValueError): - triangle.area(-10, 10) - with self.assertRaises(ValueError): - triangle.area(10, -10) - - def test_area_str_input(self): - with self.assertRaises(TypeError): - triangle.area("a", 10) - with self.assertRaises(TypeError): - triangle.area(10, "a") - - def test_area_negative(self): - with self.assertRaises(ValueError): - triangle.perimeter(-10, 10, 10) - - def test_area_none_value(self): - with self.assertRaises(TypeError): - triangle.area(None, 10) - with self.assertRaises(TypeError): - triangle.area(10, None) - - def test_area_big_value(self): - res = triangle.area(10**10, 10**5) - self.assertEqual(res, 0) - - def test_area_small_velue(self): - res = triangle.area(10 ** - 10, 10 ** 5) - self.assertEqual(res, 0) - - def test_perimeter_zero_int(self): - res = triangle.perimeter(10, 0, 20) - self.assertEqual(res, 30) - - def test_perimeter_zero_float(self): - res = triangle.perimeter(10.5, 0, 10.5) - self.assertEqual(res, 21) - - def test_perimeter_equilateral_int(self): - res = triangle.perimeter(10, 10, 10) - self.assertEqual(res, 30) - - def test_perimeter_equilateral_float(self): - res = triangle.perimeter(10.5, 10.5, 10.5) - self.assertEqual(res, 31.5) - - def test_perimetr_str_input(self): - with self.assertRaises(TypeError): - triangle.perimeter("a", 50, 50) - with self.assertRaises(TypeError): - triangle.perimeter(50, "a", 50) - with self.assertRaises(TypeError): - triangle.perimeter(50, 50, "a") - - def test_perimeter_none_value(self): - with self.assertRaises(TypeError): - triangle.perimeter(None, 10, 50) - with self.assertRaises(TypeError): - triangle.perimeter(10, None, 50) - with self.assertRaises(TypeError): - triangle.perimeter(10, 10, None) From a695a274a1b20fcba2d20e8669f8c143df941a96 Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov <155267984+takuya-q@users.noreply.github.com> Date: Wed, 27 Nov 2024 11:19:09 +0300 Subject: [PATCH 11/11] Update README.md --- docs/README.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 63f8727939..ea4c4eaba7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,10 +1,80 @@ +# Документация +## Общее описание решения +- Для выполнения решения, к каждой функции в каждом файле,были добавлены комментарии как выполняется функция. +- После внесения изменений был выполнен: + ```bash + git add +- Добавлены комментарии ко всем функциям внесенным изменениям: + ```bash + git commit -m "Добавлены комментарии ко всем функциям" +- Создана новая ветка: + ```bash + git checkout -b lab_2_documentation +- Изменения были отправлены на удаленный репозиторий: + ```bash + git push origin lab_2_documentation +- Отправил pull request + +## Описание каждой функции с примерами вызова +## Условия значений +- Неотрицательные (иначе выдаётся ошибка ValueError) +- Значение должно быть числовым (иначе выдаётся ошибка TypeError) +- Значение должно подаваться (не None) +1. **Файл** ```circle.py``` +- **Функция** ```area(r)```: + - **Формула**: ```π * r²``` + - **Описание**: Вычисляет площадь круга по заданному радиусу ```r```. + - **Пример вызова**: ```area(5)``` вернёт приблизительно ```78.54```. +- **Функция** ```perimeter(r)```: + - **Формула**: ```2 * π * R``` + - **Описание**: Вычисляет периметр (длину окружности) круга по заданному радиусу ```r```. + - **Пример вызова**: ```perimeter(5)``` вернёт приблизительно ```31.42```. + +2. **Файл** ```square.py``` +- **Функция** ```area(a)```: + - **Формула**: ```a²``` + - **Описание**: Вычисляет площадь квадрата со стороной ```a```. + - **Пример вызова**: ```area(10)``` вернёт ```100```. +- **Функция** ```perimeter(a)```: + - **Формула**: ```4 * a``` + - **Описание**: Вычисляет периметр квадрата со стороной ```a```. + - **Пример вызова**: ```perimeter(5)``` вернёт ```20```. + +3. **Файл** ```triangle.py``` +- **Функция** ```area(a, h)```: + - **Формула**: ```a * h / 2``` + - **Описание**: Вычисляет площадь треугольника с основанием ```a``` и высотой ```h```. + - **Пример вызова**: ```area(10, 3)``` вернёт ```15```. +- **Функция** ```perimeter(a, b, c)```: + - **Формула**: ```a + b + c``` + - **Описание**: Вычисляет периметр треугольника со сторонами ```a```, ```b``` и ```c```. + - **Пример вызова**: ```perimeter(1, 2, 3)``` вернёт ```6```. + +4. **Файл** ```rectangle.py``` +- **Функция** ```area(a, b)```: + - **Формула**: ```a * b``` + - **Описание**: Вычисляет площадь прямоугольника со сторонами ```a``` и ```b```. + - **Пример вызова**: ```area(4, 5)``` вернёт ```20```. +- **Функция** ```perimeter(a, b)```: + - **Формула**: ```2 * a + 2 * b``` + - **Описание**: Вычисляет периметр прямоугольника со сторонами ```a``` и ```b```. + - **Пример вызова**: ```perimeter(4, 5)``` вернёт ```18```. + +## История изменения проекта с хешами комитов (кроме последней записи) + - commit [8ba9aeb3cea847b63a91ac378a2a6db758682460](https://github.com/takuya-q/geometric_lib/commit/8ba9aeb3cea847b63a91ac378a2a6db758682460) "L-03: Circle and square" added в ветке ```main``` + - commit [d078c8d9ee6155f3cb0e577d28d337b791de28e2](https://github.com/takuya-q/geometric_lib/commit/d078c8d9ee6155f3cb0e577d28d337b791de28e2) "L-03: Docs added" в ветке ```main``` + - commit [e5aebfbae2319571d847e584ce4e16cb77abf9c3](https://github.com/takuya-q/geometric_lib/commit/e5aebfbae2319571d847e584ce4e16cb77abf9c3) "Добавлен файл площадь и периметр Прямоугольника" в ветке ```new_features_466846``` + - commit [2948d3e67c535af4d544e379057a159ad3d38e10](https://github.com/takuya-q/geometric_lib/commit/2948d3e67c535af4d544e379057a159ad3d38e10) "Добавлен файл с периметром и площадью Треугольника" в ветке ```new_features_466846``` + - commit [e9eba38bb06e9f494dccf4d8f2e3d929cd929a81](https://github.com/takuya-q/geometric_lib/commit/e9eba38bb06e9f494dccf4d8f2e3d929cd929a81) "Изменена формула периметра Прямоуголька в rectangle.py" в ветке ```new_features_466846``` + - commit [7ac30db8653568216a3eaa1f208faf8a771af5ab](https://github.com/takuya-q/geometric_lib/commit/7ac30db8653568216a3eaa1f208faf8a771af5ab) "Добавлены комментарии ко всем функциям во всех файлах" в ветке ```new_features_466846``` # Math formulas ## Area - Circle: S = πR² - Rectangle: S = ab - Square: S = a² - +- Triangle: S = a*h/2 ## Perimeter - Circle: P = 2πR - Rectangle: P = 2a + 2b -- Square: P = 4a \ No newline at end of file +- Square: P = 4a +- Triangle: P = a + b + c