diff options
author | Kenneth Lundin <[email protected]> | 2010-02-19 14:01:57 +0000 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2010-02-19 14:01:57 +0000 |
commit | 18bd1239bee04427340a44f57f993ea92c264e41 (patch) | |
tree | dbb3031dcd2e446eb457ff7ac5229949517d7557 /lib/asn1/test/testSeqSetDefaultVal.erl | |
parent | 729565dc3f8bcf8829508136498aef6a542840f4 (diff) | |
download | otp-18bd1239bee04427340a44f57f993ea92c264e41.tar.gz otp-18bd1239bee04427340a44f57f993ea92c264e41.tar.bz2 otp-18bd1239bee04427340a44f57f993ea92c264e41.zip |
OTP-8463 Support for EXTENSIBILITY IMPLIED and SET/SEQ OF NamedType is
added.
Diffstat (limited to 'lib/asn1/test/testSeqSetDefaultVal.erl')
-rw-r--r-- | lib/asn1/test/testSeqSetDefaultVal.erl | 345 |
1 files changed, 345 insertions, 0 deletions
diff --git a/lib/asn1/test/testSeqSetDefaultVal.erl b/lib/asn1/test/testSeqSetDefaultVal.erl new file mode 100644 index 0000000000..1c238fd1b7 --- /dev/null +++ b/lib/asn1/test/testSeqSetDefaultVal.erl @@ -0,0 +1,345 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2001-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% +%% +%% +-module(testSeqSetDefaultVal). + +-include("External.hrl"). +-export([compile/2]). +-export([main/1]). + +-include("test_server.hrl"). + +-record('SeqInts',{a = asn1_DEFAULT, + b = asn1_DEFAULT, + c = asn1_DEFAULT, + d = asn1_DEFAULT}). +-record('SetInts',{a = asn1_DEFAULT, + b = asn1_DEFAULT, + c = asn1_DEFAULT, + d = asn1_DEFAULT}). +-record('SeqBS',{a = asn1_DEFAULT, + b = asn1_DEFAULT, + c = asn1_DEFAULT, + d = asn1_DEFAULT}). +-record('SetBS',{a = asn1_DEFAULT, + b = asn1_DEFAULT, + c = asn1_DEFAULT, + d = asn1_DEFAULT}). +-record('SeqOS',{a = asn1_DEFAULT, + b = asn1_DEFAULT, + c = asn1_DEFAULT}). +-record('SetOS',{a = asn1_DEFAULT, + b = asn1_DEFAULT, + c = asn1_DEFAULT}). +-record('SeqOI',{a = asn1_DEFAULT, + b = asn1_DEFAULT, + c = asn1_DEFAULT}). +-record('SetOI',{a = asn1_DEFAULT, + b = asn1_DEFAULT, + c = asn1_DEFAULT}). +-record('SeqEnum',{a = asn1_DEFAULT, + b = asn1_DEFAULT}). +-record('SetEnum',{a = asn1_DEFAULT, + b = asn1_DEFAULT}). +-record('SeqIntBool',{a = asn1_DEFAULT, + b = asn1_DEFAULT, + c = asn1_DEFAULT}). +-record('SeqIntBool_a',{aa = asn1_DEFAULT, + ab = asn1_DEFAULT}). +-record('SetIntBool',{a = asn1_DEFAULT, + b = asn1_DEFAULT, + c = asn1_DEFAULT}). +-record('SetIntBool_a',{aa = asn1_DEFAULT, + ab = asn1_DEFAULT}). +-record('SeqStrings',{a = asn1_DEFAULT, + b1 = asn1_DEFAULT, + b2 = asn1_DEFAULT, + b3 = asn1_DEFAULT, + c = asn1_DEFAULT, + d = asn1_DEFAULT}). +-record('SetStrings',{a = asn1_DEFAULT, + b1 = asn1_DEFAULT, + b2 = asn1_DEFAULT, + b3 = asn1_DEFAULT, + c = asn1_DEFAULT, + d = asn1_DEFAULT}). +-record('S1',{a = asn1_DEFAULT, + b = asn1_DEFAULT}). +-record('S1_a',{aa = asn1_DEFAULT, + ab = asn1_DEFAULT}). +-record('S2',{a = asn1_DEFAULT, b=asn1_NOVALUE}). +-record('S3',{a = asn1_DEFAULT, + b = asn1_DEFAULT, + c = asn1_DEFAULT, + d = asn1_DEFAULT}). +-record('S3set',{a = asn1_DEFAULT, + b = asn1_DEFAULT}). +-record('S4',{a = asn1_DEFAULT, + b = asn1_DEFAULT}). +-record('S4_b',{ba = asn1_DEFAULT, + bb = asn1_DEFAULT}). + + +compile(Config,Rules) -> + ?line DataDir = ?config(data_dir,Config), + ?line OutDir = ?config(priv_dir,Config), + ?line true = code:add_patha(?config(priv_dir,Config)), + ?line ok = asn1ct:compile(DataDir ++ "Default", + [Rules,der,{outdir,OutDir}]). + +main(_Rules) -> + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','SeqInts',#'SeqInts'{}), + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','SeqInts',#'SeqInts'{a=1,b=-1,c=three, + d=1}), + ?line {ok,{'SeqInts',1,-1,3,1}} = + asn1_wrapper:decode('Default','SeqInts',[48,0]), + + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','SetInts',#'SetInts'{}), + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','SetInts',#'SetInts'{a=1,b=-1,c=three, + d=1}), + ?line {ok,{'SetInts',1,-1,3,1}} = + asn1_wrapper:decode('Default','SetInts',[49,0]), + + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','SeqBS', + #'SeqBS'{a=2#1010110, + b=16#A8A, + c=[second], + d=[1,0,0,1]}), + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','SeqBS', + #'SeqBS'{a=[1,0,1,0,1,1,0], + b=[1,0,1,0,1,0,0,0,1,0,1,0], + c={5,<<64>>}, + d=9}), + + ?line {ok,[48,3,131,1,0]} = + asn1_wrapper:encode('Default','SeqBS', + #'SeqBS'{a=[1,0,1,0,1,1,0], + b=[1,0,1,0,1,0,0,0,1,0,1,0], + c={5,<<64>>}, + d=0}), + + ?line {ok,{'SeqBS',[1,0,1,0,1,1,0],2698,[second],[]}} = + asn1_wrapper:decode('Default','SeqBS',[48,3,131,1,0]), + + ?line {ok,{'SeqBS',[1,0,1,0,1,1,0],2698,[second],[1,0,0,1]}} = + asn1_wrapper:decode('Default','SeqBS',[48,0]), + + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','SetBS', + #'SetBS'{a=2#1010110, + b=16#A8A, + c=[second], + d=[1,0,0,1]}), + + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','SetBS', + #'SetBS'{a=[1,0,1,0,1,1,0], + b=[1,0,1,0,1,0,0,0,1,0,1,0], + c={5,<<64>>}, + d=9}), + + ?line {ok,[49,3,131,1,0]} = + asn1_wrapper:encode('Default','SetBS', + #'SetBS'{a=[1,0,1,0,1,1,0], + b=[1,0,1,0,1,0,0,0,1,0,1,0], + c={5,<<64>>}, + d=0}), + + ?line {ok,{'SetBS',[1,0,1,0,1,1,0],2698,[second],[]}} = + asn1_wrapper:decode('Default','SetBS',[49,3,131,1,0]), + + ?line {ok,{'SetBS',[1,0,1,0,1,1,0],2698,[second],[1,0,0,1]}} = + asn1_wrapper:decode('Default','SetBS',[49,0]), + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','SeqOS', + #'SeqOS'{a=[172], + b=[16#A8,16#A0], + c='NULL'}), + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','SeqOS', + #'SeqOS'{a=2#10101100, + b=16#A8A0, + c='NULL'}), + + ?line {ok,{'SeqOS',[172],[16#A8,16#A0],'NULL'}} = + asn1_wrapper:decode('Default','SeqOS',[48,0]), + + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','SetOS', + #'SetOS'{a=[172], + b=[16#A8,16#A0], + c='NULL'}), + + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','SetOS', + #'SetOS'{a=2#10101100, + b=16#A8A0, + c='NULL'}), + + ?line {ok,{'SetOS',[172],[16#A8,16#A0],'NULL'}} = + asn1_wrapper:decode('Default','SetOS',[49,0]), + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','SeqOI', + #'SeqOI'{a={1,2,14,15}, + b={iso,'member-body',250,3,4}, + c={iso,standard,8571,2,250,4}}), + + ?line {ok,{'SeqOI',{1,2,14,15},{1,2,250,3,4},{1,0,8571,2,250,4}}} = + asn1_wrapper:decode('Default','SeqOI',[48,0]), + + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','SetOI', + #'SetOI'{a={1,2,14,15}, + b={iso,'member-body',250,3,4}, + c={iso,standard,8571,2,250,4}}), + + ?line {ok,{'SetOI',{1,2,14,15},{1,2,250,3,4},{1,0,8571,2,250,4}}} = + asn1_wrapper:decode('Default','SetOI',[49,0]), + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','SeqEnum',#'SeqEnum'{a=b4,b=b2}), + + ?line {ok,{'SeqEnum',b4,b2}} = + asn1_wrapper:decode('Default','SeqEnum',[48,0]), + + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','SetEnum',#'SetEnum'{a=b4,b=b2}), + + ?line {ok,{'SetEnum',b4,b2}} = + asn1_wrapper:decode('Default','SetEnum',[49,0]), + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','SeqIntBool', + #'SeqIntBool'{a=#'SeqIntBool_a'{aa=12,ab=13}, + b=#'S2'{a=14,b=true}, + c=#'S2'{a=15,b=false}}), + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','SeqIntBool', + #'SeqIntBool'{}), + + ?line {ok,{'SeqIntBool',{'SeqIntBool_a',12,13}, + {'S2',14,true},{'S2',15,false}}} = + asn1_wrapper:decode('Default','SeqIntBool',[48,0]), + + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','SetIntBool', + #'SetIntBool'{a=#'SetIntBool_a'{aa=12,ab=13}, + b=#'S2'{a=14,b=true}, + c=#'S2'{a=15,b=false}}), + + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','SetIntBool', + #'SetIntBool'{}), + + ?line {ok,{'SetIntBool',{'SetIntBool_a',12,13}, + {'S2',14,true},{'S2',15,false}}} = + asn1_wrapper:decode('Default','SetIntBool',[49,0]), + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','SeqStrings', + #'SeqStrings'{a="123456789", + b1="abcdef", + b2={0,13}, + b3={"First line",{0,13},"Second line"}, + c="Printable string", + d={0,0,1,14}}), + + ?line {ok,{'SeqStrings',"123456789","abcdef",[0,13], + ["First line",[0,13],"Second line"],"Printable string", + [0,0,1,14]}} = + asn1_wrapper:decode('Default','SeqStrings',[48,0]), + + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','SetStrings', + #'SetStrings'{a="123456789", + b1="abcdef", + b2={0,13}, + b3={"First line",{0,13},"Second line"}, + c="Printable string", + d={0,0,1,14}}), + + ?line {ok,{'SetStrings',"123456789","abcdef",[0,13], + ["First line",[0,13],"Second line"],"Printable string", + [0,0,1,14]}} = + asn1_wrapper:decode('Default','SetStrings',[49,0]), + + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','S1', + #'S1'{a=#'S1_a'{aa=1, + ab=#'S2'{a=2,b=true}}, + b=#'S4'{a=#'S2'{a=2,b=true}, + b=#'S4_b'{ba=true, + bb=5}}}), + + ?line {ok,{'S1',{'S1_a',1,{'S2',2,true}}, + {'S4',{'S2',2,true},{'S4_b',true,5}}}} = + asn1_wrapper:decode('Default','S1',[48,0]), + + ?line {ok,[48,3,129,1,255]} = + asn1_wrapper:encode('Default','S2', + #'S2'{a=1,b=true}), + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','S3', + #'S3'{a=[11,12,13], + b=[{a,11},{b,true},{c,13}], + c=[1,2,3,4], + d=[#'S2'{a=20,b=true},#'S2'{a=30,b=false}]}), + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','S3', + #'S3'{a=[11,13,12], + b=[{b,true},{a,11},{c,13}], + c=[3,4,1,2], + d=[#'S2'{a=30,b=false},#'S2'{a=20,b=true}]}), + + ?line {ok,[48,0]} = asn1_wrapper:encode('Default','S3',#'S3'{}), + + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','S3set', + #'S3set'{a=[{c,#'S2'{a=3,b=true}}, + {b,17},{a,false}], + b=[1,2,3,4]}), + + ?line {ok,[49,0]} = + asn1_wrapper:encode('Default','S3set', + #'S3set'{a=[{b,17},{c,#'S2'{a=3,b=true}}, + {a,false}], + b=[1,3,4,2]}), + + ?line {ok,[49,0]} = asn1_wrapper:encode('Default','S3set',#'S3set'{}), + + ?line {ok,[48,0]} = + asn1_wrapper:encode('Default','S4',#'S4'{a={'S2',1,asn1_NOVALUE}, + b=#'S4_b'{ba=true,bb=0}}), + ok. |