Exemple #1
0
def test_place():
    obj = PlaceOrSymbol()

    assert er.eq(obj.place, er.intern('nil'))
    assert er.eq(er.EmacsObject(obj), er.intern('nil'))

    new_place = er.list([er.int(1), er.int(2), er.int(3)])
    obj._bind(new_place)

    assert er.eq(obj.place, new_place)
    assert er.eq(er.EmacsObject(obj), new_place)
Exemple #2
0
def test_error():
    list = e.intern('list')

    error = e.intern('error')
    msg = e.str('An error message')
    with pytest.raises(e.Signal) as ex:
        error(msg)
    sym, data = ex.value.args
    assert e.eq(sym, e.intern('error'))
    assert e.equal(data, list(msg))

    throw = e.intern('throw')
    tag = e.intern('tag')
    value = e.int(1)
    with pytest.raises(e.Throw) as ex:
        throw(tag, value)
    sym, data = ex.value.args
    assert e.eq(sym, e.intern('tag'))
    assert e.equal_sign(data, value)

    def err():
        error = e.intern('error')
        list = e.intern('list')
        raise e.Signal(error, list(e.str('message')))

    func = e.function(err, 0, 0)
    with pytest.raises(e.Signal) as ex:
        func()
    sym, data = ex.value.args
    assert e.eq(sym, e.intern('error'))
    assert e.equal(data, list(e.str('message')))
Exemple #3
0
def test_call():
    def a():
        return e.int(1)

    func = e.function(a, 0, 0)
    e.intern('fset')(e.intern('test-symbol'), func)

    from emacs import test
    assert test.symbol() == e.int(1)
Exemple #4
0
def test_function():
    def a():
        return e.int(1)

    func = e.function(a, 0, 0)
    assert e.functionp(func)
    ret = func()
    assert e.eq(ret, e.int(1))

    def b():
        return e.str('alpha')

    func = e.function(b)
    assert e.functionp(func)
    ret = func()
    assert e.string_equal(ret, e.str('alpha'))
Exemple #5
0
def test_almost_none_but_passed():
    @coerce('a')
    def test(a, b, c, *args, **kwargs):
        assert isinstance(a, er.EmacsObject)
        assert not isinstance(b, er.EmacsObject)
        assert isinstance(c, er.EmacsObject)

        assert not isinstance(args, er.EmacsObject)
        assert not isinstance(kwargs, er.EmacsObject)

        for arg in args:
            assert not isinstance(arg, er.EmacsObject)
        for name, kwarg in kwargs.items():
            assert not isinstance(name, er.EmacsObject)
            assert not isinstance(kwarg, er.EmacsObject)

    test(1, 2, er.int(3))
    test('a', [34], er.intern('q'))
    test('a', [34], er.intern('q'), 'b', 'c', q='d')
Exemple #6
0
def test_symbol():
    mylist = er.list([er.int(1), er.int(2), er.int(3)])

    sym = er.intern('alpha')
    setq = er.intern('set')
    setq(sym, mylist)

    obj = PlaceOrSymbol(sym)
    assert er.eq(obj.place, mylist)
    assert er.eq(er.EmacsObject(obj), mylist)

    mylist = er.list([er.int(1), er.int(2), er.int(3), er.int(4)])
    obj._bind(mylist)

    assert er.eq(obj._symbol, er.intern('alpha'))
    assert er.eq(obj.place, mylist)
    assert er.eq(er.EmacsObject(obj), mylist)
    assert er.eq(er.intern('symbol-value')(er.intern('alpha')), mylist)
Exemple #7
0
def test_int():
    one = e.int('1')
    assert e.eq(one, e.int(1))
    assert repr(one) == '1'
    assert str(one) == '1'
    assert int(one) == 1
    assert float(one) == 1.0
    assert one.type() == 'integer'
    assert one.is_a('integer')
    assert e.integerp(one)
    assert not e.floatp(one)
    assert not e.stringp(one)
    assert not e.symbolp(one)
    assert not e.consp(one)
    assert not e.vectorp(one)
    assert not e.listp(one)
    assert not e.functionp(one)
    assert one

    zero = e.int(0)
    assert e.eq(zero, e.int(0))
    assert repr(zero) == '0'
    assert str(zero) == '0'
    assert int(zero) == 0
    assert float(zero) == 0.0
    assert zero.type() == 'integer'
    assert zero.is_a('integer')
    assert e.integerp(zero)
    assert not e.floatp(zero)
    assert not e.stringp(zero)
    assert not e.symbolp(zero)
    assert not e.consp(zero)
    assert not e.vectorp(zero)
    assert not e.listp(zero)
    assert not e.functionp(zero)
    assert zero

    assert str(e.int(0.1)) == '0'
    with pytest.raises(ValueError):
        e.int('alpha')
Exemple #8
0
 def a():
     return e.int(1)
Exemple #9
0
def test_num():
    assert e.int(0) + e.int(1) == 1
    assert e.int(3) + 8 == 11
    assert 7 + e.float(-3.1) == 3.9
    assert 'alpha' + e.str('bravo') == 'alphabravo'

    assert e.int(8) - e.int(1) == 7
    assert 13 - e.float(2.2) == 10.8

    assert e.int(5) * e.float(2.2) == 11.0
    assert 7 * e.int(2) == 14

    assert e.int(17) // 3 == 5
    assert 7 / e.int(2) == 3.5
    assert e.int(8) / e.int(-1) == -8.0

    assert divmod(e.int(10), e.int(3)) == (3, 1)

    assert 2**e.int(3) == 8
    assert e.float(3.0)**e.int(3) == 27.0
    assert pow(e.int(2), e.int(4), e.int(5)) == 1

    assert -e.int(2) == -2
    assert -e.float(-2.2) == 2.2

    assert +e.int(-2) == -2
    assert ~e.int(1) == ~1

    assert (e.int(8) << 1) == 16
    assert 8 >> e.int(1) == 4

    with pytest.raises(TypeError):
        13 - e.str('a')
    with pytest.raises(TypeError):
        e.intern('a') + 2
    with pytest.raises(TypeError):
        2 << e.intern('b')
    with pytest.raises(TypeError):
        pow(1, 2, e.intern('q'))
Exemple #10
0
def test_compare():
    assert e.int(0) == e.int(0)
    assert e.int(0) != e.int(1)
    assert e.int(0) < e.int(1)
    assert not e.int(1) <= e.int(0)

    assert e.int(0) == 0
    assert 0 == e.int(0)
    assert 1 < e.int(2)

    assert e.float(9.1) >= 9.1
    assert e.float(8) == 8
    assert 0 == e.float(0.0)

    assert 'a' == e.str('a')
    assert e.str('abc') < 'abd'
    assert 'q' != e.str('Q')

    assert not e.str('a') == []
    assert e.str('a') != []

    with pytest.raises(TypeError):
        e.str('a') < 1
    with pytest.raises(TypeError):
        e.str('a') > []
    with pytest.raises(TypeError):
        e.str('a') >= ()