def test_slice(): rglb = {'_getitem_': getitem} # restricted globals assert restricted_eval('[1, 2, 3, 4, 5]', rglb) == [1, 2, 3, 4, 5] assert restricted_eval('[1, 2, 3, 4, 5][:]', rglb) == [1, 2, 3, 4, 5] assert restricted_eval('[1, 2, 3, 4, 5][1:]', rglb) == [2, 3, 4, 5] assert restricted_eval('[1, 2, 3, 4, 5][:4]', rglb) == [1, 2, 3, 4] assert restricted_eval('[1, 2, 3, 4, 5][1:4]', rglb) == [2, 3, 4] assert restricted_eval('[1, 2, 3, 4, 5][::3]', rglb) == [1, 4] assert restricted_eval('[1, 2, 3, 4, 5][1::3]', rglb) == [2, 5] assert restricted_eval('[1, 2, 3, 4, 5][:4:3]', rglb) == [1, 4] assert restricted_eval('[1, 2, 3, 4, 5][1:4:3]', rglb) == [2]
def test_Sub(): assert restricted_eval('5 - 3') == 2
def test_FloorDiv(): assert restricted_eval('7 // 2') == 3
def test_Mod(): assert restricted_eval('10 % 3') == 1
def test_Mult(): assert restricted_eval('2 * 2') == 4
def test_Or(): assert restricted_eval('False or True') is True
def test_compile__compile_restricted_eval__2(): """It compiles code as an Expression.""" assert restricted_eval('4 * 6') == 24
def test_Add(): assert restricted_eval('1 + 1') == 2
def test_RestrictingNodeTransformer__visit_NotEq__1(): """It allows != expressions.""" assert restricted_eval('1 != int("1")') is False
def test_RestrictingNodeTransformer__visit_NotIn_Dict(): """It allows `not in` expressions for dicts.""" assert restricted_eval('2 not in {1: 1, 2: 2, 3: 3}') is False
def test_RestrictingNodeTransformer__visit_NotIn_Set(): """It allows `not in` expressions for sets.""" assert restricted_eval('2 not in {1, 2, 3}') is False
def test_RestrictingNodeTransformer__visit_In_Set(): """It allows `in` expressions for sets.""" assert restricted_eval('2 in {1, 1, 2, 3}') is True
def test_RestrictingNodeTransformer__visit_NotIn_List(): """It allows `not in` expressions for lists.""" assert restricted_eval('2 not in [1, 2, 3]') is False
def test_RestrictingNodeTransformer__visit_IsNot__1(): """It allows `is not` expressions.""" assert restricted_eval('2 is not None') is True
def test_RestrictingNodeTransformer__visit_Eq__1(): """It allows == expressions.""" assert restricted_eval('1 == int("1")') is True
def test_Div(): assert restricted_eval('10 / 2') == 5
def test_Pow(): assert restricted_eval('2 ** 8') == 256
def test_Bytes(): """It allows to use bytes literals.""" assert restricted_eval('b"code"') == b"code"
def test_USub(): assert restricted_eval('-a', {'a': 2411}) == -2411
def test_Set(): """It allows to use set literals.""" assert restricted_eval('{1, 2, 3}') == set([1, 2, 3])
def test_NotIs(): assert restricted_eval('1 is not True') is True
def test_Ellipsis(): """It allows using the `...` statement.""" assert restricted_eval('...') == Ellipsis
def test_RestrictingNodeTransformer__visit_GtE__1(): """It allows >= expressions.""" assert restricted_eval('1 >= 3') is False
def test_Num(): """It allows to use number literals.""" assert restricted_eval('42') == 42
def test_In(): assert restricted_eval('1 in [1, 2, 3]') is True
def test_NotIn(): assert restricted_eval('4 not in [1, 2, 3]') is True
def test_UAdd(): assert restricted_eval('+a', {'a': 42}) == 42
def test_Guards_bytes(): """It contains bytes""" assert restricted_eval('bytes(1)') == bytes(1)
def test_Guards__safe_builtins__1(): """It contains `slice()`.""" assert restricted_eval('slice(1)') == slice(1)
def test_Guards_sorted(): """It contains sorted""" assert restricted_eval('sorted([5, 2, 8, 1])') == sorted([5, 2, 8, 1])
def test_Is(): assert restricted_eval('True is True') is True
def test_Not(): assert restricted_eval('not False') is True
def test_And(): assert restricted_eval('True and True') is True
def test_RestrictingNodeTransformer__visit_LtE__1(): """It allows < expressions.""" assert restricted_eval('1 <= 3') is True