Exemplo n.º 1
0
class CalculatorTests(TestCase):

    def setUp(self):
        self.adder = Adder()
        self.subtracter = Subtracter()
        self.multiplier = Multiplier()
        self.divider = Divider()

        self.calculator = Calculator(self.adder, self.subtracter, self.multiplier, self.divider)

    def test_insufficient_operands(self):
        self.calculator.enter_number(0)

        with self.assertRaises(InsufficientOperands):
            self.calculator.add()

    def test_adder_call(self):
        self.adder.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.add()

        self.adder.calc.assert_called_with(1, 2)

    def test_subtracter_call(self):
        self.subtracter.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.subtract()

        self.subtracter.calc.assert_called_with(1, 2)

    def test_multiplier_call(self):
        self.multiplier.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.multiply()

        self.multiplier.calc.assert_called_with(1, 2)

    def test_adder_call(self):
        self.divider.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.divide()

        self.divider.calc.assert_called_with(1, 2)
    def test_module(self):
        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())

        calculator.enter_number(5)
        calculator.enter_number(2)
        calculator.multiply()
        calculator.enter_number(46)
        calculator.add()
        calculator.enter_number(8)
        calculator.divide()
        calculator.enter_number(1)
        result = calculator.subtract()

        self.assertEqual(6, result)
Exemplo n.º 3
0
    def test_module(self):
        '''Runs the actual integration test, going through all calculator calls
        and testing the end result'''

        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())
        calculator.enter_number(5)
        calculator.enter_number(2)
        calculator.multiply()
        calculator.enter_number(46)
        calculator.add()
        calculator.enter_number(8)
        calculator.divide()
        calculator.enter_number(1)
        result = calculator.subtract()
        assert result == 6
Exemplo n.º 4
0
 def test_module(self):
     """
     Testing the calculator by calling each methods
     """
     calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())
     calculator.enter_number(5)
     calculator.enter_number(2)
     calculator.multiply()
     calculator.enter_number(46)
     calculator.add()
     calculator.enter_number(8)
     calculator.divide()
     calculator.enter_number(1)
     result = calculator.subtract()
     self.assertEqual(6, result)
Exemplo n.º 5
0
    def test_module(self):

        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())

        calculator.enter_number(5)
        calculator.enter_number(2)

        result = calculator.multiply()

        self.assertEqual((2*5), result)

        calculator.enter_number(46)

        result = calculator.add()

        self.assertEqual(result, (46+(2*5)))

        calculator.enter_number(8)

        result = calculator.divide()

        self.assertEqual(result, (8 / (46+(2*5))))

        calculator.enter_number(1)

        result = calculator.subtract()

        self.assertEqual(result, (1 - (8 / (46+(2*5)))))
class TestCalculator(unittest.TestCase):
    def setUp(self):
        self.calculator = Calculator()

    def test_add_given_two_values_should_return_the_correct_value(self):
        result = self.calculator.add(10, 10)

        self.assertEqual(first=result,
                         second=20,
                         msg='Invalid sum operation performed.')

    def test_subtract_given_two_values_should_return_the_correct_value(self):
        result = self.calculator.subtract(10, 10)

        self.assertEqual(first=result,
                         second=0,
                         msg='Invalid subtract operation performed.')

    def test_multiply_given_two_values_should_return_the_correct_value(self):
        result = self.calculator.multiply(10, 10)

        self.assertEqual(first=result,
                         second=100,
                         msg='Invalid multiply operation performed.')

    def test_divide_given_two_values_should_return_the_correct_value(self):
        result = self.calculator.divide(10, 10)

        self.assertEqual(first=result,
                         second=1,
                         msg='Invalid divide operation performed.')
