%% %% %CopyrightBegin% %% %% Copyright Ericsson AB 2001-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. %% You may obtain a copy of the License at %% %% http://www.apache.org/licenses/LICENSE-2.0 %% %% Unless required by applicable law or agreed to in writing, software %% distributed under the License is distributed on an "AS IS" BASIS, %% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. %% See the License for the specific language governing permissions and %% limitations under the License. %% %% %CopyrightEnd% %% %% %%---------------------------------------------------------------------- %% Purpose: %%---------------------------------------------------------------------- -module(megaco_binary_term_id_test). %%---------------------------------------------------------------------- %% Include files %%---------------------------------------------------------------------- -include_lib("megaco/include/megaco.hrl"). -include_lib("megaco/src/engine/megaco_message_internal.hrl"). %%---------------------------------------------------------------------- %% External exports %%---------------------------------------------------------------------- -export([t/0]). %% Test suite exports -export([all/0,groups/0,init_per_group/2,end_per_group/2, init_per_testcase/2, end_per_testcase/2]). %%---------------------------------------------------------------------- %% Internal exports %%---------------------------------------------------------------------- -export([te01/1,te02/1,te03/1,te04/1,te05/1, te06/1,te07/1,te08/1,te09/1,te10/1, te11/1,te12/1,te13/1,te14/1,te15/1, te16/1,te17/1,te18/1,te19/1]). -export([td01/1,td02/1,td03/1,td04/1,td05/1,td06/1]). %% --------------------------------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Top test case all() -> [{group, encode_first}, {group, decode_first}]. groups() -> [{encode_first, [], encode_first_cases()}, {decode_first, [], decode_first_cases()}]. init_per_group(_GroupName, Config) -> Config. end_per_group(_GroupName, Config) -> Config. %% Test server callbacks init_per_testcase(Case, Config) -> megaco_test_lib:init_per_testcase(Case, Config). end_per_testcase(Case, Config) -> megaco_test_lib:end_per_testcase(Case, Config). %%====================================================================== %% External functions %%====================================================================== t() -> display([do(Case) || Case <- cases()]), ok. cases() -> encode_first_cases() ++ decode_first_cases(). encode_first_cases() -> [te01, te02, te03, te04, te05, te06, te07, te08, te09, te10, te11, te12, te13, te14, te15, te16, te17, te18, te19]. decode_first_cases() -> [td01, td02, td03, td04, td05, td06]. do(Case) -> case doc(Case) of {'EXIT',_} -> {Case,error}; Description -> io:format("test case ~p~n",[Case]), case suite(Case) of {'EXIT',Reason} -> Res = check_result(Case,Description,ok,{error,Reason}), {Case,Res}; {Expected,Result} -> Res = check_result(Case,Description,Expected,Result), {Case,Res} end end. doc(Case) -> (catch apply(?MODULE,Case,[doc])). suite(Case) -> (catch apply(?MODULE,Case,[])). display(R) -> [display(Case,Result) || {Case,Result} <- R]. display(C,error) -> io:format("Test case ~p failed~n",[C]); display(C,warning) -> io:format("Test case ~p conspicuous~n",[C]); display(C,ok) -> io:format("Test case ~p succeeded~n",[C]). check(D,ok,{ok,T1,T2,T3}) -> Result = case check_ok_result(T1,T3) of ok -> ok; {error,Reason} -> io:format(" => inconsistent result" "~n Start and end record differ" "~n ~s" "~n ~s" "~n ~w" "~n", [D,Reason,T2]), warning end, Result; check(D,error,{ok,T1,T2,T3}) -> io:format(" => failed" "~n ~s" "~n ~p" "~n ~p" "~n ~p" "~n", [D,T1,T2,T3]), error; check(_D,error,{error,_Reason}) -> ok; check(D,ok,{error,Reason}) -> io:format(" => failed" "~n ~s" "~n Failed for reason" "~n ~p" "~n", [D,Reason]), error. check_result(_C,D,ok,{ok,T1,T2,T3}) -> Result = case check_ok_result(T1,T3) of ok -> io:format(" => succeeded" "~n ~s" "~n ~p" "~n ~w" "~n ~p", [D,T1,T2,T3]), ok; {error,Reason} -> io:format(" => inconsistent result" "~n Start and end record differ" "~n ~s" "~n ~s" "~n ~w", [D,Reason,T2]), warning end, io:format("~n~n--------------------~n",[]), Result; check_result(_C,D,error,{ok,T1,T2,T3}) -> io:format(" => failed" "~n ~s" "~n ~p" "~n ~p" "~n ~p" "~n~n--------------------~n", [D,T1,T2,T3]), error; check_result(_C,D,error,{error,Reason}) -> io:format(" => succeeded" "~n ~s" "~n Operation failed (expectedly) for reason" "~n ~p" "~n~n--------------------~n", [D,Reason]), ok; check_result(_C,D,ok,{error,Reason}) -> io:format(" => failed" "~n ~s" "~n Failed for reason" "~n ~p" "~n~n--------------------~n", [D,Reason]), error. check_ok_result(R,R) when is_record(R,megaco_term_id) -> ok; % Same record type and same record content check_ok_result(S,E) when is_record(S,megaco_term_id) andalso is_record(E,megaco_term_id) -> Reason = check_megaco_term_id_record(S,E), {error,Reason}; % Same record type but different record content check_ok_result(R,R) when is_record(R,'TerminationID') -> ok; check_ok_result(S,E) when is_record(S,'TerminationID') andalso is_record(E,'TerminationID') -> Reason = check_TerminationID_record(S,E), {error,Reason}; % Same record type but different record content check_ok_result(_S,_E) -> {error,"NOT THE SAME RECORD TYPES"}. % OOPS, Not even the same record type check_megaco_term_id_record(#megaco_term_id{contains_wildcards = Cw1, id = Id1}, #megaco_term_id{contains_wildcards = Cw2, id = Id2}) -> Result = case check_megaco_term_id_cw(Cw1,Cw2) of ok -> check_megaco_term_id_id(Id1,Id2); {error,R1} -> R2 = check_megaco_term_id_id(Id1,Id2), io_lib:format("~s~s",[R1,R2]) end, lists:flatten(Result). check_megaco_term_id_cw(Cw,Cw) -> ok; check_megaco_term_id_cw(Cw1,Cw2) -> R = io_lib:format("~n The 'contains_wildcard' property of the start" "~n megaco_term_id record " "~n has value ~w " "~n but the end record " "~n has value ~w", [Cw1,Cw2]), {error,R}. check_megaco_term_id_id(Id,Id) -> ok; check_megaco_term_id_id(Id1,Id2) -> R = io_lib:format("~n The 'id' property of the start" "~n megaco_term_id record " "~n has value ~w " "~n but the end record " "~n has value ~w", [Id1,Id2]), {error,R}. check_TerminationID_record(#'TerminationID'{wildcard = W1, id = Id1}, #'TerminationID'{wildcard = W2, id = Id2}) -> Result = case check_TerminationID_w(W1,W2) of ok -> check_TerminationID_id(Id1,Id2); {error,R1} -> R2 = check_TerminationID_id(Id1,Id2), io_lib:format("~s~s",[R1,R2]) end, lists:flatten(Result). check_TerminationID_w(W,W) -> ok; check_TerminationID_w(W1,W2) -> R = io_lib:format("~n The 'wildcard' property of the start" "~n 'TerminationID' record " "~n has value ~w " "~n but the end record " "~n has value ~w", [W1,W2]), {error,R}. check_TerminationID_id(Id,Id) -> ok; check_TerminationID_id(Id1,Id2) -> R = io_lib:format("~n The 'id' property of the start" "~n 'TerminationID' record " "~n has value ~w " "~n but the end record " "~n has value ~w", [Id1,Id2]), {error,R}. %% -------------------------------------------------------- %% Start test cases %% -------------------------------------------------------- %% basic_enc_dec01 te01(doc) -> "Basic encoding & then decoding test [1,1]\n (asn -> binary -> asn)"; te01(suite) -> []; te01(Config) when is_list(Config) -> {Exp,Res} = te01(), ok = check(te01(doc),Exp,Res). te01() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid01()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_enc_dec02 te02(doc) -> "Basic encoding & then decoding test [1,2]"; te02(suite) -> []; te02(Config) when is_list(Config) -> {Exp,Res} = te02(), ok = check(te02(doc),Exp,Res). te02() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid02()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_enc_dec03 te03(doc) -> "Basic encoding & then decoding test [1,3]"; te03(suite) -> []; te03(Config) when is_list(Config) -> {Exp,Res} = te03(), ok = check(te03(doc),Exp,Res). te03() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid03()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_enc_dec04 te04(doc) -> "Basic encoding & then decoding test [1,4]\n (asn -> binary -> asn)"; te04(suite) -> []; te04(Config) when is_list(Config) -> {Exp,Res} = te04(), ok = check(te04(doc),Exp,Res). te04() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid04()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_enc_dec05 te05(doc) -> "Basic encoding & then decoding test [1,5]\n (asn -> binary -> asn)"; te05(suite) -> []; te05(Config) when is_list(Config) -> {Exp,Res} = te05(), ok = check(te05(doc),Exp,Res). te05() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid05()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% no_wildcard_spec_but_fond_some_enc_dec te06(doc) -> "Specified NO wildcards, but found some just the same [1,6]\n (asn -> binary -> asn)"; te06(suite) -> []; te06(Config) when is_list(Config) -> {Exp,Res} = te06(), ok = check(te06(doc),Exp,Res). te06() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid06()), erase(encode_debug), erase(decode_debug), {error,Res}. %% -------------------------------------------------------- %% invalid_char_enc_dec te07(doc) -> "Invalid character found (2) [1,7]\n (asn -> binary -> asn)"; te07(suite) -> []; te07(Config) when is_list(Config) -> {Exp,Res} = te07(), ok = check(te07(doc),Exp,Res). te07() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid07()), erase(encode_debug), erase(decode_debug), {error,Res}. %% -------------------------------------------------------- %% erroneous_first_level_length_enc_dec01 te08(doc) -> "Erroneous length of first level (a character after wildcard) [1,8]\n (asn -> binary -> asn)"; te08(suite) -> []; te08(Config) when is_list(Config) -> {Exp,Res} = te08(), ok = check(te08(doc),Exp,Res). te08() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid08()), erase(encode_debug), erase(decode_debug), {error,Res}. %% -------------------------------------------------------- %% erroneous_first_level_length_enc_dec02 te09(doc) -> "Erroneous length of first level (a character after last valid) [1,9]\n (asn -> binary -> asn)"; te09(suite) -> []; te09(Config) when is_list(Config) -> {Exp,Res} = te09(), ok = check(te09(doc),Exp,Res). te09() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid09()), erase(encode_debug), erase(decode_debug), {error,Res}. %% -------------------------------------------------------- %% basic_enc_dec_with_one_rec_wildcard01 te10(doc) -> "Basic encode & decode with one recursive wildcard [1,10]\n (asn -> binary -> asn)\n (NOTE THAT THIS SHOULD LATER BE A LEVEL WILDCARD)"; te10(suite) -> []; te10(Config) when is_list(Config) -> {Exp,Res} = te10(), ok = check(te10(doc),Exp,Res). te10() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid10()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_enc_dec_with_one_rec_wildcard02 te11(doc) -> "Basic encode & decode with one recursive wildcard [1,11]\n (asn -> binary -> asn)"; te11(suite) -> []; te11(Config) when is_list(Config) -> {Exp,Res} = te11(), ok = check(te11(doc),Exp,Res). te11() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid11()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_enc_dec_with_one_rec_wildcard03 te12(doc) -> "Basic encode & decode with one recursive wildcard [1,12]\n (asn -> binary -> asn)"; te12(suite) -> []; te12(Config) when is_list(Config) -> {Exp,Res} = te12(), ok = check(te12(doc),Exp,Res). te12() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid12()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_enc_dec_with_one_rec_wildcard04 te13(doc) -> "Basic encode & decode with one recursive wildcard [1,13]\n (asn -> binary -> asn)"; te13(suite) -> []; te13(Config) when is_list(Config) -> {Exp,Res} = te13(), ok = check(te13(doc),Exp,Res). te13() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid13()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_enc_dec_with_one_rec_wildcard05 te14(doc) -> "Basic encode & decode with one recursive wildcard [2,13]\n (asn -> binary -> asn)"; te14(suite) -> []; te14(Config) when is_list(Config) -> {Exp,Res} = te14(), ok = check(te14(doc),Exp,Res). te14() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config2(),mtid13()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_enc_dec_with_one_wildcard_1level te15(doc) -> "Basic encode & decode with one wildcard in the first level\nand then one empty level [1,15]\n (asn -> binary -> asn)"; te15(suite) -> []; te15(Config) when is_list(Config) -> {Exp,Res} = te15(), ok = check(te15(doc),Exp,Res). te15() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config1(),mtid15()), erase(encode_debug), erase(decode_debug), {error,Res}. %% -------------------------------------------------------- %% basic_enc_dec_with_one_rec_wildcard06 te16(doc) -> "Basic encode & decode with one recursive wildcard [2,15]\n (asn -> binary -> asn)"; te16(suite) -> []; te16(Config) when is_list(Config) -> {Exp,Res} = te16(), ok = check(te16(doc),Exp,Res). te16() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config2(),mtid15()), erase(encode_debug), erase(decode_debug), {error,Res}. %% -------------------------------------------------------- %% basic_enc_dec_with_one_rec_wildcard07 te17(doc) -> "Basic encode & decode with one recursive wildcard [2,11]\n (asn -> binary -> asn)"; te17(suite) -> []; te17(Config) when is_list(Config) -> {Exp,Res} = te17(), ok = check(te17(doc),Exp,Res). te17() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config2(),mtid11()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_enc_dec_with_one_rec_wildcard08 te18(doc) -> "Basic encode & decode with one recursive wildcard [4,16]\n (asn -> binary -> asn)"; te18(suite) -> []; te18(Config) when is_list(Config) -> {Exp,Res} = te18(), ok = check(te18(doc),Exp,Res). te18() -> put(encode_debug,dbg), put(decode_debug,dbg), Res = encode_decode(config4(),mtid16()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_enc_dec_with_one_rec_wildcard09 te19(doc) -> "Basic encode & decode with one recursive wildcard [4,17]\n (asn -> binary -> asn)"; te19(suite) -> []; te19(Config) when is_list(Config) -> {Exp,Res} = te19(), ok = check(te19(doc),Exp,Res). te19() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = encode_decode(config4(),mtid17()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% root_term_dec_enc td01(doc) -> "Root termination decoding & then encoding test [1,1]\n (binary -> asn -> binary)"; td01(suite) -> []; td01(Config) when is_list(Config) -> {Exp,Res} = td01(), ok = check(td01(doc),Exp,Res). td01() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = decode_encode(config1(),atid1()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% One byte to much (should be two bytes but is three) %% basic_dec_enc01 td02(doc) -> "Basic decoding & then encoding test [1,2]\n (binary -> asn -> binary)"; td02(suite) -> []; td02(Config) when is_list(Config) -> {Exp,Res} = td02(), ok = check(td02(doc),Exp,Res). td02() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = decode_encode(config1(),atid2()), erase(encode_debug), erase(decode_debug), {error,Res}. %% -------------------------------------------------------- %% basic_dec_enc02 td03(doc) -> "Basic decoding & then encoding test [2,2]\n (binary -> asn -> binary)"; td03(suite) -> []; td03(Config) when is_list(Config) -> {Exp,Res} = td03(), ok = check(td03(doc),Exp,Res). td03() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = decode_encode(config2(),atid2()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_dec_enc03 td04(doc) -> "Basic decoding & then encoding test [2,3]\n (binary -> asn -> binary)"; td04(suite) -> []; td04(Config) when is_list(Config) -> {Exp,Res} = td04(), ok = check(td04(doc),Exp,Res). td04() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = decode_encode(config2(),atid3()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_dec_enc04 td05(doc) -> "Basic decoding & then encoding test [2,4]\n (binary -> asn -> binary)"; td05(suite) -> []; td05(Config) when is_list(Config) -> {Exp,Res} = td05(), ok = check(td05(doc),Exp,Res). td05() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = decode_encode(config2(),atid4()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% basic_dec_enc05 td06(doc) -> "Basic decoding & then encoding test [3,5]\n (binary -> asn -> binary)"; td06(suite) -> []; td06(Config) when is_list(Config) -> {Exp,Res} = td06(), ok = check(td06(doc),Exp,Res). td06() -> %% put(encode_debug,dbg), %% put(decode_debug,dbg), Res = decode_encode(config3(),atid5()), erase(encode_debug), erase(decode_debug), {ok,Res}. %% -------------------------------------------------------- %% -------------------------------------------------------- encode_decode(C,T) -> case encode(C,T) of {ok,T1} -> case decode(C,T1) of {ok,T2} -> {ok,T,T1,T2}; {error,R2} -> {error,{decode_error,T,T1,R2}}; {exit,E2} -> {error,{decode_exit,T,T1,E2}} end; {error,R1} -> {error,{encode_error,T,R1}}; {exit,E1} -> {error,{encode_exit,T,E1}} end. decode_encode(C,T) -> case decode(C,T) of {ok,T1} -> case encode(C,T1) of {ok,T2} -> {ok,T,T1,T2}; {error,R2} -> {error,{encode_error,T,T1,R2}}; {exit,E2} -> {error,{encode_exit,T,T1,E2}} end; {error,R1} -> {error,{decode_error,T,R1}}; {exit,E1} -> {error,{decode_exit,T,E1}} end. %% ------------------ config1() -> [3,8,5]. config2() -> [3,5,4,8,4]. config3() -> [3,5,4,16,4]. config4() -> [8,8,8]. % Default config mtid01() -> #megaco_term_id{contains_wildcards = false, id = [[$1,$0,$1], [$1,$1,$0,$1,$0,$0,$0,$1], [$1,$1,$0,$1,$1]]}. mtid02() -> #megaco_term_id{contains_wildcards = true, id = [[$1,$0,$$],[$1,$1,$0,$1,$$],[$1,$1,$*]]}. mtid03() -> #megaco_term_id{contains_wildcards = true, id = [[$1,$0,$1],[$1,$0,$1,$$],[$1,$1,$*]]}. mtid04() -> #megaco_term_id{contains_wildcards = true, id = [[$1,$0,$$],[$1,$1,$0,$1,$$],[$1,$1,$1,$0,$0]]}. mtid05() -> #megaco_term_id{contains_wildcards = true, id = [[$1,$0,$1],[$1,$1,$0,$1,$$],[$1,$1,$1,$0,$0]]}. mtid06() -> #megaco_term_id{contains_wildcards = false, id = [[$1,$0,$$],[$1,$1,$0,$1,$$],[$1,$1,$*]]}. mtid07() -> #megaco_term_id{contains_wildcards = true, id = [[$1,$0,$*],[$1,2,$0,$1,$$],[$1,$1,$1,$0,$0]]}. mtid08() -> #megaco_term_id{contains_wildcards = true, id = [[$1,$0,$*,$1],[$1,$1,$0,$1,$$],[$1,$1,$1,$0,$0]]}. mtid09() -> #megaco_term_id{contains_wildcards = true, id = [[$1,$0,$0,$1],[$1,$1,$0,$1,$$],[$1,$1,$1,$0,$0]]}. mtid10() -> #megaco_term_id{contains_wildcards = true, id = [[$1,$0,$1],[$1,$0,$1,$$],[$$]]}. mtid11() -> #megaco_term_id{contains_wildcards = true, id = [[$1,$0,$1],[$1,$0,$1,$$]]}. mtid12() -> #megaco_term_id{contains_wildcards = true, id = [[$1,$0,$1],[$1,$0,$1,$0,$1,$1,$$]]}. mtid13() -> #megaco_term_id{contains_wildcards = true, id = [[$1,$0,$*]]}. %% Empty last level %% mtid14() -> %% #megaco_term_id{contains_wildcards = true, %% id = [[$1,$0,$*],[$1,$0,$0,$$],[]]}. %% Empty second level and missing last level mtid15() -> #megaco_term_id{contains_wildcards = true, id = [[$1,$0,$*],[]]}. %% Megaco all wildcard termination id mtid16() -> #megaco_term_id{contains_wildcards = true, id = [[?megaco_all]]}. %% Megaco choose wildcard termination id mtid17() -> #megaco_term_id{contains_wildcards = true, id = [[?megaco_choose]]}. aroot() -> #'TerminationID'{wildcard = [], id = [16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF]}. atid1() -> aroot(). atid2() -> #'TerminationID'{wildcard = [], id = [2#00000001, 02#00011110, 2#0]}. atid3() -> #'TerminationID'{wildcard = [[2#00010111], [2#00000111]], id = [2#0, 2#00011110, 2#0]}. atid4() -> #'TerminationID'{wildcard = [[2#01001111]], id = [2#0000001, 2#0, 2#0]}. %% atid5() -> #'TerminationID'{wildcard = [[2#01001111]], id = [2#00000001, 2#00110011, 2#00000000, 2#00000000]}. %%-- %% ------------------ encode(C,T) -> encode(get(encode_debug),C,T). encode(L,C,T) -> put(dsev,L), Res = encode1(C,T), erase(dsev), Res. encode1(C,T) -> case (catch megaco_binary_term_id:encode(C,T)) of {'EXIT',Reason} -> {exit,Reason}; Else -> Else end. decode(C,T) -> decode(get(decode_debug),C,T). decode(L,C,T) -> put(dsev,L), Res = decode1(C,T), erase(dsev), Res. decode1(C,T) -> case (catch megaco_binary_term_id:decode(C,T)) of {'EXIT',Reason} -> {exit,Reason}; Else -> Else end.