class ReversePolishNotationConverterTests(unittest.TestCase): def test_EmptyExpressionResultsInSame(self): self.when("") self.then("") def test_NoneProducesEmptyResult(self): self.when(None) self.then("") def test_OneNumberResultInSameNumber(self): self.when("2") self.then("2") def test_HandlesASingleBinaryOperator(self): self.when("1+2") self.then("1 2 +") def test_HandlesMultipleOperatorsOfSamePrecedence(self): self.when("2-5+3") self.then("2 5 - 3 +") def test_HandlesMultipleOperatorsOfDifferentPrecedence_Multiply(self): self.when("2-5*3") self.then("2 5 3 * -") def test_HandlesMultipleOperatorsOfDifferentPrecedence_Division(self): self.when("2-5/3") self.then("2 5 3 / -") def test_HandlesMultipleOperatorsOfDifferentPrecedence_All_Four(self): self.when("2+5/3-2*8") self.then("2 5 3 / + 2 8 * -") def test_RemovesUnneccessaryParameters(self): self.when("(2*3)+4") self.then("2 3 * 4 +") def test_NecessaryParenthesesChangeOrderOfEveluation(self): self.when("(3+5)/9") self.then("3 5 + 9 /") def test_NecessaryParenthesesChangeOrderOfEveluation_AllFourOperators( self): self.when("(3-5)*(7+8)/9") self.then("3 5 - 7 8 + * 9 /") def setUp(self): self.converter = ReversePolishNotationConverter() def when(self, expression): self.result = self.converter.transform(expression) def then(self, expected): self.assertEqual(self.result, expected)
class ReversePolishNotationConverterTests(unittest.TestCase): def test_EmptyExpressionResultsInSame(self): self.when("") self.then("") def test_NoneProducesEmptyResult(self): self.when(None) self.then("") def test_OneNumberResultInSameNumber(self): self.when("2") self.then("2") def test_HandlesASingleBinaryOperator(self): self.when("1+2") self.then("1 2 +") def test_HandlesMultipleOperatorsOfSamePrecedence(self): self.when("2-5+3") self.then("2 5 - 3 +") def test_HandlesMultipleOperatorsOfDifferentPrecedence_Multiply(self): self.when("2-5*3") self.then("2 5 3 * -") def test_HandlesMultipleOperatorsOfDifferentPrecedence_Division(self): self.when("2-5/3") self.then("2 5 3 / -") def test_HandlesMultipleOperatorsOfDifferentPrecedence_All_Four(self): self.when("2+5/3-2*8") self.then("2 5 3 / + 2 8 * -") def test_RemovesUnneccessaryParameters(self): self.when("(2*3)+4") self.then("2 3 * 4 +") def test_NecessaryParenthesesChangeOrderOfEveluation(self): self.when("(3+5)/9") self.then("3 5 + 9 /") def test_NecessaryParenthesesChangeOrderOfEveluation_AllFourOperators(self): self.when("(3-5)*(7+8)/9") self.then("3 5 - 7 8 + * 9 /") def setUp(self): self.converter = ReversePolishNotationConverter() def when(self, expression): self.result = self.converter.transform(expression) def then(self, expected): self.assertEqual(self.result, expected)
def setUp(self): self.converter = ReversePolishNotationConverter()