Exemplo n.º 7
0
class ModuleTests(TestCase):
    """Test the calculator module/UI during random, sustained usage."""
    def setUp(self):
        self.calculator = Calculator(a(), s(), m(), d())

    def test_module(self):
        """
        Make sure the calculator returns the correct value after a
        series of random number entries and operations.
        """
        self.calculator.enter_number(5)
        self.calculator.enter_number(2)

        self.calculator.multiply()

        self.calculator.enter_number(46)

        self.calculator.add()

        self.calculator.enter_number(8)

        self.calculator.divide()

        self.calculator.enter_number(1)

        result = self.calculator.subtract()

        self.assertEqual(6, result)

    def test_after_division_by_zero(self):
        """
        Make sure an insufficient operands exception occurs if a user
        immediately invokes an operation after a division by zero error
        without specifying another number. (Following a division by
        zero, the stack is cleared, and only a zero is left there.)
        """
        self.calculator.enter_number(15)
        self.calculator.enter_number(5)
        self.calculator.enter_number(0)
        self.calculator.divide()  # Div by 0 clears stack and pushes 0
        with self.assertRaises(InsufficientOperands):
            self.calculator.subtract()
        self.calculator.enter_number(8)
        result = self.calculator.subtract()
        self.assertEqual(-8, result)
Exemplo n.º 8
0
class CalculatorTests(TestCase):
    def setUp(self):
        self.adder = Adder()
        self.subtracter = Subtracter()
        self.multiplier = Multiplier()
        self.divider = Divider()

        self.calculator = Calculator(self.adder, self.subtracter,
                                     self.multiplier, self.divider)

    def test_multiplier(self):
        lis = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
        answers = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144]
        index = 0
        for nums in enumerate(lis, 1):
            x, y = nums
            self.calculator.enter_number(x)
            self.calculator.enter_number(y)
            result = self.calculator.multiply()
            self.assertEqual(answers[index], result)
            index += 1

    def test_divider(self):
        lis = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144]
        answers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
        index = 0
        for nums in enumerate(lis, 1):
            x, y = nums
            self.calculator.enter_number(y)
            self.calculator.enter_number(x)
            result = self.calculator.divide()
            self.assertEqual(answers[index], result)
            index += 1

    def test_insufficient_operands(self):
        self.calculator.enter_number(0)

        with self.assertRaises(InsufficientOperands):
            self.calculator.add()

    def test_adder_call(self):
        self.adder.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.add()

        self.adder.calc.assert_called_with(1, 2)

    def test_subtracter_call(self):
        self.subtracter.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.subtract()

        self.subtracter.calc.assert_called_with(1, 2)
    def test_module_insufficient_operands(self):
        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())

        calculator.enter_number(5)
        calculator.enter_number(2)

        calculator.multiply()

        calculator.enter_number(46)

        calculator.add()

        calculator.enter_number(8)

        calculator.divide()

        with self.assertRaises(InsufficientOperands):
            calculator.subtract()
class MyTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.calculator = Calculator()

    # Unit test 1
    def test_instantiate_calculator(self):
        self.assertIsInstance(self.calculator, Calculator)

    # Unit test 2
    def test_subtraction(self):
        test_data = CsvReader( BASE_DIR + "/data/UnitTestSubtraction.csv").data
        for row in test_data:
            result = float(row['Result'])
            self.assertEqual(self.calculator.subtract(row['Value 1'], row['Value 2']), result)
            self.assertEqual(self.calculator.result, result)

    # Unit test 3
    def test_addition(self):
        test_data = CsvReader(BASE_DIR + "/data/UnitTestAddition.csv").data
        for row in test_data:
            result = float(row['Result'])
            self.assertEqual(self.calculator.add(row['Value 1'], row['Value 2']), result)
            self.assertEqual(self.calculator.result, result)

    # Unit test 4
    def test_multiplication(self):
        test_data = CsvReader(BASE_DIR + "/data/UnitTestMultiplication.csv").data
        for row in test_data:
            result = float(row['Result'])
            self.assertEqual(self.calculator.multiply(row['Value 1'], row['Value 2']), result)
            self.assertEqual(self.calculator.result, result)

    # Unit test 5
    def test_division(self):
        test_data = CsvReader(BASE_DIR + "/data/UnitTestDivision.csv").data
        for row in test_data:
            result = float(row['Result'])
            self.assertEqual(round(self.calculator.divide(row['Value 1'], row['Value 2'])), round(result))
            self.assertEqual(round(self.calculator.result), round(result))

    # Unit test 6
    def test_square(self):
        test_data = CsvReader(BASE_DIR + "/data/UnitTestSquare.csv").data
        for row in test_data:
            result = float(row['Result'])
            self.assertEqual(self.calculator.square(row['Value 1']), result)
            self.assertEqual(self.calculator.result, result)

    # Unit test 7
    def test_square_root(self):
        test_data = CsvReader(BASE_DIR + "/data/UnitTestSquareRoot.csv").data
        for row in test_data:
            result = float(row['Result'])
            self.assertEqual(round(self.calculator.squareroot(row['Value 1'])), round(result))
            self.assertEqual(round(self.calculator.result), round(result))
    def test_module_zero_division_error(self):
        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())

        calculator.enter_number(5)
        calculator.enter_number(2)

        calculator.multiply()

        calculator.enter_number(46)

        calculator.add()

        calculator.enter_number(8)

        calculator.subtract()

        calculator.enter_number(0)

        with self.assertRaises(ZeroDivisionError):
            calculator.divide()
