Example #1
0
class Mytest(unittest.TestCase):
    def setUp(self):
        self.transform = Transform()

    def tearDown(self):
        pass

    def testFormat(self):
        exp = "3+2-6/1*4"
        self.assertEqual(self.transform.format(exp), exp)
        exp = "-3+2-6/1*4"
        self.assertEqual(self.transform.format(exp), "0-3+2-6/1*4")
        exp = "-3+(-2-6/1*4)"
        self.assertEqual(self.transform.format(exp), "0-3+(0-2-6/1*4)")
        exp = "+3+2-6/1*4"
        self.assertEqual(self.transform.format(exp), "0+3+2-6/1*4")
        exp = "+3+(+2-6/1*4)"
        self.assertEqual(self.transform.format(exp), "0+3+(0+2-6/1*4)")

    def testIsNum(self):
        num = "1"
        self.assertTrue(self.transform.isnum(num))
        num = "a"
        self.assertFalse(self.transform.isnum(num))

    def testIsOp(self):
        for op in ['+', '-', '*', '/', '(', ')']:
            self.assertTrue(self.transform.isop(op))
        op = "123"
        self.assertFalse(self.transform.isop(op))

    def testGetLevel(self):
        for e in ['+', '-']:
            self.assertEqual(self.transform.getlevel(e), 1)
        for e in ['*', '/']:
            self.assertEqual(self.transform.getlevel(e), 2)
        for e in ['(', ')']:
            self.assertEqual(self.transform.getlevel(e), 3)
        e = "123"
        self.assertEqual(self.transform.getlevel(e), None)

    def testCompare(self):
        self.transform.get_level = MagicMock()
        self.transform.compare(2, 1)
        self.assertTrue(self.transform.get_level.is_called)

    def testOrStack(self):
        self.transform.or_stack("1")
        self.assertEqual(self.transform.orstack, ["1"])
        self.transform.or_stack("(")
        self.assertEqual(self.transform.orstack, ["1", "("])
        self.transform.or_stack("2")
        self.assertEqual(self.transform.orstack, ["1", "(", "2"])
        self.transform.or_stack(")")
        self.assertEqual(self.transform.orstack, ["1"])
        self.assertEqual(self.transform.odlist, ["2"])
        self.transform.or_stack("+")
        self.assertEqual(self.transform.orstack, ["1", "+"])
        self.transform.or_stack("3")
        self.assertEqual(self.transform.orstack, ["1", "3"])
        self.assertEqual(self.transform.odlist, ["2", "+"])

    def testIfToPf(self):
        self.transform.format = MagicMock()
        self.transform.isnum = MagicMock()
        self.transform.isop = MagicMock()
        exp = "3+2-5*0"
        self.transform.format.return_value = exp
        self.transform.isnum.return_value = True
        self.transform.isop.return_value = False
        self.assertEqual(self.transform.iftopf(exp), "3+2-5*0")
        self.transform.odlist = []
        self.transform.orstack = []
        self.transform.isnum.return_value = False
        self.transform.isop.return_value = True
        self.transform.or_stack = MagicMock()
        self.assertEqual(self.transform.iftopf(exp), "")
        self.assertTrue(self.transform.or_stack.is_called)