예제 #1
0
    def test_bool(self):
        test = [
            ("true", "true"),
            ("(false)", "false"),
            ("true == true", "true"),
            ("true == false", "false"),
            ("4/2 == 1+1", "true"),
            ("not true", "false"),
            ("not false", "true"),
            ("not not false", "false"),
            ("not not true", "true"),
            ("not not not false", "true"),
            ("not not not true", "false"),
            ("false and false", "false"),
            ("true and false", "false"),
            ("false and true", "false"),
            ("true and true", "true"),
            ("false or false", "false"),
            ("true or false", "true"),
            ("false or true", "true"),
            ("true or true", "true"),
            ("true", "true"),
            ("true or false and false", "true"),
            ("(true or false) and false", "false"),
            ("not false and not false", "true"),
            ("1<0", "false"),
        ]

        for e in range(len(test)):
            with self.subTest(e=e):
                self.assertEqual(str(ext_eval_global(test[e][0])),
                                 str(test[e][1]))
예제 #2
0
 def eval(self, cmd):
     try:
         e = ext_eval_global(cmd)
         # e = eval(cmd)
         # self.write(END, '\n')
         if e is not None:
             self.write(END, e, ('output', ))
     except Exception as e:
         self.write(END, "%s\n" % e, ('error', ))
예제 #3
0
    def test_integers(self):
        test = [("1", "1"), ("(1)", "1"), ("1 - 2", "-1"), ("4 / 2 * 3", "6"),
                ("4 * 2 / 3", "2"), ("1 + 2 * 3", "7"), ("(1 + 2) * 3", "9"),
                ("-1 + -1 + (-1 - -1)", "-2"), ("-1 + -1 - (-1 - -1)", "-2"),
                ("(-1 + -1 - (-1 - -1))", "-2"),
                ("((-1 + -1 - (-1 - -1)))", "-2"),
                ("((1+(2*3))*(4*5))", "140"), ("(4+6)-5*9", "-35")]

        for e in range(len(test)):
            with self.subTest(e=e):
                self.assertEqual(str(ext_eval_global(test[e][0])),
                                 str(test[e][1]))
예제 #4
0
while True:
    logger.debug("Variable dic: " + str(variable_list))
    exp = input("? ")

    # If the user just pressed enter
    if exp == "":
        # If it's the second time in a row, exit
        if exit:
            break
        else:
            exit = True
            print("Press enter again to quit.")
            continue
    # If he has entered a not-empty expression, reset
    else:
        if exit:
            exit = False

    # Try to evaluate and print....
    try:
        res = ext_eval_global(exp, variable_list)
        if res != "":
            print(res)
    # Catch the exception eval can raise
    except Exception as e:
        print("Error: " + str(e))
        logger.error(str(e))
        logger.error(str(traceback.format_exc()))

clear()