Exemplo n.º 12
0
    def test_module(self):
        """The first of... one test module(s). lol lazy."""
        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())

        calculator.enter_number(5)
        calculator.enter_number(2)

        calculator.multiply()

        calculator.enter_number(46)

        calculator.add()

        calculator.enter_number(8)

        calculator.divide()

        calculator.enter_number(1)

        result = calculator.subtract()

        self.assertEqual(6, result)
    def test_module(self):
        """Test that calculator performs operations as expected"""

        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())

        calculator.enter_number(5)
        calculator.enter_number(2)

        calculator.multiply()

        calculator.enter_number(46)

        calculator.add()

        calculator.enter_number(8)

        calculator.divide()

        calculator.enter_number(1)

        result = calculator.subtract()

        self.assertEqual(6, result)
    def test_module(self):
        """Initializes the calculator, operates with various ints"""

        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())

        calculator.enter_number(5)
        calculator.enter_number(2)

        calculator.multiply()

        calculator.enter_number(46)

        calculator.add()

        calculator.enter_number(8)

        calculator.divide()

        calculator.enter_number(1)

        result = calculator.subtract()

        self.assertEqual(6, result)
    def test_module(self):
        """Tests all calculator modules."""

        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())

        calculator.enter_number(5)
        calculator.enter_number(2)

        calculator.multiply()  #10

        calculator.enter_number(46)

        calculator.add()  #56

        calculator.enter_number(8)

        calculator.divide()  #7

        calculator.enter_number(1)

        result = calculator.subtract()  #6

        self.assertEqual(6, result)  #Result should equal 6
Exemplo n.º 16
0
    def test_module(self):
        """
        Tests all calculator modules work together nicely and the correct
        module is called for the given calculation operation.
        """
        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider(),
                                Squarer())

        calculator.enter_number(2)
        calculator.square()  # result = 4

        calculator.enter_number(3)
        calculator.multiply()  # result = 12

        calculator.enter_number(8)
        calculator.add()  # result = 20

        calculator.enter_number(4)
        calculator.divide()  # result = 5

        calculator.enter_number(6)
        result = calculator.subtract()  # result = -1

        self.assertEqual(-1, result)
Exemplo n.º 17
0
 def result():
     first_term = request.form.get("first_term", type=int)
     second_term = request.form.get("second_term", type=int)
     operation = request.form.get("operation")
     c = Calculator(first_term, second_term)
     if operation == 'Add':
         res = c.add()
     elif operation == 'Subtract':
         res = c.subtract()
     elif operation == 'Multiply':
         res = c.multiply()
     elif operation == 'Divide':
         res = c.divide()
     else:
         res = 'INVALID CHOICE'
     return render_template('result.html', result=res)
    def test_module(self):

        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())

        calculator.enter_number(5)
        calculator.enter_number(2)

        # Tests
        # Add:
        self.assertEqual(7, calculator.add())

        # Subtract:
        calculator.enter_number(5)
        self.assertEqual(2, calculator.subtract())

        # Multiply:
        calculator.enter_number(5)
        self.assertEqual(10, calculator.multiply())

        # Divide:
        calculator.enter_number(1)
        self.assertEqual(10, calculator.divide())
Exemplo n.º 19
0
    def test_module(self):
        """ Tests each module against an expected output to ensure accuracy. """
        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())

        calculator.enter_number(5)
        calculator.enter_number(2)

        # Tests
        # Add:
        self.assertEqual(7, calculator.add())

        # Subtract:
        calculator.enter_number(5)
        self.assertEqual(2, calculator.subtract())

        # Multiply:
        calculator.enter_number(5)
        self.assertEqual(10, calculator.multiply())

        # Divide:
        calculator.enter_number(1)
        self.assertEqual(10, calculator.divide())
