def test_calculate_worker(self): calculator = calc.Calculator(db) task = {'expression_id': 1, 'expression': 'a+1', 'variables': {'a': 1}} calculator.calculate_worker(task) res = calc.result_queue.get() self.assertEqual(res[4], 0) # check results error code (0 is no error) self.assertEqual(res[3], 2) # check result task = {'expression_id': 2, 'expression': 'a/0', 'variables': {'a': 1}} calculator.calculate_worker(task) res = calc.result_queue.get() # check results error code (1 is ZeroDivision) self.assertEqual(res[4], 1) self.assertIsNone(res[3]) # check result task = { 'expression_id': 3, 'expression': 'a*1000000000000000000**100000000', 'variables': { 'a': 1 } } calculator.calculate_worker(task) res = calc.result_queue.get() self.assertEqual(res[4], 2) # check results error code (2 is Overflow) self.assertIsNone(res[3]) # check result
def test_calculator_simple_evaluate_without_arg(): """ Test the calculator with a very basic function not containing functions like sin() or cos(). No parameter is specified for evaluate. """ func = "x * x - 2" x = 4 solution = 14 c = calculator.Calculator(func, x) assert c.evaluate() == solution
def test_calculator_complex_evaluate_with_arg(): """ Test the calculator with a more complex function containing functions like sin() or cos(). A parameter is specified for evaluate. """ func = "sin(pi) + x * 3" x = 8 solution = 24 c = calculator.Calculator(func) assert c.evaluate(x) == solution
def test_calculator_simple_evaluate_with_arg(): """ Test the calculator with a very basic function not containing functions like sin() or cos(). A parameter is specified for evaluate. """ func = "x ** x - 8" x = 3 solution = 19 c = calculator.Calculator(func) assert c.evaluate(x) == solution
def test_process_tasks(self): calculator = calc.Calculator(db) tasks = [{ 'expression_id': 1, 'expression': 'a+1', 'variables': { 'a': 1 } }, { 'expression_id': 2, 'expression': 'a/0', 'variables': { 'a': 1 } }, { 'expression_id': 3, 'expression': 'a*1000000000000000000**100000000', 'variables': { 'a': 1 } }] self.assertEqual(len(calculator.process_tasks(tasks)), len(tasks))