Beispiel #1
0
def test_quote():
    check_result("'symbol", PtObject.intern('symbol'))
    check_result(
        "''symbol",
        PtObject.list([PtObject.intern('quote'),
                       PtObject.intern('symbol')]))
    check_result("'(a b c)",
                 PtObject.list([PtObject.intern(s) for s in ['a', 'b', 'c']]))
    check_result("'(a . b)",
                 PtObject.cons(PtObject.intern('a'), PtObject.intern('b')))
    check_result(
        "'(a b . c)",
        PtObject.cons(
            PtObject.intern('a'),
            PtObject.cons(PtObject.intern('b'), PtObject.intern('c'))))
Beispiel #2
0
def test_cons():
    assert str(PtObject.nil) == 'nil'
    assert PtObject.nil == PtObject.nil

    obj = PtObject.cons(PtObject.intern('def'), PtObject.intern('ghi'))
    assert str(obj) == '(def . ghi)'
    assert obj == PtObject.cons(PtObject.intern('def'), PtObject.intern('ghi'))
    assert obj != PtObject.cons(PtObject.symbol('def'), PtObject.intern('ghi'))
    assert obj != PtObject.cons(PtObject.intern('def'), PtObject.symbol('ghi'))

    obj = PtObject.cons(
        PtObject.intern('a'),
        PtObject.cons(
            PtObject.intern('b'),
            PtObject.cons(
                PtObject.intern('c'),
                PtObject.intern('d'))))
    assert str(obj) == '(a b c . d)'
    assert obj == PtObject.cons(
        PtObject.intern('a'),
        PtObject.cons(
            PtObject.intern('b'),
            PtObject.cons(
                PtObject.intern('c'),
                PtObject.intern('d'))))

    obj = PtObject.cons(
        PtObject.intern('a'),
        PtObject.cons(
            PtObject.intern('b'),
            PtObject.cons(
                PtObject.intern('c'),
                PtObject.nil)))
    assert str(obj) == '(a b c)'
    assert obj == PtObject.cons(
        PtObject.intern('a'),
        PtObject.cons(
            PtObject.intern('b'),
            PtObject.cons(
                PtObject.intern('c'),
                PtObject.nil)))

    obj = PtObject.list([
        PtObject.intern('a'),
        PtObject.intern('b'),
        PtObject.intern('c'),
        PtObject.intern('d'),
        PtObject.intern('e'),
    ])
    assert str(obj) == '(a b c d e)'
    assert obj == PtObject.list([
        PtObject.intern('a'),
        PtObject.intern('b'),
        PtObject.intern('c'),
        PtObject.intern('d'),
        PtObject.intern('e'),
    ])