Exemplo n.º 20
0
    def test_module(self):

        calculator = Calculator(Adder(), Subtracter(), Multiplier(), Divider())

        # STACK: []
        calculator.enter_number(5)
        calculator.enter_number(2)
        result = calculator.multiply()
        self.assertEqual(10, result)

        # STACK: [10]
        calculator.enter_number(46)
        result = calculator.add()
        self.assertEqual(56, result)

        # STACK: [56]
        calculator.enter_number(8)
        result = calculator.divide()
        self.assertEqual(7, result)

        # STACK: [7]
        calculator.enter_number(1)
        result = calculator.subtract()
        self.assertEqual(6, result)
Exemplo n.º 21
0
class CalculatorTests(TestCase):
    def setUp(self):
        self.adder = Adder()
        self.subtracter = Subtracter()
        self.multiplier = Multiplier()
        self.divider = Divider()

        self.calculator = Calculator(self.adder, self.subtracter,
                                     self.multiplier, self.divider)

    def test_insufficient_operands(self):
        self.calculator.enter_number(0)

        with self.assertRaises(InsufficientOperands):
            self.calculator.add()

    def test_adder_call(self):
        self.adder.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.add()

        self.adder.calc.assert_called_with(1, 2)

    def test_subtracter_call(self):
        self.subtracter.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.subtract()

        self.subtracter.calc.assert_called_with(1, 2)

    def test_multiplier_call(self):
        self.multiplier.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.multiply()

        self.multiplier.calc.assert_called_with(1, 2)

    def test_divider_call(self):
        self.divider.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.divide()

        self.divider.calc.assert_called_with(1, 2)

    def test_sequential_operations(self):
        # This test ensures that two operations can be performed in sequence
        # This requires that the first operation store its result so that the
        # second operation can use it

        # First, mock up calc methods since we aren't relying on their
        # correctness
        self.adder.calc = MagicMock(return_value=5)
        self.subtracter.calc = MagicMock(return_value=4)

        # Next, enter numbers and perform first operation
        self.calculator.enter_number(2)
        self.calculator.enter_number(3)
        self.calculator.add()
        # Now, the stack should contain only [5], which is the return value of
        # our adder
        self.assertEqual([5], self.calculator.stack)

        # Next, enter single number and perform subtraction
        self.calculator.enter_number(1)
        self.calculator.subtract()
        # Now, the stack should contain only [4], which is the return value of
        # our subtracter
        self.assertEqual([4], self.calculator.stack)
Exemplo n.º 22
0
class CalculatorTests(TestCase):
    """ A Calculator of Squarer test cases """
    def setUp(self):
        self.adder = Adder()
        self.subtracter = Subtracter()
        self.multiplier = Multiplier()
        self.divider = Divider()
        self.squarer = Squarer()

        self.calculator = Calculator(self.adder, self.subtracter,
                                     self.multiplier, self.divider,
                                     self.squarer)

    def test_insufficient_operands(self):
        """
        Tests all calculator operations throws InsufficientOperands exceptions
        if the inadequate amount of operands are provided.
        """
        with self.assertRaises(InsufficientOperands):
            self.calculator.square()

        self.calculator.enter_number(2)

        with self.assertRaises(InsufficientOperands):
            self.calculator.add()

        with self.assertRaises(InsufficientOperands):
            self.calculator.subtract()

        with self.assertRaises(InsufficientOperands):
            self.calculator.multiply()

        with self.assertRaises(InsufficientOperands):
            self.calculator.divide()

    def test_adder_call(self):
        """
        Tests that Add calls the adder's calc function
        """
        self.adder.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.add()

        self.adder.calc.assert_called_with(1, 2)

    def test_subtracter_call(self):
        """
        Tests that Subtract calls the subtracters's calc function
        """
        self.subtracter.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.subtract()

        self.subtracter.calc.assert_called_with(1, 2)

    def test_multiplier_call(self):
        """
        Tests that Multiply calls the multiplier's calc function
        """
        self.multiplier.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.multiply()

        self.multiplier.calc.assert_called_with(1, 2)

    def test_divider_call(self):
        """
        Tests that Divide calls the Divider's calc function
        """
        self.divider.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.divide()

        self.divider.calc.assert_called_with(1, 2)

    def test_squarer_call(self):
        """
        Tests that Square calls the Squarer's calc function
        """
        self.squarer.calc = MagicMock(return_value=0)

        self.calculator.enter_number(2)
        self.calculator.square()

        self.squarer.calc.assert_called_with(2)
