From e5aebfbae2319571d847e584ce4e16cb77abf9c3 Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Mon, 30 Sep 2024 18:32:17 +0300 Subject: [PATCH 01/10] =?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/10] =?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/10] =?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/10] =?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/10] =?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/10] =?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/10] =?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 85b2eabcbc936b507954d622b47b37c207570527 Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Tue, 26 Nov 2024 02:11:06 +0300 Subject: [PATCH 08/10] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=BD=D0=B5=D0=BD=D1=83=D0=B6=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D1=84=D0=B0=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 c8820485b68a5861a02e3161c95d0056cbdeaf8b Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov Date: Tue, 26 Nov 2024 02:16:12 +0300 Subject: [PATCH 09/10] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=82=D0=B5=D1=81=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_circle.py | 4 ++-- test_rectangle.py | 4 ++-- test_square.py | 4 ++-- test_triangle.py | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test_circle.py b/test_circle.py index 062d8f2294..e3fa9b69f8 100644 --- a/test_circle.py +++ b/test_circle.py @@ -21,11 +21,11 @@ def test_area_none_value(self): def test_area_big_value(self): res = circle.area(10**10) - self.assertEqual(res, 0) + self.assertEqual(res, 3.1415926535897933e+20 ) def test_area_small_velue(self): res = circle.area(10 ** - 10) - self.assertEqual(res, 0) + self.assertEqual(res, 3.1415926535897936e-20) def test_perimeter_zero(self): res = circle.perimeter(0) diff --git a/test_rectangle.py b/test_rectangle.py index ad266c715f..c7f05281c6 100644 --- a/test_rectangle.py +++ b/test_rectangle.py @@ -27,11 +27,11 @@ def test_area_none_value(self): def test_area_big_value(self): res = rectangle.area(10**10, 10**5) - self.assertEqual(res, 0) + self.assertEqual(res, 1000000000000000 ) def test_area_small_velue(self): res = rectangle.area(10 ** - 10, 10 ** 5) - self.assertEqual(res, 0) + self.assertEqual(res, 1e-05) def test_perimeter_zero(self): res = rectangle.perimeter(10, 0) diff --git a/test_square.py b/test_square.py index 97c35c52c8..777cf6018e 100644 --- a/test_square.py +++ b/test_square.py @@ -21,11 +21,11 @@ def test_area_none_value(self): def test_area_big_value(self): res = square.area(10**10) - self.assertEqual(res, 0) + self.assertEqual(res, 100000000000000000000) def test_area_small_velue(self): res = square.area(10 ** - 10) - self.assertEqual(res, 0) + self.assertEqual(res, 1.0000000000000001e-20) def test_perimeter_zero(self): res = square.perimeter(0) diff --git a/test_triangle.py b/test_triangle.py index e2c010310e..3048617d85 100644 --- a/test_triangle.py +++ b/test_triangle.py @@ -35,11 +35,11 @@ def test_area_none_value(self): def test_area_big_value(self): res = triangle.area(10**10, 10**5) - self.assertEqual(res, 0) + self.assertEqual(res, 500000000000000.0) def test_area_small_velue(self): res = triangle.area(10 ** - 10, 10 ** 5) - self.assertEqual(res, 0) + self.assertEqual(res, 5e-06) def test_perimeter_zero_int(self): res = triangle.perimeter(10, 0, 20) From 52f85fe184f8894696b9e8b444f3f8a9768dd52c Mon Sep 17 00:00:00 2001 From: Konstantin Nebykov <155267984+takuya-q@users.noreply.github.com> Date: Tue, 26 Nov 2024 02:30:49 +0300 Subject: [PATCH 10/10] Create main.yml --- .github/workflows/main.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000000..7f7174d1f6 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,23 @@ +name: CI/CD + +on: + push: + branches: ["lab_5_CI/CD"] + +jobs: + test: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.12' + + - name: Run tests + run: python -m unittest