def test_map(given, expected): lst = LIST for el in reversed(given): lst = PREPEND(lst)(el) result = MAP(ADD(TWO))(lst) decoded = [decode_number(n) for n in decode_list(result)] assert decoded == expected
def test_filter(given, expected): lst = LIST for el in given: lst = APPEND(lst)(el) result = FILTER(LTE(TWO))(lst) decoded = [decode_number(n) for n in decode_list(result)] assert decoded == expected
def test_sub(left, right, expected): assert decode_number(SUB(left)(right)) == expected
def test_add(left, right, expected): assert decode_number(ADD(left)(right)) == expected
def test_dec(given, expected): assert decode_number(DEC(given)) == expected
def test_inc(given, expected): assert decode_number(INC(given)) == expected
def test_numbers(given, expected): assert decode_number(given) == expected
def test_smul(lsign, left, rsign, right, expsign, expvalue): lv = CONS(lsign)(left) rv = CONS(rsign)(right) res = SMUL(lv)(rv) assert CAR(res) is expsign assert decode_number(CDR(res)) == expvalue
def test_fib(given, expected): assert decode_number(FIB(given)) == expected
def test_range(start, end, expected): result = RANGE(start)(end) decoded = [decode_number(n) for n in decode_list(result)] assert decoded == expected
def test_reduce(given, expected): lst = LIST for el in given: lst = PREPEND(lst)(el) assert decode_number(REDUCE(ADD)(lst)(ZERO)) == expected
def test_length(given, expected): lst = LIST for el in given: lst = APPEND(lst)(el) assert decode_number(LENGTH(lst)) == expected
def test_mod(left, right, expected): assert decode_number(MOD(left)(right)) == expected
def test_div(left, right, expected): assert decode_number(DIV(left)(right)) == expected
def test_mul(left, right, expected): assert decode_number(MUL(left)(right)) == expected
def test_sign_unsign(given, expected): assert decode_number(UNSIGN(SIGN(given))) == expected
def test_pow(left, right, expected): assert decode_number(POW(left)(right)) == expected
def test_fac(given, expected): assert decode_number(FAC(given)) == expected