Exemplo n.º 23
0
class CalculatorTests(TestCase):

    def setUp(self):
        self.adder = Adder()
        self.subtracter = Subtracter()
        self.multiplier = Multiplier()
        self.divider = Divider()

        self.calculator = Calculator(self.adder, self.subtracter, self.multiplier, self.divider)

    def test_insufficient_operands(self):
        self.calculator.enter_number(0)

        with self.assertRaises(InsufficientOperands):
            self.calculator.add()

    def test_adder_call(self):
        self.adder.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.add()

        self.adder.calc.assert_called_with(1, 2)

    def test_subtracter_call(self):
        self.subtracter.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.subtract()

        self.subtracter.calc.assert_called_with(1, 2)

    def test_multiplier_call(self):
        """
        Uses MagicMock to mock-up a call to self.multiplier.calc
        Notes:  self.multiplier is a direct call to the multiplier module
                self.calculator.multiplier is a production call to the same multiplier module

        :return: none
        """
        self.multiplier.calc = MagicMock(return_value=0)
        "MagicMock intercept all calls to self.multiplier.calc and does not actually let the call execute"

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.multiply()
        """"
        the production call of Multiplier is made through 
        1) calculator.multiply() that calls
        2) calculator._do_calc then in turn calls 
        3) calculator.multiply (the calculator instance attribute) that finally calls the 
        4) multiplier module Multiplier.calc which is intercepted by MagicMock
        """

        self.multiplier.calc.assert_called_with(1, 2)
        """
        the previous code: self.calculator.multiply() was intercepted by MagicMock with the passed in args 1 and 2
        now we can .assert_called_with() on the intercepted code to check that the agrs intended did in-fact make it 
        through the calculator.multiply() to the desired code call of Multiplier.calc
        """


    def test_divider_call(self):
        self.divider.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.divide()

        self.divider.calc.assert_called_with(1, 2)
Exemplo n.º 24
0
class CalculatorTests(TestCase):
    """
    Class for testing the calculator class
    """
    def setUp(self):
        """
        Initialization
        """
        self.adder = Adder()
        self.subtracter = Subtracter()
        self.multiplier = Multiplier()
        self.divider = Divider()
        self.calculator = Calculator(self.adder, self.subtracter,
                                     self.multiplier, self.divider)

    def test_insufficient_operands(self):
        """
        Test for error
        """
        self.calculator.enter_number(0)
        with self.assertRaises(InsufficientOperands):
            self.calculator.add()

    def test_adder_call(self):
        """
        Test inputs for adder
        """
        self.adder.calc = MagicMock(return_value=0)
        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.add()
        self.adder.calc.assert_called_with(1, 2)

    def test_subtracter_call(self):
        """
        Test inputs for subtracter
        """
        self.subtracter.calc = MagicMock(return_value=0)
        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.subtract()
        self.subtracter.calc.assert_called_with(1, 2)

    def test_multiplier_call(self):
        """
        Test inputs for multiplier
        """
        self.multiplier.calc = MagicMock(return_value=0)
        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.multiply()
        self.multiplier.calc.assert_called_with(1, 2)

    def test_divider_call(self):
        """
        Test inputs for divider
        """
        self.divider.calc = MagicMock(return_value=0)
        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.divide()
        self.divider.calc.assert_called_with(1, 2)
