From 608d98e83370fa556d9e4b982fc4f8294741566a Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:07:36 +0000 Subject: [PATCH] feat: Add command-line calculator tool This change adds a new command-line calculator tool. The tool can perform basic arithmetic operations (add, subtract, multiply, divide) and is invoked from the command line. It includes a full suite of unit tests. --- calculator.py | 37 +++++++++++++++++++++++++++++++++++++ test_calculator.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 calculator.py create mode 100644 test_calculator.py diff --git a/calculator.py b/calculator.py new file mode 100644 index 0000000..b29111d --- /dev/null +++ b/calculator.py @@ -0,0 +1,37 @@ +import argparse + +def add(x, y): + """Adds two numbers together.""" + return x + y + +def subtract(x, y): + """Subtracts two numbers.""" + return x - y + +def multiply(x, y): + """Multiplies two numbers.""" + return x * y + +def divide(x, y): + """Divides two numbers.""" + if y == 0: + raise ValueError("Cannot divide by zero.") + return x / y + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="A simple command-line calculator.") + parser.add_argument("x", type=float, help="The first number.") + parser.add_argument("operation", choices=["+", "-", "*", "/"], help="The operation to perform.") + parser.add_argument("y", type=float, help="The second number.") + args = parser.parse_args() + + if args.operation == "+": + result = add(args.x, args.y) + elif args.operation == "-": + result = subtract(args.x, args.y) + elif args.operation == "*": + result = multiply(args.x, args.y) + elif args.operation == "/": + result = divide(args.x, args.y) + + print(f"Result: {result}") diff --git a/test_calculator.py b/test_calculator.py new file mode 100644 index 0000000..3c556a1 --- /dev/null +++ b/test_calculator.py @@ -0,0 +1,29 @@ +import unittest +from calculator import add, subtract, multiply, divide + +class TestCalculator(unittest.TestCase): + + def test_add(self): + self.assertEqual(add(2, 3), 5) + self.assertEqual(add(-1, 1), 0) + self.assertEqual(add(-1, -1), -2) + + def test_subtract(self): + self.assertEqual(subtract(3, 2), 1) + self.assertEqual(subtract(-1, 1), -2) + self.assertEqual(subtract(-1, -1), 0) + + def test_multiply(self): + self.assertEqual(multiply(2, 3), 6) + self.assertEqual(multiply(-1, 1), -1) + self.assertEqual(multiply(-1, -1), 1) + + def test_divide(self): + self.assertEqual(divide(6, 3), 2) + self.assertEqual(divide(-1, 1), -1) + self.assertEqual(divide(-1, -1), 1) + with self.assertRaises(ValueError): + divide(1, 0) + +if __name__ == '__main__': + unittest.main()