コード例 #1
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_dotted(self):
     self.assertEqual(
         visp.read("(1 . hello)").cdr.name,
         'hello')
     self.assertEqual(
         visp.read("(1 . hello)").car,
         1)
コード例 #2
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_list_of_pairs(self):
     self.assertEqual(
         visp.read("((1 . 2) (3 . 4) (5 . 6))"),
         visp.cons(
             visp.cons(1, 2),
             visp.cons(visp.cons(3, 4), visp.cons(visp.cons(5, 6),
                                                  visp.nil))))
コード例 #3
0
ファイル: test_macro.py プロジェクト: milesrout/visp
 def test_simple_macro(self):
     self.assertEqual(
         visp.evaluate_many(visp.read_many(
             """(defmacro foo (x)
                  (list '+ '1 '2 x))
                (foo 3)"""), self.base_env),
         visp.read("6"))
コード例 #4
0
ファイル: test_eval.py プロジェクト: milesrout/visp
    def test_viral_inexactness(self):
        test_cases = {
            "(+ #e100 #e100)": Exact,
            "(+ #e100 #i100)": Inexact,
            "(+ #i100 #e100)": Inexact,
            "(+ #i100 #i100)": Inexact,
        }

        for input_string, expected_type in test_cases.items():
            self.assertTrue(isinstance(
                visp.evaluate(visp.read(input_string), self.base_env),
                expected_type))
コード例 #5
0
ファイル: test_macro.py プロジェクト: milesrout/visp
 def test_debug_macroexpand(self):
     self.assertEqual(
         visp.evaluate_many(visp.read_many(
             """(defmacro debug (a)
                  (list 'let (list (list 'x a))
                    (list 'print 'x)
                    'x))
                (macroexpand (debug "hello"))"""), self.base_env),
         visp.read(
             """(let ((x "hello"))
                  (print x)
                  x)"""))
コード例 #6
0
ファイル: test_eval.py プロジェクト: milesrout/visp
    def test_viral_inexactness(self):
        test_cases = {
            "(+ #e100 #e100)": Exact,
            "(+ #e100 #i100)": Inexact,
            "(+ #i100 #e100)": Inexact,
            "(+ #i100 #i100)": Inexact,
        }

        for input_string, expected_type in test_cases.items():
            self.assertTrue(
                isinstance(
                    visp.evaluate(visp.read(input_string), self.base_env),
                    expected_type))
コード例 #7
0
ファイル: test_eval.py プロジェクト: milesrout/visp
 def test_quote(self):
     self.assertEqual(
         visp.evaluate(visp.read(
                 "'(1 2 3)"),
             visp.Env()).car,
         1)
コード例 #8
0
ファイル: test_eval.py プロジェクト: milesrout/visp
 def test_inexact(self):
     self.assertEqual(
         visp.evaluate(visp.read("#i10"), visp.Env()),
         10.0)
コード例 #9
0
ファイル: test_visp.py プロジェクト: milesrout/visp
 def assertEvalEqual(self, actual, expected):
     self.assertEqual(
         visp.evaluate(visp.read(actual), self.base_env),
         visp.evaluate(visp.read(expected), self.base_env))
コード例 #10
0
ファイル: test_arith.py プロジェクト: milesrout/visp
 def test_inexact_add(self):
     self.assertEqual(
         visp.evaluate(visp.read(
             """(+ #i100 #i100)"""
         ), visp.Env()),
         200.0)
コード例 #11
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_unmet_token_requirement(self):
     with self.assertRaises(StopIteration):
         visp.read("(1 2")
コード例 #12
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_unexpected_token(self):
     with self.assertRaises(RuntimeError):
         visp.read(")")
コード例 #13
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_integer(self):
     self.assertEqual(visp.read("1"), 1)
コード例 #14
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_inexact(self):
     self.assertEqual(visp.read("#i100"), visp.read('(inexact-number 100)'))
コード例 #15
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_unexpected_token(self):
     with self.assertRaises(RuntimeError):
         visp.read(")")
コード例 #16
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_quote(self):
     self.assertEqual(visp.read("'(1 2 3)"), visp.read("(quote (1 2 3))"))
コード例 #17
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_integers_dot_nil(self):
     self.assertEqual(visp.read("(1 2 3 . ())"),
                      visp.cons(1, visp.cons(2, visp.cons(3, visp.nil))))
コード例 #18
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_nil(self):
     self.assertEqual(visp.read("()"), visp.nil)
コード例 #19
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_nested(self):
     self.assertEqual(visp.read("((1 . 2) . (3 . 4))"),
                      visp.cons(visp.cons(1, 2), visp.cons(3, 4)))
コード例 #20
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_unexpected_readermacro(self):
     with self.assertRaises(RuntimeError):
         visp.read("#oblong")
コード例 #21
0
ファイル: test_eval.py プロジェクト: milesrout/visp
 def test_symbol(self):
     self.assertEqual(visp.evaluate(visp.read("a"), visp.Env({'a': 2})), 2)
