%%
%% %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%
%%
%%
-module(testMergeCompile).
-export([main/1,mvrasn/1]).
-include_lib("common_test/include/ct.hrl").
-record('InitiatingMessage',{procedureCode,criticality,value}).
-record('Iu-ReleaseCommand',{protocolIEs,protocolExtensions}).
main(Erule) ->
%% test of module MS.set.asn that tests OTP-4492: different tagdefault in
%% modules and types with same name in modules
MSVal = {'Type4M2',8,true,three,<<"OCTET STRING">>},
asn1_test_lib:roundtrip('MS', 'Type4M2', MSVal),
%% test of RANAP.set.asn1
PIEVal2 = [{'ProtocolIE-Field',4,ignore,{radioNetwork,'rab-pre-empted'}}],
EncVal0 =
case Erule of
per ->
<<1,100>>;
uper ->
<<1,100>>;
ber ->
<<2,1,1>>
end,
EncVal = {asn1_OPENTYPE,EncVal0},
PEVal2 = [{'ProtocolExtensionField',1,ignore,EncVal},
{'ProtocolExtensionField',2,reject,EncVal}],
Val2 =
#'InitiatingMessage'{procedureCode=1,
criticality=ignore,
value=#'Iu-ReleaseCommand'{protocolIEs=PIEVal2,
protocolExtensions=asn1_NOVALUE}},
asn1_test_lib:roundtrip('RANAPSET', 'InitiatingMessage', Val2),
Val3 =
#'InitiatingMessage'{procedureCode=1,
criticality=ignore,
value=#'Iu-ReleaseCommand'{protocolIEs=PIEVal2,
protocolExtensions=PEVal2}},
asn1_test_lib:roundtrip('RANAPSET', 'InitiatingMessage', Val3).
mvrasn(Erule) ->
case Erule of
ber ->
ok = test(isd),
ok = test(isd2),
ok = test(dsd),
ok = test(ul_res),
ok = test(seqofseq),
ok = test('InsertSubscriberDataArg');
_ ->
ok
end,
ok = test(mvrasn6,'InsertSubscriberDataArg').
test(isd)->
EncPdu = <<48,128,129,7,145,148,113,50,1,0,241,131,1,0,176,128,5,0,
161,128,48,22,2,1,1,144,2,241,33,145,4,0,1,2,3,146,3,36,
131,16,148,2,1,42,48,35,2,1,2,144,2,241,33,145,4,255,255,
255,255,146,3,37,147,18,147,0,148,13,7,67,79,77,80,65,78,
89,4,67,79,77,53,48,28,2,1,3,144,2,241,33,146,3,26,98,31,
148,14,9,67,79,77,80,65,78,89,49,50,3,67,79,77,0,0,0,0,
152,1,2,0,0>>,
{ok,_} = 'Mvrasn4':decode('InsertSubscriberDataArg', EncPdu),
ok;
%
% Problems with indefinite length encoding !!!
%
test(isd2)->
EncPdu = <<48,128,128,8,98,2,50,1,0,0,0,241,176,128,161,128,48,128,2,1,1,144,
2,241,33,145,4,255,23,12,1,146,3,9,17,1,147,0,148,13,7,67,79,77,80,
65,78,89,4,67,79,77,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0>>,
{ok,_DecPdu} = 'Mvrasn4':decode('InsertSubscriberDataArg', EncPdu),
ok;
%
% Is doing fine, although there is indefinite encoding used... !!!
%
test(dsd)->
EncPdu = <<48,128,128,8,98,2,50,1,0,0,0,241,170,2,5,0,0,0,0,0>>,
{ok,_DecPdu} = 'Mvrasn4':decode('DeleteSubscriberDataArg', EncPdu),
ok;
%
% Is doing fine !!!
%
test(ul_res)->
EncPdu = <<48,9,4,7,145,148,113,66,16,17,241>>,
{ok,_DecPdu} = 'Mvrasn4':decode('UpdateGprsLocationRes', EncPdu),
ok;
test(seqofseq) ->
EncPdu = <<48,129,190,161,128,4,16,176,197,182,68,41,243,188,205,123,13,
9,145,206,200,144,102,4,4,176,197,182,68,4,8,41,243,188,205,
123,13,9,145,0,0,161,128,4,16,39,0,3,117,35,189,130,21,42,104,
49,194,212,24,151,234,4,4,39,0,3,117,4,8,35,189,130,21,42,104,
49,194,0,0,161,128,4,16,62,207,166,59,71,29,37,97,120,25,132,
80,144,251,161,123,4,4,62,207,166,59,4,8,71,29,37,97,120,25,
132,80,0,0,161,128,4,16,95,183,173,151,17,76,148,146,248,102,
127,215,102,224,39,60,4,4,95,183,173,151,4,8,17,76,148,146,248,
102,127,215,0,0,161,128,4,16,41,198,247,157,117,190,203,170,91,
146,88,91,223,220,188,16,4,4,41,198,247,157,4,8,117,190,203,170,91,146,88,91,0,0>>,
{ok,_V} = 'Mvrasn4':decode('SentParameters', EncPdu),
ok;
test('InsertSubscriberDataArg') ->
EncPdu = <<16#30,16#80,16#81,16#07,16#91,16#94,
16#71,16#92,16#00,16#35,16#80,16#83,
16#01,16#00,16#A6,16#06,16#04,16#01,
16#21,16#04,16#01,16#22,16#B0,16#80,
16#05,16#00,16#A1,16#80,16#30,16#1A,
16#02,16#01,16#01,16#90,16#02,16#F1,
16#21,16#92,16#03,16#0D,16#92,16#1F,
16#94,16#0C,16#03,16#53,16#49,16#4D,
16#03,16#47,16#53,16#4E,16#03,16#4C,
16#4B,16#50,16#00,16#00,16#00,16#00,
16#98,16#01,16#00,16#00,16#00>>,
{ok,_V} = 'Mvrasn4':decode('InsertSubscriberDataArg', EncPdu),
ok.
test(mvrasn6,'InsertSubscriberDataArg') ->
Val = {'InsertSubscriberDataArg',<<"IMSI">>,<<"Address">>,<<"C">>,
serviceGranted,[<<"abc">>,<<"cde">>],
[<<"tele">>,<<"serv">>,<<"ice">>],
asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE,
asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE,
{'NAEA-PreferredCI',<<"NCC">>,asn1_NOVALUE},
{'GPRSSubscriptionData','NULL',
[{'PDP-Context',49,<<"PT">>,<<"PDP-Address">>,<<"QoS">>,
'NULL',<<"APN">>,asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE}],
asn1_NOVALUE},'NULL',onlyMSC,
{'LSAInformation','NULL',accessOutsideLSAsAllowed,
[{'LSAData',<<"LSA">>,<<"L">>,'NULL',asn1_NOVALUE},
{'LSAData',<<"LSA">>,<<"L">>,'NULL',asn1_NOVALUE}],
asn1_NOVALUE},'NULL',
{'LCSInformation',[<<"Addr">>,<<"ess">>,<<"string">>],
[{'LCS-PrivacyClass',<<"S">>,<<"ExtSS">>,notifyLocationAllowed,
[{'ExternalClient',
{'LCSClientExternalID',<<"Addr">>,asn1_NOVALUE},
asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE}],
[broadcastService,anonymousLocation,targetMSsubscribedService],
asn1_NOVALUE}],asn1_NOVALUE},
100,<<"age">>,
{'MC-SS-Info',<<"S">>,<<"ExtSS">>,5,4,asn1_NOVALUE},
<<"C">>,
{'SGSN-CAMEL-SubscriptionInfo',
{'GPRS-CSI',
[{'GPRS-CamelTDPData',attach,13,<<"Addr">>,
continueTransaction,asn1_NOVALUE}],
11,asn1_NOVALUE,'NULL','NULL'},
{'SMS-CSI',
[{'SMS-CAMEL-TDP-Data','sms-CollectedInfo',
13,<<"Addr">>,continueTransaction,asn1_NOVALUE}],
11,asn1_NOVALUE,'NULL','NULL'},
asn1_NOVALUE},
<<"ON">>},
asn1_test_lib:roundtrip('Mvrasn6', 'InsertSubscriberDataArg', Val),
ok.