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)
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')))
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)
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'))
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')
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)
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')
def a(): return e.int(1)
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'))
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') >= ()