예제 #1
0
    def test_task_13(self):
        interpreter = Interpreter()
        res = interpreter.input("fn one => 2")
        self.assertEqual("", res)

        res1 = interpreter.input("one")
        self.assertEqual(2.0, res1)
예제 #2
0
    def test_function_add_call(self):
        interpreter = Interpreter()
        res = interpreter.input("fn add x y => x + y")
        self.assertEqual(res, "")

        res1 = interpreter.input("add 1 2")
        self.assertEqual(3.0, res1)
예제 #3
0
    def test_task_2(self):
        interpreter = Interpreter()
        res = interpreter.input("x = 7")
        self.assertEqual(7.0, res)

        res1 = interpreter.input("x + 6")
        self.assertEqual(13.0, res1)
예제 #4
0
    def test_function_echo_call(self):
        interpreter = Interpreter()
        res = interpreter.input("fn echo a => a")
        self.assertEqual(res, "")

        res1 = interpreter.input("echo 2")
        self.assertEqual(2.0, res1)
예제 #5
0
 def test_assignment_complex(self):
     interpreter = Interpreter()
     res = interpreter.input("x = y = 4")
     self.assertEqual(res, 4.0)
     res1 = interpreter.input("x")
     self.assertEqual(res1, 4.0)
     res2 = interpreter.input("y")
     self.assertEqual(res2, 4.0)
예제 #6
0
    def test_task_8(self):
        interpreter = Interpreter()
        res = interpreter.input("fn echo x => x")
        self.assertEqual("", res)

        res1 = interpreter.input("fn add x y => x + y")
        self.assertEqual("", res1)

        res2 = interpreter.input("add echo 4 echo 3")
        self.assertEqual(7.0, res2)
예제 #7
0
    def test_task_4(self):
        interpreter = Interpreter()
        res = interpreter.input("x = 13 + (y = 3)")
        self.assertEqual(16.0, res)

        res1 = interpreter.input("x")
        self.assertEqual(16.0, res1)

        res2 = interpreter.input("y")
        self.assertEqual(3.0, res2)
예제 #8
0
    def test_task_6(self):
        interpreter = Interpreter()
        res = interpreter.input("fn avg x y => (x + y) / 2")
        self.assertEqual("", res)

        res1 = interpreter.input("a = 2")
        self.assertEqual(2.0, res1)

        res2 = interpreter.input("b = 4")
        self.assertEqual(4.0, res2)

        res3 = interpreter.input("avg a b")
        self.assertEqual(3.0, res3)
예제 #9
0
    def test_task_12(self):
        interpreter = Interpreter()
        res = interpreter.input("fn avg one two => (one + two) / 2")
        self.assertEqual("", res)

        res1 = interpreter.input("one = 2")
        self.assertEqual(2.0, res1)

        res2 = interpreter.input("b = 4")
        self.assertEqual(4.0, res2)

        res3 = interpreter.input("avg one b")
        self.assertEqual(3.0, res3)
예제 #10
0
    def test_task_9(self):
        interpreter = Interpreter()
        res = interpreter.input("fn inc x => x + 1")
        self.assertEqual("", res)

        res1 = interpreter.input("a = 0")
        self.assertEqual(0.0, res1)

        res2 = interpreter.input("a = inc a")
        self.assertEqual(1.0, res2)

        res3 = interpreter.input("fn inc x => x + 2")
        self.assertEqual("", res3)

        res4 = interpreter.input("a = inc a")
        self.assertEqual(3.0, res4)
예제 #11
0
파일: run.py 프로젝트: vaskinyy/kata-repl
def main():
    # simple REPL
    interpreter = Interpreter()
    while True:
        try:
            line = input('> ')
            res = interpreter.input(line)
            print(res)
        except KeyboardInterrupt:
            print("")
            print("Bye")
            break
예제 #12
0
    def test_arithmetics(self):
        data = [
            ['1+1', 2],
            ['1 - 1', 0],
            ['1* 1', 1],
            ['1 /1', 1],
            ['-123', -123],
            ['123', 123],
            ['2 /2+3 * 4.75- -6', 21.25],
            ['12* 123', 1476],
            ['2 / (2 + 3) * 4.33 - -6', 7.732],
        ]
        interpreter = Interpreter()

        for d in data:
            res = interpreter.input(d[0])
            self.assertEqual(res, d[1])
예제 #13
0
 def test_function_definitions(self):
     interpreter = Interpreter()
     with self.assertRaises(Exception) as context:
         res = interpreter.input("fn add x y => x + z")
예제 #14
0
 def test_empty(self):
     interpreter = Interpreter()
     res = interpreter.input("")
     self.assertEqual("", res)
예제 #15
0
 def test_assignemnt_plus(self):
     interpreter = Interpreter()
     res = interpreter.input("x = 5+4")
     self.assertEqual(res, 9.0)
     res1 = interpreter.input("x * 10")
     self.assertEqual(res1, 90.0)
예제 #16
0
 def test_assignment(self):
     interpreter = Interpreter()
     res = interpreter.input("x = 4")
     self.assertEqual(res, 4.0)
     res1 = interpreter.input("x")
     self.assertEqual(res1, 4.0)
예제 #17
0
 def test_task_5(self):
     interpreter = Interpreter()
     with self.assertRaises(Exception) as context:
         res = interpreter.input("fn avg => (x + y) / 2")
예제 #18
0
 def test_add_mul_div(self):
     interpreter = Interpreter()
     res = interpreter.input("1+2*3+4/2")
     self.assertEqual(res, 9.0)
예제 #19
0
 def test_task_10(self):
     interpreter = Interpreter()
     with self.assertRaises(Exception) as context:
         res = interpreter.input("fn add x x => x + x")
예제 #20
0
 def test_brackets(self):
     interpreter = Interpreter()
     res = interpreter.input("7 * (5 + 1)")
     self.assertEqual(res, 42.0)
예제 #21
0
 def test_brackets_2(self):
     interpreter = Interpreter()
     res = interpreter.input("((7 * 5) + 1)")
     self.assertEqual(res, 36.0)
예제 #22
0
 def test_multiply_2(self):
     interpreter = Interpreter()
     res = interpreter.input("7 * 5 + 1")
     self.assertEqual(res, 36.0)
예제 #23
0
 def test_invalid_input(self):
     interpreter = Interpreter()
     with self.assertRaises(Exception) as context:
         res = interpreter.input("1 2")
예제 #24
0
 def test_adding(self):
     interpreter = Interpreter()
     res = interpreter.input("1 + 7")
     self.assertEqual(res, 8.0)
예제 #25
0
 def test_task_3(self):
     interpreter = Interpreter()
     with self.assertRaises(Exception) as context:
         res = interpreter.input("y + 3")
예제 #26
0
 def test_per_cent(self):
     interpreter = Interpreter()
     res = interpreter.input("1+3%2")
     self.assertEqual(res, 2.0)
예제 #27
0
    def test_task_43(self):
        interpreter = Interpreter()

        res1 = interpreter.input("2 / 2 + 3 * 4 - 6")
        self.assertEqual(7.0, res1)
예제 #28
0
 def test_task_11(self):
     interpreter = Interpreter()
     with self.assertRaises(Exception) as context:
         res = interpreter.input("(fn echo x => x)")