Ejemplo n.º 1
0
def test_4():
    def k(a, b="b0", *arg_list, k0="default k0", **arg_dict):
        return [
            a,
            b,
            arg_list,
            k0,
            arg_dict,
        ]

    jojo_4 = JOJO([
        "aaa",
        "bbb",
        ["k1", "k2", "k3"],
        {
            "1": "k1",
            "2": "k2",
            "3": "k3"
        },
        k,
    ])
    vm = VM([], [RP((jojo_4))])
    vm = vm.exe()
    ds1 = [[
        'aaa', 'bbb', ('k1', 'k2', 'k3'), 'default k0', {
            '1': 'k1',
            '2': 'k2',
            '3': 'k3'
        }
    ]]
    assert vm.ds == ds1
Ejemplo n.º 2
0
def test_6():
    code = '''\
    (+jojo t :body! [:body [:body]])
    '''
    sexp_vect = parse_sexp_vect(code_scan(code))
    module = compile_module(__name__ + 'test_6', sexp_vect)
    vm = VM([1], [RP(module.t)])
    vm = vm.exe()
    assert vm.ds == [1, 1]
Ejemplo n.º 3
0
def test_5():
    code = '''\
    (+jojo t null 1 swap cons 2 swap cons cdr car)
    '''
    sexp_vect = parse_sexp_vect(code_scan(code))
    module = compile_module(__name__ + 'test_5', sexp_vect)
    vm = VM([], [RP(module.t)])
    vm = vm.exe()
    assert vm.ds == [1]
Ejemplo n.º 4
0
def test_4():
    code = '''\
    (+jojo t (if [1 2 eq?] ["true"] ["false"]))
    '''
    sexp_vect = parse_sexp_vect(code_scan(code))
    module = compile_module(__name__ + 'test_4', sexp_vect)
    vm = VM([], [RP(module.t)])
    vm = vm.exe()
    assert vm.ds == ["false"]
Ejemplo n.º 5
0
def test_3():
    code = '''\
    (+jojo t 1 2 eq? {"true"} {"false"} ifte)
    '''
    sexp_vect = parse_sexp_vect(code_scan(code))
    module = compile_module(__name__ + 'test_3', sexp_vect)
    vm = VM([], [RP(module.t)])
    vm = vm.exe()
    assert vm.ds == ["false"]
Ejemplo n.º 6
0
def test_1():
    code = '''\
    (+jojo six 1 2 add 3 add)
    '''
    sexp_vect = parse_sexp_vect(code_scan(code))
    module = compile_module(__name__ + 'test_1', sexp_vect)
    vm = VM([], [RP(module.six)])
    vm = vm.exe()
    assert vm.ds == [6]
Ejemplo n.º 7
0
def test_2():
    code = '''\
    (import os)
    (+jojo times os .times)
    '''
    sexp_vect = parse_sexp_vect(code_scan(code))
    module = compile_module(__name__ + 'test_2', sexp_vect)
    vm = VM([], [RP(module.times)])
    vm = vm.exe()
    assert type(vm.ds.pop()) == posix.times_result
Ejemplo n.º 8
0
def test_7():
    code = '''\
    (+jojo t
      '(a b (((c))))
      dup car swap
      dup cdr car swap
      dup cdr cdr car car car car swap
      drop)
    '''
    sexp_vect = parse_sexp_vect(code_scan(code))
    module = compile_module(__name__ + 'test_7', sexp_vect)
    vm = VM([], [RP(module.t)])
    vm = vm.exe()
    assert vm.ds == ["a", "b", "c"]
Ejemplo n.º 9
0
def test_2():
    vm = VM([], [RP(jojo_2)])
    vm = vm.exe()
    assert vm.ds == [205]
Ejemplo n.º 10
0
def test_1():
    vm = VM([], [RP(jojo_1)])
    vm = vm.exe()
    assert vm.ds == ["xieyuheng"]
Ejemplo n.º 11
0
def test_0():
    vm = VM([1, 2], [RP(JOJO([add, 3, add, 1, 2, swap, dup, dup, drop]))])
    vm = vm.exe()
    assert vm.ds == [6, 2, 1, 1]
Ejemplo n.º 12
0
def test_5():
    vm = VM([], [RP((jojo_5))])
    vm = vm.exe()
    assert vm.ds == [20]
Ejemplo n.º 13
0
def test_3():
    vm = VM([], [RP(jojo_3)])
    vm = vm.exe()
    assert vm.ds == ["false"]