def test_expression_with_missing_operator(self): expression = "((100+20)3-10/2+11-1*(10+34)-54)" c1 = Calc(expression) expected = 'missing operator near parentheses' actual = c1.expression_result() self.assertEqual(actual, expected) expression = "((100+20)*3-10/2+11-2(10+34)-54)" c2 = Calc(expression) expected = 'missing operator near parentheses' actual = c2.expression_result() self.assertEqual(actual, expected)
def test_expressions_with_floats(self): expression = "100+2.345*3-10/2" c1 = Calc(expression) expected = 'Expression contains float number(s)' actual = c1.expression_result() self.assertEqual(actual, expected) expression = "100,34+2*3-10/2" c2 = Calc(expression) expected = 'Expression contains float number(s)' actual = c2.expression_result() self.assertEqual(actual, expected)
def test_expression_with_ten_numbers(self): expression = "100+20*3-10/2+11-1*10+34-54" c = Calc(expression) expected = (10, "100+20*3-10/2+11-1*10+34-54", 100 + 20 * 3 - 10 / 2 + 11 - 1 * 10 + 34 - 54) actual = c.expression_result() self.assertEqual(actual, expected)
def test_expression_with_correct_parentheses(self): expression = "((100+20)*3-10/2+11-1*(10+34)-54)" c = Calc(expression) expected = (10, "((100+20)*3-10/2+11-1*(10+34)-54)", ((100 + 20) * 3 - 10 / 2 + 11 - 1 * (10 + 34) - 54)) actual = c.expression_result() self.assertEqual(actual, expected)
def test_expression_with_other_arith_operators(self): """ This test case for demonstration a bug """ expression = "10%3+2-2**2" c = Calc(expression) expected = 'Expression contains nondigital symbol(s) or invalid operator(s)' self.assertEqual(c.expression_result(), expected)
def test_expression_with_one_number(self): expression = "/555" c = Calc(expression) expected = 'Expression must contain minimum 2 numbers' actual = c.expression_result() self.assertEqual(actual, expected)
def test_expressions_with_letter(self): expression = "1a+2*3-10/2" c = Calc(expression) expected = 'Expression contains nondigital symbol(s) or invalid operator(s)' actual = c.expression_result() self.assertEqual(actual, expected)
def test_valid_expressions(self): expression = "1+2*3-10/2" c = Calc(expression) expected = (5, "1+2*3-10/2", 1 + 2 * 3 - 10 / 2) actual = c.expression_result() self.assertEqual(actual, expected)
def test_expression_contains_division_by_zero(self): expression = "10/0+2" c = Calc(expression) expected = "Error. Your expression contains division by zero" self.assertEqual(c.expression_result(), expected)
def test_expression_with_incorrect_parentheses(self): expression = "((100+20)*3)-10/2+11-1*(10+34)-54)" c = Calc(expression) expected = 'Missing bracket(s)' actual = c.expression_result() self.assertEqual(actual, expected)
def test_expression_with_more_then_ten_numbers(self): expression = "100+20*3-10/2+11-1*10+34-54+21*2-7" c = Calc(expression) expected = 'Expression contain more than 10 numbers' actual = c.expression_result() self.assertEqual(actual, expected)