def test_decoder_complex(): erl = Erlang() T, L = erl.Term, erl.List s1, s2 = "0.0.0.39316", "0.0.0.39317" env = cenv.Env() env.bind(s1, T.int(1)) env.bind(s2, T.int(2)) # Create the term with shared subterms. tal = cc.mk_alias("0.0.0.42") x = cc.mk_tuple([tal, tal]) xv = x.shared["0.0.0.42"] xv.type = ErlangTerm.LIST xv.subterms.extend([cc.mk_symb(s1)]) terms = [ ( # [1,2] cc.mk_list([cc.mk_symb(s1), cc.mk_symb(s2)]), T.lst(L.cons(T.int(1),L.cons(T.int(2),L.nil))) ), ( # {1,2} cc.mk_tuple([cc.mk_int(1), cc.mk_symb(s2)]), T.tpl(L.cons(T.int(1),L.cons(T.int(2),L.nil))) ), ( # {[1],[1]} x, T.tpl(L.cons(T.lst(L.cons(T.int(1),L.nil)),L.cons(T.lst(L.cons(T.int(1),L.nil)),L.nil))) ), ] decode_and_check(erl, env, terms)
def test_decoder_simple(): erl = Erlang() env = cenv.Env() T, L, A, B = erl.Term, erl.List, erl.Atom, erl.BitStr # Create the term with shared subterms. tal = cc.mk_alias("0.0.0.42") x = cc.mk_tuple([tal, tal]) xv = x.shared["0.0.0.42"] xv.type = ErlangTerm.LIST xv.subterms.extend([cc.mk_int(1)]) terms = [ ( # 42 cc.mk_int(42), T.int(42) ), ( # 42.42 cc.mk_float(42.42), T.real(42.42) ), ( # ok cc.mk_atom([111,107]), T.atm(A.acons(111,A.acons(107,A.anil))) ), ( # [1,2] cc.mk_list([cc.mk_int(1), cc.mk_int(2)]), T.lst(L.cons(T.int(1),L.cons(T.int(2),L.nil))) ), ( # {1,2} cc.mk_tuple([cc.mk_int(1), cc.mk_int(2)]), T.tpl(L.cons(T.int(1),L.cons(T.int(2),L.nil))) ), ( # {[1],[1]} x, T.tpl (L.cons(T.lst(L.cons(T.int(1),L.nil)),L.cons(T.lst(L.cons(T.int(1),L.nil)),L.nil))) ), ( # <<1:2>> cc.mk_bitstring([False, True]), T.bin(2, B.bcons(BitVecVal(0,1),B.bcons(BitVecVal(1,1),B.bnil))) ) ] decode_and_check(erl, env, terms)