%%
%% %CopyrightBegin%
%% 
%% Copyright Ericsson AB 2005-2009. All Rights Reserved.
%% 
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
%% 
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
%% 
%% %CopyrightEnd%
%%
%%

common() -> [app_test, appup_test,testTimer_ber,testTimer_ber_bin,
	testTimer_ber_bin_opt, testTimer_ber_bin_opt_driver, testTimer_per,
	testTimer_per_bin, testTimer_per_bin_opt, testTimer_uper_bin,
	testComment,testName2Number].


app_test(suite) -> [{asn1_app_test,all}].
appup_test(suite) -> [{asn1_appup_test,all}].

testTimer_ber(suite) -> [];
testTimer_ber(Config) ->
    ?line testTimer:compile(Config,ber,[]),
    ?line testTimer:go(Config,ber).

testTimer_ber_bin(suite) -> [];
testTimer_ber_bin(Config) ->
    ?line testTimer:compile(Config,ber_bin,[]),
    ?line testTimer:go(Config,ber_bin).

testTimer_ber_bin_opt(suite) -> [];
testTimer_ber_bin_opt(Config) ->
    ?line testTimer:compile(Config,ber_bin,[optimize]),
    ?line testTimer:go(Config,ber_bin).

testTimer_ber_bin_opt_driver(suite) -> [];
testTimer_ber_bin_opt_driver(Config) ->
    ?line testTimer:compile(Config,ber_bin,[optimize,driver]),
    ?line testTimer:go(Config,ber_bin).

testTimer_per(suite) -> [];
testTimer_per(Config) ->
    ?line testTimer:compile(Config,per,[]),
    ?line testTimer:go(Config,per).

testTimer_per_bin(suite) -> [];
testTimer_per_bin(Config) ->
    ?line testTimer:compile(Config,per_bin,[]),
    ?line testTimer:go(Config,per_bin).

testTimer_per_bin_opt(suite) -> [];
testTimer_per_bin_opt(Config) ->
    ?line testTimer:compile(Config,per_bin,[optimize]),
    ?line testTimer:go(Config,per_bin).


testTimer_uper_bin(suite) -> [];
testTimer_uper_bin(Config) ->
    ?line ok=testTimer:compile(Config,uper_bin,[]),
    ?line {comment,_} = testTimer:go(Config,uper_bin).

%% Test of multiple-line comment, OTP-8043
testComment(suite) -> [];
testComment(Config) ->
    ?line DataDir = ?config(data_dir,Config),
    ?line OutDir = ?config(priv_dir,Config),

    ?line ok = asn1ct:compile(DataDir ++ "Comment",[{outdir,OutDir}]),

    ?line {ok,Enc} = asn1_wrapper:encode('Comment','Seq',{'Seq',12,true}),
    ?line {ok,{'Seq',12,true}} = asn1_wrapper:decode('Comment','Seq',Enc),
    ok.

testName2Number(suite) -> [];
testName2Number(Config) -> 
    DataDir = ?config(data_dir,Config),
    OutDir = ?config(priv_dir,Config),
    N2NOptions = [{n2n,Type}|| Type <- 
				   ['CauseMisc','CauseProtocol',
				    %% 'CauseNetwork',
				    'CauseRadioNetwork',
				    'CauseTransport','CauseNas']],
    ?line ok = asn1ct:compile(DataDir ++ "S1AP-IEs",[{outdir,OutDir}]++N2NOptions),
    ?line true = code:add_patha(OutDir),

    ?line 0 = 'S1AP-IEs':name2num_CauseMisc('control-processing-overload'),
    ?line 'unknown-PLMN' = 'S1AP-IEs':num2name_CauseMisc(5),
    ok.