예제 #1
0
def test_block_comment():
    g = GlobalEnv()
    script = '''
    (* 3 4)

    (quote (lkasdhj 
    sdlh 
    asdkh 
    sadahjs
    ))

    (+ 2 3)
    '''
    assert g.eval_str(script) == 5
예제 #2
0
def test_plugin():
    g = GlobalEnv()
    assert g.eval_str("_Python")
    assert g.eval_str("(env? _Python)")
    g.eval_str("(_Python/import 'math)")
    assert callable(g.eval_str(" (_Python/get 'math.ceil)"))
    assert g.eval_str("((_Python/get 'math.ceil) 6.2)") == 7.
    assert g.eval_str("((_Python/get 'math.ceil) 6.7)") == 7.
예제 #3
0
def define_foo_bar_env():
    g = GlobalEnv()
    var_foo = g.eval_str("(define foo  (env (quote ('foo 5)) (quote (3 7))))")
    var_foo2 = g.eval_str("(define foo2 (env (quote  (foo 5)) (quote (3 7))))")
    var_bar = g.eval_str(
        "(define bar (env_anonymous (quote ('foo 5)) (quote (3 7))))")
    var_baz = g.eval_str(
        "(define bar/baz (env_anonymous (quote ('foo 5)) (quote (3 7))))")
    var_globalvar = g.eval_str("(define globalvar 55)")
    return g, (var_foo, var_foo2, var_bar, var_baz, var_globalvar)
예제 #4
0
def lisp_w_shell():
    g = GlobalEnv()
    g.eval_str("(_Python/import 'plugin_shell)")
    return g
예제 #5
0
def redefine_foo_bar_env():
    g = GlobalEnv()
    foo_env = g.eval_str("(define foo (env (quote (foo 5)) (quote (3 7))))")
    bar_env = g.eval_str("(define foo/bar (env))")
    mpt_env = g.eval_str("(define foo/stp/mpt/boo 600)")
    baz_var = g.eval_str("(define foo/bar/baz 55)")
    g.eval_str("(define foo/par (env (quote (3 21)) (quote (1 22))))")
    g.eval_str('(define foo/par/proc  (lambda (x) (+ x 5)))')
    g.eval_str('(define foo/par/proc2 (lambda (x) (+ x scope_y)))')
    g.eval_str('(define foo/par/proc3 (lambda (x) (+ x /global_y)))')
    return g, (foo_env, bar_env, baz_var)
예제 #6
0
def define_foo():
    g = GlobalEnv()
    g.eval_str("(define foo (env (quote (foo 5)) (quote (3 7))))")
    return g
예제 #7
0
def test_standard_missing_names():
    g = GlobalEnv()
    assert callable(g.eval_str('_missing_handler'))
    assert g.eval_str('foo') is None
예제 #8
0
def test_set_none_for_missing_names():
    g = GlobalEnv()
    g.eval_str('(define /_missing_handler (lambda (varname) 5))')
    assert g.eval_str('foo') == 5
예제 #9
0
from sym_lis import GlobalEnv, Env

g = GlobalEnv()


def test_list():
    assert g.eval_str("(quote (env (quote 'foo 5) (quote 3 7)))") == [
        'env', ['quote', "'foo", 5], ['quote', 3, 7]
    ]


def test_env():
    assert isinstance(g.eval_str("(env (quote ('foo 5)) (quote (3 7)))"), Env)
    assert g.eval_str("(env? (env (quote ('foo 5)) (quote (3 7))))")


def test_access():
    assert g.eval_str("((env (quote ('foo 5)) (quote (3 7))) 3)") == 7
예제 #10
0
import pytest
from sym_lis import GlobalEnv

l = GlobalEnv()

# test macro
l.eval_str('(define test equal?)')
# not really a macro at all


def test_pass():
    assert l.eval_str('(test (+ 3 2) 5)')


def test_notpass():
    assert l.eval_str('(test (+ 3 2) 5)')


# to test map
l.eval_str('(define double (lambda (x) (* 2 x)))')
l.eval_str('(define add    (lambda (x y) (+ y x)))')


def test_map():
    assert all(a == b for a, b in zip(l.eval_str('(map double (list 1 2 3))'),
                                      [2 * i for i in [1, 2, 3]]))


def test_map_tuples():
    # this won't work
    #assert list(l.eval_str('(map add (quote ((1 2) (2 3))))')) == [3, 5]
예제 #11
0
def test_env_special_init():
    env_empty = GlobalEnv(Env())
    # test public keys
    assert len([k for k in env_empty.keys() if k and k[0] != '_']) == 0
예제 #12
0
def test_env_wrong_init():
    with pytest.raises(TypeError):
        env2 = GlobalEnv(env=55)
예제 #13
0
import pytest
from sym_lis import GlobalEnv, Env

env = GlobalEnv()


def test_env_runs():
    assert env.eval_str('(+ 1 4)') == 5


def test_env_wrong_init():
    with pytest.raises(TypeError):
        env2 = GlobalEnv(env=55)


def test_env_special_init():
    env_empty = GlobalEnv(Env())
    # test public keys
    assert len([k for k in env_empty.keys() if k and k[0] != '_']) == 0
예제 #14
0
def test_inline_annotate():
    g = GlobalEnv()
    g.eval_str("(define baz (_note (quote (foo bar)) 5))")
    assert g.eval_str('baz') == 5
    assert g.eval_str('baz').note == g.eval_str('(quote (foo bar))')
    assert g.eval_str("(+ (_note 'foo 2) 3)") == 5