Ejemplo n.º 1
0
 def test_parser(self):
     self.assertEqual(parse(tokenize('(+ (+ 2 (+ 3 4 4 3 3)) 4)')),
                      [{
                          'type': 'identifier',
                          'name': '+'
                      },
                       [{
                           'type': 'identifier',
                           'name': '+'
                       }, {
                           'type': 'integer',
                           'value': 2
                       },
                        [{
                            'type': 'identifier',
                            'name': '+'
                        }, {
                            'type': 'integer',
                            'value': 3
                        }, {
                            'type': 'integer',
                            'value': 4
                        }, {
                            'type': 'integer',
                            'value': 4
                        }, {
                            'type': 'integer',
                            'value': 3
                        }, {
                            'type': 'integer',
                            'value': 3
                        }]], {
                            'type': 'integer',
                            'value': 4
                        }])
Ejemplo n.º 2
0
 def test_tokenize(self):
     self.assertEqual(tokenize('(+ 1 1 10 "Hello, world!")'),
                      ['(', '+', '1', '1', '10', '"Hello, world!"', ')'])
Ejemplo n.º 3
0
 def test_evaluate_define(self):
     output = evaluate(
         parse(
             tokenize('(define ((sum (lambda (x y) (+ x y)))) (sum 4 4))')))
     print(object)
     self.assertEqual(output, 2)
Ejemplo n.º 4
0
 def test_evaluate_not_equals(self):
     self.assertEqual(evaluate(parse(tokenize('(!= 5 (+ 2 2))'))), True)
Ejemplo n.º 5
0
 def test_evaluate_equals(self):
     self.assertEqual(evaluate(parse(tokenize('(= 2 (+ 1 1))'))), True)
Ejemplo n.º 6
0
 def test_evaluate_composite(self):
     self.assertEqual(
         evaluate(parse(tokenize('(* 2 (- (+ (div 4 2) 2) 2))'))), 4)
Ejemplo n.º 7
0
 def test_evaluate_division(self):
     self.assertEqual(evaluate(parse(tokenize('(div 4 2)'))), 2)
Ejemplo n.º 8
0
 def test_evaluate_multiplication(self):
     self.assertEqual(evaluate(parse(tokenize('(* 3 3)'))), 9)
Ejemplo n.º 9
0
 def test_evaluate_substraction(self):
     self.assertEqual(evaluate(parse(tokenize('(- 4 3)'))), 1)
Ejemplo n.º 10
0
 def test_no_input(self):
     self.assertEqual(tokenize(''), [])
Ejemplo n.º 11
0
 def test_evaluate_sum(self):
     self.assertEqual(evaluate(parse(tokenize('(+ (+ 1 2 3)(+ 1 2 3))'))),
                      12)