From d170f491d9a5a6fbd8492377c94cf93edafa0285 Mon Sep 17 00:00:00 2001 From: Inmo Jang Date: Sun, 11 May 2025 17:33:51 +0900 Subject: [PATCH 1/2] feat: add divide(a, b) function to functions.py --- CHANGELOG.md | 7 +++++++ functions.py | 7 ++++++- tests/test_cases_divide.json | 12 ++++++++++++ tests/test_code_divide.py | 25 +++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 tests/test_cases_divide.json create mode 100644 tests/test_code_divide.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 61ee1d8..4e433bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [Unreleased] + +### Added + +- Added `divide(a, b)` function in `functions.py` to perform division. + + ## [1.0.0] - 2025-05-11 ### Added diff --git a/functions.py b/functions.py index d33c9bb..771d400 100644 --- a/functions.py +++ b/functions.py @@ -4,4 +4,9 @@ def add(a, b): def minus(a, b): """Subtract b from a.""" - return a - b \ No newline at end of file + return a - b + +def divide(a, b): + """Divide a by b.""" + return a / b + diff --git a/tests/test_cases_divide.json b/tests/test_cases_divide.json new file mode 100644 index 0000000..1064607 --- /dev/null +++ b/tests/test_cases_divide.json @@ -0,0 +1,12 @@ +[ + {"input": {"a": 10, "b": 2}, "expected": 5}, + {"input": {"a": -10, "b": 2}, "expected": -5}, + {"input": {"a": 0, "b": 1}, "expected": 0}, + {"input": {"a": 10, "b": -2}, "expected": -5}, + {"input": {"a": 1, "b": 3}, "expected": 0.3333333333333333}, + {"input": {"a": 100, "b": 10}, "expected": 10}, + {"input": {"a": -100, "b": -10}, "expected": 10}, + {"input": {"a": 7, "b": 7}, "expected": 1}, + {"input": {"a": 0, "b": 10}, "expected": 0}, + {"input": {"a": 10, "b": 0}, "expected_error": "ZeroDivisionError"} +] \ No newline at end of file diff --git a/tests/test_code_divide.py b/tests/test_code_divide.py new file mode 100644 index 0000000..9c5214b --- /dev/null +++ b/tests/test_code_divide.py @@ -0,0 +1,25 @@ +import unittest +import json +from functions import divide + +class TestDivideFunction(unittest.TestCase): + def setUp(self): + # JSON 파일에서 테스트 케이스 로드 + with open("tests/test_cases_divide.json", "r") as f: + self.test_cases = json.load(f) + + def test_divide(self): + for case in self.test_cases: + a = case["input"]["a"] + b = case["input"]["b"] + + if "expected" in case: + with self.subTest(a=a, b=b): + self.assertAlmostEqual(divide(a, b), case["expected"], places=7) + elif "expected_error" in case: + with self.subTest(a=a, b=b): + with self.assertRaises(eval(case["expected_error"])): + divide(a, b) + +if __name__ == "__main__": + unittest.main() \ No newline at end of file From 446165c1ace9481bca2be764deb02697b762727e Mon Sep 17 00:00:00 2001 From: Inmo Jang Date: Sun, 11 May 2025 17:40:31 +0900 Subject: [PATCH 2/2] feat: add multiply(a, b) function to functions.py --- CHANGELOG.md | 7 +++++++ functions.py | 6 +++++- tests/test_cases.json | 12 ++++++++++++ tests/test_multiply.py | 18 ++++++++++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 tests/test_cases.json create mode 100644 tests/test_multiply.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 61ee1d8..17b7f8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [Unreleased] + +### Added + +- Added `multiply(a, b)` function in `functions.py` to perform multiplication. + + ## [1.0.0] - 2025-05-11 ### Added diff --git a/functions.py b/functions.py index d33c9bb..d959d2c 100644 --- a/functions.py +++ b/functions.py @@ -4,4 +4,8 @@ def add(a, b): def minus(a, b): """Subtract b from a.""" - return a - b \ No newline at end of file + return a - b + +def multiply(a, b): + """Multiply two numbers""" + return a * b \ No newline at end of file diff --git a/tests/test_cases.json b/tests/test_cases.json new file mode 100644 index 0000000..eeed81b --- /dev/null +++ b/tests/test_cases.json @@ -0,0 +1,12 @@ +[ + {"input": {"a": 2, "b": 3}, "expected": 6}, + {"input": {"a": -1, "b": 5}, "expected": -5}, + {"input": {"a": 0, "b": 100}, "expected": 0}, + {"input": {"a": 7, "b": -3}, "expected": -21}, + {"input": {"a": -4, "b": -2}, "expected": 8}, + {"input": {"a": 1, "b": 0}, "expected": 0}, + {"input": {"a": 123, "b": 456}, "expected": 56088}, + {"input": {"a": 10, "b": 10}, "expected": 100}, + {"input": {"a": 0, "b": 0}, "expected": 0}, + {"input": {"a": 999, "b": -1}, "expected": 999} +] \ No newline at end of file diff --git a/tests/test_multiply.py b/tests/test_multiply.py new file mode 100644 index 0000000..672aea9 --- /dev/null +++ b/tests/test_multiply.py @@ -0,0 +1,18 @@ +import json +import unittest +from functions import multiply + +class TestMultiplyFunction(unittest.TestCase): + def test_multiply_cases(self): + with open("tests/test_cases.json", "r") as f: + test_cases = json.load(f) + + for case in test_cases: + a = case["input"]["a"] + b = case["input"]["b"] + expected = case["expected"] + with self.subTest(a=a, b=b, expected=expected): + self.assertEqual(multiply(a, b), expected) + +if __name__ == "__main__": + unittest.main() \ No newline at end of file