コード例 #22
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_unmet_token_requirement(self):
     with self.assertRaises(StopIteration):
         visp.read("(1 2")
コード例 #23
0
ファイル: test_visp.py プロジェクト: milesrout/visp
 def assertEvalEqual(self, actual, expected):
     self.assertEqual(visp.evaluate(visp.read(actual), self.base_env),
                      visp.evaluate(visp.read(expected), self.base_env))
コード例 #24
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_symbol(self):
     self.assertEqual(visp.read("hello!").name, 'hello!')
コード例 #25
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_unexpected_readermacro(self):
     with self.assertRaises(RuntimeError):
         visp.read("#oblong")
コード例 #26
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_nil(self):
     self.assertEqual(
         visp.read("()"),
         visp.nil)
コード例 #27
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_symbol(self):
     self.assertEqual(
         visp.read("hello!").name,
         'hello!')
コード例 #28
0
ファイル: test_visp.py プロジェクト: milesrout/visp
 def setUp(self):
     self.base_env = visp.Env()
     self.base_env.set(
         'print', visp.evaluate(visp.read("(lambda x x)"), self.base_env))
     visp.load_prelude(self.base_env)
コード例 #29
0
ファイル: test_arith.py プロジェクト: milesrout/visp
 def test_sub_mixed(self):
     self.assertEqual(
         visp.evaluate(visp.read(
             "(- #i100 #e20 #e40 #e1)"
         ), visp.Env()),
         39.0)
コード例 #30
0
ファイル: test_eval.py プロジェクト: milesrout/visp
 def test_exact(self):
     self.assertEqual(
         visp.evaluate(visp.read("1"), visp.Env()),
         1)
コード例 #31
0
ファイル: test_visp.py プロジェクト: milesrout/visp
 def setUp(self):
     self.base_env = visp.Env()
     self.base_env.set('print',
         visp.evaluate(visp.read(
             "(lambda x x)"), self.base_env))
     visp.load_prelude(self.base_env)
コード例 #32
0
 def default(self, line, to_string=str):
     try:
         print(to_string(visp.evaluate(visp.read(line), self.env)))
     except Exception as exc:
         print(traceback.format_exc())
コード例 #33
0
ファイル: test_eval.py プロジェクト: milesrout/visp
 def test_symbol(self):
     self.assertEqual(
         visp.evaluate(visp.read("a"), visp.Env({ 'a': 2 })),
         2)
コード例 #34
0
 def test_sub_mixed(self):
     self.assertEqual(
         visp.evaluate(visp.read("(- #i100 #e20 #e40 #e1)"), visp.Env()),
         39.0)
コード例 #35
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_nested(self):
     self.assertEqual(
         visp.read("((1 . 2) . (3 . 4))"),
         visp.cons(visp.cons(1, 2), visp.cons(3, 4)))
コード例 #36
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_dotted(self):
     self.assertEqual(visp.read("(1 . hello)").cdr.name, 'hello')
     self.assertEqual(visp.read("(1 . hello)").car, 1)
コード例 #37
0
ファイル: repl.py プロジェクト: milesrout/visp
 def default(self, line, to_string=str):
     try:
         print(to_string(visp.evaluate(visp.read(line), self.env)))
     except Exception as exc:
         print(traceback.format_exc())
コード例 #38
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_list_of_pairs(self):
     self.assertEqual(
         visp.read("((1 . 2) (3 . 4) (5 . 6))"),
         visp.cons(visp.cons(1, 2), 
             visp.cons(visp.cons(3, 4),
                 visp.cons(visp.cons(5, 6), visp.nil))))
コード例 #39
0
 def test_inexact_add(self):
     self.assertEqual(
         visp.evaluate(visp.read("""(+ #i100 #i100)"""), visp.Env()), 200.0)
コード例 #40
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_integer(self):
     self.assertEqual(
         visp.read("1"),
         1)
コード例 #41
0
ファイル: test_eval.py プロジェクト: milesrout/visp
 def test_inexact(self):
     self.assertEqual(visp.evaluate(visp.read("#i10"), visp.Env()), 10.0)
コード例 #42
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_integers_dot_nil(self):
     self.assertEqual(
         visp.read("(1 2 3 . ())"),
         visp.cons(1, visp.cons(2, visp.cons(3, visp.nil))))
コード例 #43
0
ファイル: test_eval.py プロジェクト: milesrout/visp
 def test_quote(self):
     self.assertEqual(
         visp.evaluate(visp.read("'(1 2 3)"), visp.Env()).car, 1)
コード例 #44
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_quote(self):
     self.assertEqual(
         visp.read("'(1 2 3)"),
         visp.read("(quote (1 2 3))"))
コード例 #45
0
ファイル: test_eval.py プロジェクト: milesrout/visp
 def test_exact(self):
     self.assertEqual(visp.evaluate(visp.read("1"), visp.Env()), 1)
コード例 #46
0
ファイル: test_read.py プロジェクト: milesrout/visp
 def test_inexact(self):
     self.assertEqual(
         visp.read("#i100"),
         visp.read('(inexact-number 100)'))