Exemplo n.º 25
0
class CalculatorTests(TestCase):
    def setUp(self):
        self.adder = Adder()
        self.subtracter = Subtracter()
        self.multiplier = Multiplier()
        self.divider = Divider()

        self.calculator = Calculator(self.adder, self.subtracter,
                                     self.multiplier, self.divider)

    def test_insufficient_operands(self):
        self.calculator.enter_number(0)

        with self.assertRaises(InsufficientOperands):
            self.calculator.add()
            self.calculator.subtract()
            self.calculator.multiply()
            self.calculator.divide()

    def test_zero_division_error(self):
        self.calculator.enter_number(1)
        self.calculator.enter_number(0)

        with self.assertRaises(ZeroDivisionError):
            self.calculator.divide()

    def test_adder_call(self):
        self.adder.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.add()

        self.adder.calc.assert_called_with(1, 2)

    def test_subtracter_call(self):
        self.subtracter.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.subtract()

        self.subtracter.calc.assert_called_with(1, 2)

    def test_multiplier_call(self):
        self.multiplier.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.multiply()

        self.multiplier.calc.assert_called_with(1, 2)

    def test_divider_call(self):
        self.divider.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.divide()

        self.divider.calc.assert_called_with(1, 2)

    def test_operation_sequence(self):
        self.adder.calc = MagicMock(return_value=0)
        self.subtracter.calc = MagicMock(return_value=0)
        self.multiplier.calc = MagicMock(return_value=0)
        self.divider.calc = MagicMock(return_value=0)

        operations = (self.calculator.add, self.calculator.subtract,
                      self.calculator.multiply, self.calculator.divide)

        for operation_1 in operations:
            for operation_2 in operations:
                self.calculator.enter_number(1)
                self.calculator.enter_number(2)
                operation_1()
                self.calculator.enter_number(3)
                operation_2()
Exemplo n.º 26
0
class CalculatorTests(TestCase):
    def setUp(self):
        self.adder = Adder()
        self.subtracter = Subtracter()
        self.multiplier = Multiplier()
        self.divider = Divider()

        self.calculator = Calculator(self.adder, self.subtracter,
                                     self.multiplier, self.divider)

    def test_insufficient_operands(self):
        self.calculator.enter_number(0)

        with self.assertRaises(InsufficientOperands):
            self.calculator.add()

    def test_adder_call(self):
        # This replaces the calc method with mock
        self.adder.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.add()
        """
           I changed the assert to call like the Mock object expected and it seemed to work
           Not sure why the Mock does this, I couldn't find anything in the documentation...
           and there is a lot of documentation
        """
        self.adder.calc.assert_called_with(2, 1)

    def test_subtracter_call(self):
        # This replaces the calc method with mock
        self.subtracter.calc = MagicMock(return_value=0)

        # Changing the order with 2 before 1 to fix assertionError
        self.calculator.enter_number(2)
        self.calculator.enter_number(1)

        self.calculator.subtract()
        """
           So changing how the arguments are placed in the stack seemed to avoid the 
           mock assertion error. I think it is related to how mock references the stack

        """
        self.subtracter.calc.assert_called_with(1, 2)

    def test_multiplier_call(self):
        # This replaces the calc method with mock
        self.multiplier.calc = MagicMock(return_value=0)
        self.calculator.enter_number(2)
        self.calculator.enter_number(1)
        self.calculator.multiply()

        self.multiplier.calc.assert_called_with(1, 2)

    def test_divider_call(self):
        # This replaces the calc method with mock
        self.divider.calc = MagicMock(return_value=0)
        self.calculator.enter_number(2)
        self.calculator.enter_number(1)
        self.calculator.divide()
        self.divider.calc.assert_called_with(1, 2)
Exemplo n.º 27
0
 def test_divide_by_zero_returns_error(self):
     with pytest.raises(ZeroDivisionError):
         c = Calculator(3, 0)
         c.divide()
