47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
"""Tests for the calculator module."""
|
|
|
|
import pytest
|
|
from test_package.calculator import Calculator
|
|
|
|
|
|
class TestCalculator:
|
|
"""Test cases for Calculator class."""
|
|
|
|
def setup_method(self):
|
|
"""Set up test fixtures."""
|
|
self.calc = Calculator()
|
|
|
|
def test_add(self):
|
|
"""Test addition operation."""
|
|
assert self.calc.add(2, 3) == 5
|
|
assert self.calc.add(-1, 1) == 0
|
|
assert self.calc.add(0.1, 0.2) == pytest.approx(0.3)
|
|
|
|
def test_subtract(self):
|
|
"""Test subtraction operation."""
|
|
assert self.calc.subtract(5, 3) == 2
|
|
assert self.calc.subtract(1, 1) == 0
|
|
assert self.calc.subtract(-1, -2) == 1
|
|
|
|
def test_multiply(self):
|
|
"""Test multiplication operation."""
|
|
assert self.calc.multiply(3, 4) == 12
|
|
assert self.calc.multiply(-2, 3) == -6
|
|
assert self.calc.multiply(0, 100) == 0
|
|
|
|
def test_divide(self):
|
|
"""Test division operation."""
|
|
assert self.calc.divide(10, 2) == 5.0
|
|
assert self.calc.divide(7, 2) == 3.5
|
|
assert self.calc.divide(-6, 3) == -2.0
|
|
|
|
def test_divide_by_zero(self):
|
|
"""Test division by zero raises error."""
|
|
with pytest.raises(ValueError, match="Cannot divide by zero"):
|
|
self.calc.divide(5, 0)
|
|
|
|
def test_power(self):
|
|
"""Test power operation."""
|
|
assert self.calc.power(2, 3) == 8
|
|
assert self.calc.power(5, 0) == 1
|
|
assert self.calc.power(2, -1) == 0.5 |