Exemplo n.º 28
0
class CalculatorTests(TestCase):
    """
    Tests for calculator class
    """

    def setUp(self): #Run before test method is run
        """
        Setup
        """
        
        self.adder = Adder()
        self.subtracter = Subtracter()
        self.multiplier = Multiplier()
        self.divider = Divider()

        self.calculator = Calculator(self.adder, 
                                     self.subtracter, 
                                     self.multiplier, 
                                     self.divider)

    def test_insufficient_operands(self):
        """
        Insufficient operands test
        """
        
        self.calculator.enter_number(0)

        with self.assertRaises(InsufficientOperands):
            self.calculator.add()
            
        with self.assertRaises(InsufficientOperands):
            self.calculator.subtract()
            
        with self.assertRaises(InsufficientOperands):
            self.calculator.multiply()
        
        with self.assertRaises(InsufficientOperands):
            self.calculator.divide()

    def test_adder_call(self):
        """
        Adder test
        """
        
        self.adder.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.add()

        self.adder.calc.assert_called_with(1, 2)

    def test_subtracter_call(self):
        """
        Subtracter test
        """
        
        self.subtracter.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.subtract()

        self.subtracter.calc.assert_called_with(1, 2)
        
    def test_multiplier_call(self):
        """
        Multiplier test
        """
        
        self.multiplier.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.multiply()

        self.multiplier.calc.assert_called_with(1, 2)
        
    def test_divider_call(self):
        """
        Divider test
        """
        
        self.divider.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.divide()

        self.divider.calc.assert_called_with(1, 2)
Exemplo n.º 29
0
class CalculatorTests(TestCase):
    """Test specific single operations within the calculator."""
    def setUp(self):
        """
        Fill the calculator object with proper adder, subtracter,
        multiplier, and divider classes.
        """
        self.adder = Adder()
        self.subtracter = Subtracter()
        self.multiplier = Multiplier()
        self.divider = Divider()

        self.calculator = Calculator(
            self.adder, self.subtracter, self.multiplier, self.divider)

    def test_insufficient_operands(self):
        """
        Make sure an exception for insufficient operands is raised if
        there is only one number in the calculator stack before an
        operation is requested.
        """
        self.calculator.enter_number(0)

        with self.assertRaises(InsufficientOperands):
            self.calculator.add()

    def test_adder_call(self):
        """
        Make sure the add operation is invoked with the correct
        numbers and order.
        """
        self.adder.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.add()

        self.adder.calc.assert_called_with(2, 1)

    def test_subtracter_call(self):
        """
        Make sure the subtract operation is invoked with the correct
        numbers and order.
        """
        self.subtracter.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.subtract()

        self.subtracter.calc.assert_called_with(2, 1)

    def test_multiplier_call(self):
        """
        Make sure the multiply operation is invoked with the correct
        numbers and order.
        """
        self.multiplier.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.multiply()

        self.multiplier.calc.assert_called_with(2, 1)

    def test_divider_call(self):
        """
        Make sure the divide operation is invoked with the correct
        numbers and order.
        """
        self.divider.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.divide()

        self.divider.calc.assert_called_with(2, 1)

    def test_divide_by_zero(self):
        """
        Returns zero (with cleared stack and error message) if a
        division by zero is attempted.
        """
        self.calculator.enter_number(15)
        self.calculator.enter_number(5)
        self.calculator.enter_number(0)
        result = self.calculator.divide()
        self.assertEqual(result, 0)
Exemplo n.º 30
0
class CalculatorTests(TestCase):
    """ 
    Tests for calculator specific functionality.
    """
    def setUp(self):
        """ 1 time setup with modules """

        self.adder = Adder()
        self.subtracter = Subtracter()
        self.multiplier = Multiplier()
        self.divider = Divider()

        self.calculator = Calculator(self.adder, self.subtracter,
                                     self.multiplier, self.divider)

    def test_insufficient_operands(self):
        """ Test for appropriate raising of InsufficientOperands exception. """
        self.calculator.enter_number(0)

        with self.assertRaises(InsufficientOperands):
            self.calculator.add()

    def test_adder_call(self):
        """ Test for adder call having appropriate values and order. """
        self.adder.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.add()
        # Numbers are inserted at index 0.  Either switch this or switch the
        # calc function call order.
        self.adder.calc.assert_called_with(1, 2)

    def test_subtracter_call(self):
        """ Test for subtracter call having appropriate values and order. """
        self.subtracter.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.subtract()

        self.subtracter.calc.assert_called_with(1, 2)

    def test_multiplier_call(self):
        """ Test for multiplier call having appropriate values and order. """
        self.multiplier.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.multiply()

        self.multiplier.calc.assert_called_with(1, 2)

    def test_divider_call(self):
        """ Test for divider call having appropriate values and order. """
        self.divider.calc = MagicMock(return_value=0)

        self.calculator.enter_number(1)
        self.calculator.enter_number(2)
        self.calculator.divide()

        self.divider.calc.assert_called_with(1, 2)