aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/test/testPrimStrings.erl
diff options
context:
space:
mode:
authorKenneth Lundin <[email protected]>2010-02-19 14:01:57 +0000
committerErlang/OTP <[email protected]>2010-02-19 14:01:57 +0000
commit18bd1239bee04427340a44f57f993ea92c264e41 (patch)
treedbb3031dcd2e446eb457ff7ac5229949517d7557 /lib/asn1/test/testPrimStrings.erl
parent729565dc3f8bcf8829508136498aef6a542840f4 (diff)
downloadotp-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/testPrimStrings.erl')
-rw-r--r--lib/asn1/test/testPrimStrings.erl936
1 files changed, 936 insertions, 0 deletions
diff --git a/lib/asn1/test/testPrimStrings.erl b/lib/asn1/test/testPrimStrings.erl
new file mode 100644
index 0000000000..707ee375c1
--- /dev/null
+++ b/lib/asn1/test/testPrimStrings.erl
@@ -0,0 +1,936 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 1997-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(testPrimStrings).
+
+-export([compile/3]).
+-export([bit_string/1]).
+-export([bit_string_unnamed/1]).
+-export([octet_string/1]).
+-export([numeric_string/1]).
+-export([other_strings/1]).
+-export([more_strings/1]).
+-export([universal_string/1]).
+-export([bmp_string/1]).
+-export([times/1]).
+-export([utf8_string/1]).
+
+-include("test_server.hrl").
+
+
+compile(Config,Rules,Option) ->
+
+ ?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 ++ "PrimStrings",
+ [Rules,{outdir,OutDir}]++Option),
+ ?line {ok,IO} = file:open(test_config,write),
+ io:format(IO,"~p.~n",[Config]),
+ file:close(IO),
+ ?line ok = asn1ct:compile(DataDir ++ "BitStr",
+ [Rules, {outdir,OutDir}]++Option).
+
+
+
+bit_string(Rules) ->
+
+ %%==========================================================
+ %% Bs1 ::= BIT STRING
+ %%==========================================================
+
+ ?line {ok,Bytes1} = asn1_wrapper:encode('PrimStrings','Bs1',0),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes1)),
+
+ ?line {ok,Bytes2} = asn1_wrapper:encode('PrimStrings','Bs1',4),
+ ?line {ok,[0,0,1]} = asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes2)),
+
+ ?line {ok,Bytes3} = asn1_wrapper:encode('PrimStrings','Bs1',15),
+ ?line {ok,[1,1,1,1]} = asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes3)),
+
+ ?line {ok,Bytes4} = asn1_wrapper:encode('PrimStrings','Bs1',255),
+ ?line {ok,[1,1,1,1,1,1,1,1]} = asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes4)),
+
+ ?line {ok,Bytes5} = asn1_wrapper:encode('PrimStrings','Bs1',256),
+ ?line {ok,[0,0,0,0,0,0,0,0,1]} = asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes5)),
+
+ ?line {ok,Bytes6} = asn1_wrapper:encode('PrimStrings','Bs1',257),
+ ?line {ok,[1,0,0,0,0,0,0,0,1]} = asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes6)),
+
+ ?line {ok,Bytes7} = asn1_wrapper:encode('PrimStrings','Bs1',444),
+ ?line {ok,[0,0,1,1,1,1,0,1,1]} = asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes7)),
+
+ ?line {ok,Bytes8} = asn1_wrapper:encode('PrimStrings','Bs1',12345678901234567890),
+ ?line {ok,_} = asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes8)),
+
+%% Removed due to beam cannot handle this big integers
+%% Bs1_1 = 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,
+%% ?line {ok,Bytes9} = asn1_wrapper:encode('PrimStrings','Bs1',Bs1_1),
+%% ?line {ok,_} = asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes9)),
+
+%% Bs1_2 = 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,
+%% ?line {ok,Bytes10} = asn1_wrapper:encode('PrimStrings','Bs1',Bs1_2),
+%% ?line {ok,_} = asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes10)),
+
+ ?line {ok,Bytes11} = asn1_wrapper:encode('PrimStrings','Bs1',[1,1,1,1,1,1,1,1]),
+ ?line {ok,[1,1,1,1,1,1,1,1]} = asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes11)),
+
+ ?line case asn1_wrapper:erule(Rules) of
+ ber ->
+ ?line {ok,Bytes12} = asn1_wrapper:encode('PrimStrings','Bs1',[0,1,0,0,1,0]),
+ ?line {ok,[0,1,0,0,1,0]} =
+ asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes12)),
+
+ ?line {ok,Bytes13} = asn1_wrapper:encode('PrimStrings','Bs1',[1,0,0,0,0,0,0,0,0]),
+ ?line {ok,[1,0,0,0,0,0,0,0,0]} =
+ asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes13)),
+ ok;
+ per ->
+ ?line {ok,Bytes12} = asn1_wrapper:encode('PrimStrings','Bs1',[0,1,0,0,1,0]),
+ ?line {ok,[0,1,0,0,1,0]} =
+ asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes12)),
+
+ ?line {ok,Bytes13} = asn1_wrapper:encode('PrimStrings','Bs1',[1,0,0,0,0,0,0,0,0]),
+ ?line {ok,[1,0,0,0,0,0,0,0,0]} =
+ asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes13)),
+ ok
+ end,
+
+ ?line {ok,Bytes14} =
+ asn1_wrapper:encode('PrimStrings','Bs1',[0,1,0,0,1,0,1,1,1,1,1,0,0,0,1,0,0,1,1]),
+ ?line {ok,[0,1,0,0,1,0,1,1,1,1,1,0,0,0,1,0,0,1,1]} =
+ asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes14)),
+
+
+ ?line case asn1_wrapper:erule(Rules) of
+ ber ->
+ ?line Bytes15 = [35,8,3,2,0,73,3,2,4,32],
+ ?line {ok,[0,1,0,0,1,0,0,1,0,0,1,0]} =
+ asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes15)),
+
+ ?line Bytes16 = [35,9,3,2,0,234,3,3,7,156,0],
+ ?line {ok,[1,1,1,0,1,0,1,0,1,0,0,1,1,1,0,0,0]} =
+ asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes16)),
+
+ ?line Bytes17 = [35,128,3,2,0,73,3,2,4,32,0,0],
+ ?line {ok,[0,1,0,0,1,0,0,1,0,0,1,0]} =
+ asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes17)),
+
+ ?line Bytes18 = [35,128,3,2,0,234,3,3,7,156,0,0,0],
+ ?line {ok,[1,1,1,0,1,0,1,0,1,0,0,1,1,1,0,0,0]} =
+ asn1_wrapper:decode('PrimStrings','Bs1',lists:flatten(Bytes18)),
+ ok;
+
+ per ->
+ ok
+ end,
+
+
+
+ %%==========================================================
+ %% Bs2 ::= BIT STRING {su(0), mo(1), tu(2), we(3), th(4), fr(5), sa(6) } (SIZE (7))
+ %%==========================================================
+
+ ?line {ok,Bytes21} = asn1_wrapper:encode('PrimStrings','Bs2',[mo,tu,fr]),
+ ?line {ok,[mo,tu,fr]} = asn1_wrapper:decode('PrimStrings','Bs2',lists:flatten(Bytes21)),
+
+ ?line {ok,Bytes22} = asn1_wrapper:encode('PrimStrings','Bs2',[0,1,1,0,0,1,0]),
+ ?line {ok,[mo,tu,fr]} = asn1_wrapper:decode('PrimStrings','Bs2',lists:flatten(Bytes22)),
+ ok,
+%% skip this because it is wrong
+% ?line case asn1_wrapper:erule(Rules) of
+% ber ->
+% ?line {ok,[mo,tu,fr,su,mo,th]} =
+% asn1_wrapper:decode('PrimStrings','Bs2',[35,8,3,2,0,101,3,2,2,200]),
+
+% ?line {ok,[mo,tu,fr,su,mo,th]} =
+% asn1_wrapper:decode('PrimStrings','Bs2',[35,128,3,2,1,100,3,2,2,200,0,0]),
+% ok;
+
+% per ->
+% ok
+% end,
+
+
+
+ %%==========================================================
+ %% Bs3 ::= BIT STRING {su(0), mo(1), tu(2), we(3), th(4), fr(5), sa(6) } (SIZE (1..7))
+ %%==========================================================
+
+ ?line {ok,Bytes31} = asn1_wrapper:encode('PrimStrings','Bs3',[mo,tu,fr]),
+ ?line {ok,[mo,tu,fr]} = asn1_wrapper:decode('PrimStrings','Bs3',lists:flatten(Bytes31)),
+
+ ?line {ok,Bytes32} = asn1_wrapper:encode('PrimStrings','Bs3',[0,1,1,0,0,1,0]),
+ ?line {ok,[mo,tu,fr]} = asn1_wrapper:decode('PrimStrings','Bs3',lists:flatten(Bytes32)),
+
+
+ %%==========================================================
+ %% Bs7 ::= BIT STRING (SIZE (24))
+ %%==========================================================
+
+ ?line {ok,Bytes33} = asn1_wrapper:encode('PrimStrings','Bs7',53245),
+ ?line {ok,[1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0]} =
+ asn1_wrapper:decode('PrimStrings','Bs7',Bytes33),
+
+ ?line {ok,Bytes34} = asn1_wrapper:encode('PrimStrings','Bs7',[1,0,1,0]),
+ ?line {ok,[1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} =
+ asn1_wrapper:decode('PrimStrings','Bs7',Bytes34),
+
+ %%==========================================================
+ %% BsPri ::= [PRIVATE 61] BIT STRING
+ %%==========================================================
+
+ ?line {ok,Bytes41} = asn1_wrapper:encode('PrimStrings','BsPri',45),
+ ?line {ok,[1,0,1,1,0,1]} = asn1_wrapper:decode('PrimStrings','BsPri',lists:flatten(Bytes41)),
+
+ ?line {ok,Bytes42} = asn1_wrapper:encode('PrimStrings','BsPri',211),
+ ?line {ok,[1,1,0,0,1,0,1,1]} = asn1_wrapper:decode('PrimStrings','BsPri',lists:flatten(Bytes42)),
+
+ ?line case asn1_wrapper:erule(Rules) of
+ ber ->
+ ?line {ok,[0,1,0,0,1,0,1,1,1,1,1,0,0,0,1,0,0,1,1]} =
+ asn1_wrapper:decode('PrimStrings','BsPri',[223,61,4,5,75,226,96]),
+
+ ?line {ok,[0,1,0,0,1,0,1,1,1,1,1,0,0,0,1,0,0,1,1]} =
+ asn1_wrapper:decode('PrimStrings','BsPri',[255,61,128,3,4,5,75,226,96,0,0]),
+
+ ?line {ok,[0,1,0,0,1,0,1,1,1,1,1,0,0,0,1,0,0,1,1]} =
+ asn1_wrapper:decode('PrimStrings','BsPri',[255,61,9,3,2,0,75,3,3,5,226,96]),
+
+ ?line {ok,[0,1,0,0,1,0,1,1,1,1,1,0,0,0,1,0,0,1,1]} =
+ asn1_wrapper:decode('PrimStrings','BsPri',[255,61,128,3,2,0,75,3,3,5,226,96,0,0]),
+ ok;
+
+ per ->
+ ok
+ end,
+
+
+
+ %%==========================================================
+ %% BsExpPri ::= [PRIVATE 61] EXPLICIT BIT STRING
+ %%==========================================================
+
+ ?line {ok,Bytes51} = asn1_wrapper:encode('PrimStrings','BsExpPri',45),
+ ?line {ok,[1,0,1,1,0,1]} =
+ asn1_wrapper:decode('PrimStrings','BsExpPri',lists:flatten(Bytes51)),
+
+ ?line {ok,Bytes52} = asn1_wrapper:encode('PrimStrings','BsExpPri',211),
+ ?line {ok,[1,1,0,0,1,0,1,1]} =
+ asn1_wrapper:decode('PrimStrings','BsExpPri',lists:flatten(Bytes52)),
+
+ ?line case asn1_wrapper:erule(Rules) of
+ ber ->
+ ?line {ok,[0,1,0,0,1,0,1,1,1,1,1,0,0,0,1,0,0,1,1]} =
+ asn1_wrapper:decode('PrimStrings','BsExpPri',[255,61,6,3,4,5,75,226,96]),
+ ok;
+
+ per ->
+ ok
+ end,
+
+ %%==========================================================
+ %% TestS ::= BIT STRING {a(0),b(1)} (SIZE (3..8)), test case for OTP-4353
+ %%==========================================================
+
+ ?line {ok,Bytes53} = asn1_wrapper:encode('PrimStrings','TestS',[a]),
+ ?line {ok,[a]} =
+ asn1_wrapper:decode('PrimStrings','TestS',lists:flatten(Bytes53)),
+
+ %%==========================================================
+ %% PersonalStatus ::= BIT STRING {married(0),employed(1),
+ %% veteran(2), collegeGraduate(3)}, test case for OTP-5710
+ %%==========================================================
+
+ ?line {ok,Bytes54} = asn1_wrapper:encode('BitStr','PersonalStatus',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('BitStr','PersonalStatus',Bytes54),
+
+ %%==========================================================
+ %% BS5932 ::= BIT STRING (SIZE (5..MAX))
+ %% test case for OTP-5932
+ %%==========================================================
+ case asn1_wrapper:erule(Rules) of
+ ber ->
+ ?line {error,_} = asn1_wrapper:encode('PrimStrings','BSMAX',
+ [1,0,1]),
+ ?line {ok,Bytes55} =
+ asn1_wrapper:encode('PrimStrings','BSMAX',[1,0,1,0,1]),
+ ?line {ok,[1,0,1,0,1]} =
+ asn1_wrapper:decode('PrimStrings','BSMAX',Bytes55);
+ _ ->
+ ok
+ end,
+
+ %%==========================================================
+ %% BS255 ::= BIT STRING (SIZE (255))
+ %% BS256 ::= BIT STRING (SIZE (256))
+ %% BS1024 ::= BIT STRING (SIZE (1024))
+ %% test case for OTP-7602
+ %%==========================================================
+ BSmaker =
+ fun(_F,S,S,_,Acc) ->
+ Acc;
+ (F,Ix,S,{A,B},Acc) ->
+ F(F,Ix+1,S,{B,A},[A|Acc])
+ end,
+
+ BSList255 = BSmaker(BSmaker,0,255,{1,0},[]),
+ BSList256 = BSmaker(BSmaker,0,256,{1,0},[]),
+ BSList1024 = BSmaker(BSmaker,0,1024,{1,0},[]),
+ ?line {ok,Bytes56} =
+ asn1_wrapper:encode('PrimStrings','BS255',BSList255),
+ ?line {ok,BSList255} =
+ asn1_wrapper:decode('PrimStrings','BS255',Bytes56),
+ ?line {ok,Bytes57} =
+ asn1_wrapper:encode('PrimStrings','BS256',BSList256),
+ ?line {ok,BSList256} =
+ asn1_wrapper:decode('PrimStrings','BS256',Bytes57),
+ ?line {ok,Bytes58} =
+ asn1_wrapper:encode('PrimStrings','BS1024',BSList1024),
+ ?line {ok,BSList1024} =
+ asn1_wrapper:decode('PrimStrings','BS1024',Bytes58).
+
+
+
+bit_string_unnamed(Rules) ->
+ case asn1_wrapper:erule(Rules) of
+ ber ->
+ ok;
+ per ->
+ ?line {ok,Bytes1} =
+ case catch asn1_wrapper:encode('PrimStrings','TransportLayerAddress',[0,1,1,0]) of
+ Ret = {ok,_} -> Ret;
+ Err ->
+ Config = file:consult(test_config),
+ ?line OutDir = ?config(priv_dir,Config),
+ MyOut = "/home/bertil/daily_build",
+ file:copy(filename:join([OutDir,"PrimStrings.erl"]),
+ filename:join([MyOut,"PrimStrings.erl"])),
+ file:copy(filename:join([OutDir,"PrimStrings.beam"]),
+ filename:join([MyOut,"PrimStrings.beam"])),
+ file:copy(code:which(asn1rt_per_v1),
+ filename:join([MyOut,"asn1rt_per_v1.beam"])),
+ file:copy(filename:join([code:lib_dir(asn1),src,"asn1rt_per_v1.erl"]),filename:join([MyOut,"asn1rt_per_v1.erl"])),
+ io:format("Err: ~p~n",[Err]),
+ Err
+ end,
+ ?line {ok,[0,1,1,0]} = asn1_wrapper:decode('PrimStrings','TransportLayerAddress',lists:flatten(Bytes1))
+ end.
+
+octet_string(Rules) ->
+
+ %%==========================================================
+ %% Os ::= OCTET STRING
+ %%==========================================================
+
+ ?line case asn1_wrapper:erule(Rules) of
+ ber ->
+ ?line {ok,"Jones"} =
+ asn1_wrapper:decode('PrimStrings','Os',[4,5,16#4A,16#6F,16#6E,16#65,16#73]),
+
+ ?line {ok,"Jones"} =
+ asn1_wrapper:decode('PrimStrings','Os',[36,9,4,3,16#4A,16#6F,16#6E,4,2,16#65,16#73]),
+
+ ?line {ok,"Jones"} =
+ asn1_wrapper:decode('PrimStrings','Os',[36,128,4,3,16#4A,16#6F,16#6E,4,2,16#65,16#73,0,0]),
+ ok;
+
+ per ->
+ ok
+ end,
+
+
+
+ ?line {ok,Bytes4} =
+ asn1_wrapper:encode('PrimStrings','Os',[47,23,99,255,1]),
+ ?line {ok,[47,23,99,255,1]} = asn1_wrapper:decode('PrimStrings','Os',lists:flatten(Bytes4)),
+
+ ?line {ok,Bytes5} =
+ asn1_wrapper:encode('PrimStrings','OsCon',[47,23,99,255,1]),
+ ?line {ok,[47,23,99,255,1]} = asn1_wrapper:decode('PrimStrings','OsCon',lists:flatten(Bytes5)),
+
+ ?line {ok,Bytes6} =
+ asn1_wrapper:encode('PrimStrings','OsPri',[47,23,99,255,1]),
+ ?line {ok,[47,23,99,255,1]} = asn1_wrapper:decode('PrimStrings','OsPri',lists:flatten(Bytes6)),
+
+ ?line {ok,Bytes7} =
+ asn1_wrapper:encode('PrimStrings','OsApp',[47,23,99,255,1]),
+ ?line {ok,[47,23,99,255,1]} = asn1_wrapper:decode('PrimStrings','OsApp',lists:flatten(Bytes7)),
+
+ ?line {ok,Bytes8} =
+ asn1_wrapper:encode('PrimStrings','OsExpCon',[47,23,99,255,1]),
+ ?line {ok,[47,23,99,255,1]} = asn1_wrapper:decode('PrimStrings','OsExpCon',lists:flatten(Bytes8)),
+
+ ?line {ok,Bytes9} =
+ asn1_wrapper:encode('PrimStrings','OsExpPri',[47,23,99,255,1]),
+ ?line {ok,[47,23,99,255,1]} = asn1_wrapper:decode('PrimStrings','OsExpPri',lists:flatten(Bytes9)),
+
+ ?line {ok,Bytes10} =
+ asn1_wrapper:encode('PrimStrings','OsExpApp',[47,23,99,255,1]),
+ ?line {ok,[47,23,99,255,1]} = asn1_wrapper:decode('PrimStrings','OsExpApp',lists:flatten(Bytes10)),
+
+ ?line {ok,Bytes11} =
+ asn1_wrapper:encode('PrimStrings','Os',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','Os',lists:flatten(Bytes11)),
+
+ ?line {ok,Bytes12} =
+ asn1_wrapper:encode('PrimStrings','OsApp',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','OsApp',lists:flatten(Bytes12)),
+
+ ?line {ok,Bytes13} =
+ asn1_wrapper:encode('PrimStrings','OsExpApp',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','OsExpApp',lists:flatten(Bytes13)),
+
+
+
+
+
+
+
+ OsR = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
+
+ ?line {ok,Bytes21} =
+ asn1_wrapper:encode('PrimStrings','Os',OsR),
+ ?line {ok,Os1} = asn1_wrapper:decode('PrimStrings','Os',lists:flatten(Bytes21)),
+ ?line Os1 = OsR,
+ ?line {ok,Bytes22} =
+ asn1_wrapper:encode('PrimStrings','OsCon',OsR),
+ ?line {ok,Os2} = asn1_wrapper:decode('PrimStrings','OsCon',lists:flatten(Bytes22)),
+ ?line Os2 = OsR,
+ ?line {ok,Bytes23} =
+ asn1_wrapper:encode('PrimStrings','OsExpApp',OsR),
+ ?line {ok,Os3} = asn1_wrapper:decode('PrimStrings','OsExpApp',lists:flatten(Bytes23)),
+ ?line Os3 = OsR,
+
+
+
+ ?line case asn1_wrapper:erule(Rules) of
+ ber ->
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','OsExpApp',[127,62,7,4,5,16#4A,16#6F,16#6E,16#65,16#73]),
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','OsExpApp',[127,62,11,36,9,4,3,16#4A,16#6F,16#6E,4,2,16#65,16#73]),
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','OsExpApp',[127,62,13,36,128,4,3,16#4A,16#6F,16#6E,4,2,16#65,16#73,0,0]),
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','OsExpApp',[127,62,128,36,128,4,3,16#4A,16#6F,16#6E,4,2,16#65,16#73,0,0,0,0]),
+ ?line {ok,"JonesJones"} = asn1_wrapper:decode('PrimStrings','OsExpApp',[127,62,128,36,128,4,3,16#4A,16#6F,16#6E,4,2,16#65,16#73,0,0,36,128,4,3,16#4A,16#6F,16#6E,4,2,16#65,16#73,0,0,0,0]),
+ ok;
+
+ per ->
+ ok
+ end,
+
+
+ ok.
+
+
+
+
+
+numeric_string(Rules) ->
+
+ %%==========================================================
+ %% Ns ::= NumericString
+ %%==========================================================
+
+ ?line {ok,BytesNs2} = asn1_wrapper:encode('PrimStrings','Ns',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','Ns',lists:flatten(BytesNs2)),
+
+ ?line case asn1_wrapper:erule(Rules) of
+ ber ->
+ ?line {ok,BytesNs1} = asn1_wrapper:encode('PrimStrings','Ns',[48,49,32,51,52]),
+ ?line {ok,[48,49,32,51,52]} = asn1_wrapper:decode('PrimStrings','Ns',lists:flatten(BytesNs1)),
+
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','Ns',[16#12,5,16#4A,16#6F,16#6E,16#65,16#73]),
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','Ns',[16#32,9,18,3,16#4A,16#6F,16#6E,18,2,16#65,16#73]),
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','Ns',[16#32,128,18,3,16#4A,16#6F,16#6E,18,2,16#65,16#73,0,0]),
+ ok;
+
+ per ->
+ ?line {ok,BytesNs1} = asn1_wrapper:encode('PrimStrings','Ns',[48,49,32,51,52]),
+ ?line {ok,"01 34"} = asn1_wrapper:decode('PrimStrings','Ns',lists:flatten(BytesNs1)),
+ ok
+ end,
+
+
+
+
+ %%==========================================================
+ %% NsCon ::= [70] NumericString
+ %%==========================================================
+
+ ?line {ok,BytesNs12} = asn1_wrapper:encode('PrimStrings','NsCon',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','NsCon',lists:flatten(BytesNs12)),
+
+
+
+ ?line case asn1_wrapper:erule(Rules) of
+ ber ->
+ ?line {ok,BytesNs11} = asn1_wrapper:encode('PrimStrings','NsCon',[48,49,32,51,52]),
+ ?line {ok,[48,49,32,51,52]} = asn1_wrapper:decode('PrimStrings','NsCon',lists:flatten(BytesNs11)),
+
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','NsCon',[16#9F,16#46,5,16#4A,16#6F,16#6E,16#65,16#73]),
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','NsCon',[16#BF,16#46,9,18,3,16#4A,16#6F,16#6E,18,2,16#65,16#73]),
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','NsCon',[16#BF,16#46,128,18,3,16#4A,16#6F,16#6E,18,2,16#65,16#73,0,0]),
+ ok;
+
+ per ->
+ ?line {ok,BytesNs11} = asn1_wrapper:encode('PrimStrings','NsCon',[48,49,32,51,52]),
+ ?line {ok,"01 34"} = asn1_wrapper:decode('PrimStrings','NsCon',lists:flatten(BytesNs11)),
+ ok
+ end,
+
+
+
+ %%==========================================================
+ %% NsExpCon ::= [71] EXPLICIT NumericString
+ %%==========================================================
+
+ ?line {ok,BytesNs22} = asn1_wrapper:encode('PrimStrings','NsExpCon',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','NsExpCon',lists:flatten(BytesNs22)),
+
+
+
+ ?line case asn1_wrapper:erule(Rules) of
+ ber ->
+ ?line {ok,BytesNs21} = asn1_wrapper:encode('PrimStrings','NsExpCon',[48,49,32,51,52]),
+ ?line {ok,[48,49,32,51,52]} = asn1_wrapper:decode('PrimStrings','NsExpCon',lists:flatten(BytesNs21)),
+
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','NsExpCon',[16#BF,16#47,16#07,16#12,16#05,16#4A,16#6F,16#6E,16#65,16#73]),
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','NsExpCon',[16#BF,16#47,11,16#32,9,18,3,16#4A,16#6F,16#6E,18,2,16#65,16#73]),
+ ?line {ok,"Jones"} = asn1_wrapper:decode('PrimStrings','NsExpCon',[16#BF,16#47,128,16#32,128,18,3,16#4A,16#6F,16#6E,18,2,16#65,16#73,0,0,0,0]),
+ ?line {ok,"JonesJones"} = asn1_wrapper:decode('PrimStrings','NsExpCon',[16#BF,16#47,26,16#32,128,18,3,16#4A,16#6F,16#6E,18,2,16#65,16#73,0,0,16#32,128,18,3,16#4A,16#6F,16#6E,18,2,16#65,16#73,0,0]),
+ ?line {ok,"JonesJones"} = asn1_wrapper:decode('PrimStrings','NsExpCon',[16#BF,16#47,128,16#32,128,18,3,16#4A,16#6F,16#6E,18,2,16#65,16#73,0,0,16#32,128,18,3,16#4A,16#6F,16#6E,18,2,16#65,16#73,0,0,0,0]),
+ ok;
+
+ per ->
+ ?line {ok,BytesNs21} = asn1_wrapper:encode('PrimStrings','NsExpCon',[48,49,32,51,52]),
+ ?line {ok,"01 34"} = asn1_wrapper:decode('PrimStrings','NsExpCon',lists:flatten(BytesNs21)),
+ ok
+ end,
+
+ ok.
+
+
+
+
+
+other_strings(_Rules) ->
+
+ %%==========================================================
+ %% Ps ::= PrintableString
+ %%==========================================================
+
+ ?line {ok,BytesPs1} = asn1_wrapper:encode('PrimStrings','Ps',[47,23,99,75,47]),
+ ?line {ok,[47,23,99,75,47]} =
+ asn1_wrapper:decode('PrimStrings','Ps',lists:flatten(BytesPs1)),
+
+ ?line {ok,BytesPs2} = asn1_wrapper:encode('PrimStrings','Ps',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','Ps',lists:flatten(BytesPs2)),
+
+
+
+ %%==========================================================
+ %% Vis ::= VisibleString
+ %%==========================================================
+
+ ?line {ok,BytesVis1} = asn1_wrapper:encode('PrimStrings','Vis',[47,23,99,75,47]),
+ ?line {ok,[47,23,99,75,47]} =
+ asn1_wrapper:decode('PrimStrings','Vis',lists:flatten(BytesVis1)),
+
+ ?line {ok,BytesVis2} = asn1_wrapper:encode('PrimStrings','Vis',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','Vis',lists:flatten(BytesVis2)),
+
+
+
+ %%==========================================================
+ %% IA5 ::= IA5String
+ %%==========================================================
+
+ ?line {ok,BytesIA51} = asn1_wrapper:encode('PrimStrings','IA5',[47,23,99,75,47]),
+ ?line {ok,[47,23,99,75,47]} =
+ asn1_wrapper:decode('PrimStrings','IA5',lists:flatten(BytesIA51)),
+
+ ?line {ok,BytesIA52} = asn1_wrapper:encode('PrimStrings','IA5',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','IA5',lists:flatten(BytesIA52)),
+
+
+ IA5_1 = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
+
+ ?line {ok,BytesIA53} = asn1_wrapper:encode('PrimStrings','IA5',IA5_1),
+ ?line {ok,IA5_1r} = asn1_wrapper:decode('PrimStrings','IA5',lists:flatten(BytesIA53)),
+ ?line IA5_1 = IA5_1r,
+
+
+
+
+ ok.
+
+
+more_strings(_Rules) ->
+ %%==========================================================
+ %% Ts ::= TeletexString
+ %%==========================================================
+
+ ?line {ok,BytesTs1} = asn1_wrapper:encode('PrimStrings','Ts',[47,23,99,75,47]),
+ ?line {ok,[47,23,99,75,47]} =
+ asn1_wrapper:decode('PrimStrings','Ts',lists:flatten(BytesTs1)),
+
+ ?line {ok,BytesTs2} = asn1_wrapper:encode('PrimStrings','Ts',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','Ts',lists:flatten(BytesTs2)),
+
+
+
+ %%==========================================================
+ %% Vxs ::= VideotexString
+ %%==========================================================
+
+ ?line {ok,BytesVxs1} = asn1_wrapper:encode('PrimStrings','Vxs',[47,23,99,75,47]),
+ ?line {ok,[47,23,99,75,47]} =
+ asn1_wrapper:decode('PrimStrings','Vxs',lists:flatten(BytesVxs1)),
+
+ ?line {ok,BytesVxs2} = asn1_wrapper:encode('PrimStrings','Vxs',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','Vxs',lists:flatten(BytesVxs2)),
+
+
+
+ %%==========================================================
+ %% Grs ::= GraphicString
+ %%==========================================================
+
+ ?line {ok,BytesGrs1} = asn1_wrapper:encode('PrimStrings','Grs',[47,23,99,75,47]),
+ ?line {ok,[47,23,99,75,47]} =
+ asn1_wrapper:decode('PrimStrings','Grs',lists:flatten(BytesGrs1)),
+
+ ?line {ok,BytesGrs2} = asn1_wrapper:encode('PrimStrings','Grs',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','Grs',lists:flatten(BytesGrs2)),
+
+
+ %%==========================================================
+ %% ODesc ::= ObjectDescriptor, test case for OTP-4161
+ %%==========================================================
+
+ ?line {ok,BytesODesc1} = asn1_wrapper:encode('PrimStrings','ODesc',[79,98,106,101,99,116,68,101,115,99,114,105,112,116,111,114]),
+ ?line {ok,[79,98,106,101,99,116,68,101,115,99,114,105,112,116,111,114]} =
+ asn1_wrapper:decode('PrimStrings','ODesc',lists:flatten(BytesODesc1)),
+
+ ?line {ok,BytesODesc2} = asn1_wrapper:encode('PrimStrings','ODesc',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','ODesc',lists:flatten(BytesODesc2)),
+
+ %%==========================================================
+ %% Ges ::= GeneralString
+ %%==========================================================
+
+ ?line {ok,BytesGes1} = asn1_wrapper:encode('PrimStrings','Ges',[47,23,99,75,47]),
+ ?line {ok,[47,23,99,75,47]} =
+ asn1_wrapper:decode('PrimStrings','Ges',lists:flatten(BytesGes1)),
+
+ ?line {ok,BytesGes2} = asn1_wrapper:encode('PrimStrings','Ges',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','Ges',lists:flatten(BytesGes2)),
+
+ ok.
+
+
+
+universal_string(Rules) ->
+
+
+ %%==========================================================
+ %% Us ::= UniversalString
+ %%==========================================================
+
+ ?line {ok,Bytes1} =
+ asn1_wrapper:encode('PrimStrings','Us',[{47,23,99,47},{0,0,55,66}]),
+ ?line {ok,[{47,23,99,47},{0,0,55,66}]} =
+ asn1_wrapper:decode('PrimStrings','Us',lists:flatten(Bytes1)),
+
+ ?line {ok,Bytes2} =
+ asn1_wrapper:encode('PrimStrings','Us',[{47,23,99,255},{0,0,0,201}]),
+ ?line {ok,[{47,23,99,255},201]} =
+ asn1_wrapper:decode('PrimStrings','Us',lists:flatten(Bytes2)),
+
+ ?line {ok,Bytes3} = asn1_wrapper:encode('PrimStrings','Us',"Universal String"),
+ ?line {ok,"Universal String"} =
+ asn1_wrapper:decode('PrimStrings','Us',lists:flatten(Bytes3)),
+
+ ?line {ok,Bytes4} = asn1_wrapper:encode('PrimStrings','Us',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','Us',lists:flatten(Bytes4)),
+
+ ?line {ok,Bytes5} = asn1_wrapper:encode('PrimStrings','Us',[{47,23,99,47}]),
+ ?line {ok,[{47,23,99,47}]} =
+ asn1_wrapper:decode('PrimStrings','Us',lists:flatten(Bytes5)),
+
+
+ ?line case asn1_wrapper:erule(Rules) of
+ ber ->
+
+ ?line {ok,[{47,23,99,255},{0,0,2,201}]} =
+ asn1_wrapper:decode('PrimStrings','Us',lists:flatten([16#3C,12,28,4,47,23,99,255,28,4,0,0,2,201])),
+ ?line {ok,[{47,23,99,255},{0,0,2,201}]} =
+ asn1_wrapper:decode('PrimStrings','Us',lists:flatten([16#3C,16#80,28,4,47,23,99,255,28,4,0,0,2,201,0,0]));
+ _ ->
+ ok
+ end,
+
+
+ Us1 = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
+ ?line {ok,Bytes15} = asn1_wrapper:encode('PrimStrings','IA5',Us1),
+ ?line {ok,Us1r} = asn1_wrapper:decode('PrimStrings','IA5',lists:flatten(Bytes15)),
+ ?line Us1 = Us1r,
+
+
+
+%%==========================================================
+%% UsCon ::= [70] UniversalString
+%%==========================================================
+
+ ?line {ok,Bytes11} =
+ asn1_wrapper:encode('PrimStrings','UsCon',[{47,23,99,255},{0,0,2,201}]),
+ ?line {ok,[{47,23,99,255},{0,0,2,201}]} =
+ asn1_wrapper:decode('PrimStrings','UsCon',lists:flatten(Bytes11)),
+
+ ?line {ok,Bytes12} =
+ asn1_wrapper:encode('PrimStrings','UsCon',[{47,23,99,255},{0,0,0,201}]),
+ ?line {ok,[{47,23,99,255},201]} =
+ asn1_wrapper:decode('PrimStrings','UsCon',lists:flatten(Bytes12)),
+
+ ?line {ok,Bytes13} = asn1_wrapper:encode('PrimStrings','UsCon',"Universal String"),
+ ?line {ok,"Universal String"} =
+ asn1_wrapper:decode('PrimStrings','UsCon',lists:flatten(Bytes13)),
+
+ ?line {ok,Bytes14} = asn1_wrapper:encode('PrimStrings','UsCon',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','UsCon',lists:flatten(Bytes14)),
+
+ ?line case asn1_wrapper:erule(Rules) of
+ ber ->
+ ?line {ok,[{47,23,99,255},{0,0,2,201}]} =
+ asn1_wrapper:decode('PrimStrings','UsCon',lists:flatten([16#BF,16#46,12,28,4,47,23,99,255,28,4,0,0,2,201])),
+ ?line {ok,[{47,23,99,255},{0,0,2,201}]} =
+ asn1_wrapper:decode('PrimStrings','UsCon',lists:flatten([16#BF,16#46,16#80,28,4,47,23,99,255,28,4,0,0,2,201,0,0]));
+ _ -> ok
+ end,
+
+
+
+%%==========================================================
+%% UsExpCon ::= [71] EXPLICIT UniversalString
+%%==========================================================
+
+ ?line {ok,Bytes21} =
+ asn1_wrapper:encode('PrimStrings','UsExpCon',[{47,23,99,255},{0,0,2,201}]),
+ ?line {ok,[{47,23,99,255},{0,0,2,201}]} =
+ asn1_wrapper:decode('PrimStrings','UsExpCon',lists:flatten(Bytes21)),
+
+ ?line {ok,Bytes22} =
+ asn1_wrapper:encode('PrimStrings','UsExpCon',[{47,23,99,255},{0,0,0,201}]),
+ ?line {ok,[{47,23,99,255},201]} =
+ asn1_wrapper:decode('PrimStrings','UsExpCon',lists:flatten(Bytes22)),
+
+ ?line {ok,Bytes23} =
+ asn1_wrapper:encode('PrimStrings','UsExpCon',"Universal String"),
+ ?line {ok,"Universal String"} =
+ asn1_wrapper:decode('PrimStrings','UsExpCon',lists:flatten(Bytes23)),
+
+ ?line {ok,Bytes24} =
+ asn1_wrapper:encode('PrimStrings','UsExpCon',[]),
+ ?line {ok,[]} =
+ asn1_wrapper:decode('PrimStrings','UsExpCon',lists:flatten(Bytes24)),
+
+ ?line case asn1_wrapper:erule(Rules) of
+ ber ->
+ ?line {ok,[{47,23,99,255},{0,0,2,201}]} =
+ asn1_wrapper:decode('PrimStrings','UsExpCon',lists:flatten([16#BF,16#47,14,60,12,28,4,47,23,99,255,28,4,0,0,2,201])),
+ ?line {ok,[{47,23,99,255},{0,0,2,201}]} =
+ asn1_wrapper:decode('PrimStrings','UsExpCon',lists:flatten([16#BF,16#47,16,60,16#80,28,4,47,23,99,255,28,4,0,0,2,201,0,0]));
+ _ -> ok
+ end,
+
+
+ok.
+
+
+
+
+
+bmp_string(_Rules) ->
+
+ %%==========================================================
+ %% BMP ::= BMPString
+ %%==========================================================
+
+ ?line {ok,Bytes1} =
+ asn1_wrapper:encode('PrimStrings','BMP',[{0,0,99,48},{0,0,2,201}]),
+ ?line {ok,[{0,0,99,48},{0,0,2,201}]} =
+ asn1_wrapper:decode('PrimStrings','BMP',lists:flatten(Bytes1)),
+
+ ?line {ok,Bytes2} =
+ asn1_wrapper:encode('PrimStrings','BMP',[{0,0,0,48},{0,0,2,201}]),
+ ?line {ok,[48,{0,0,2,201}]} =
+ asn1_wrapper:decode('PrimStrings','BMP',lists:flatten(Bytes2)),
+
+ ?line {ok,Bytes3} = asn1_wrapper:encode('PrimStrings','BMP',"BMP String"),
+ ?line {ok,"BMP String"} =
+ asn1_wrapper:decode('PrimStrings','BMP',lists:flatten(Bytes3)),
+
+ ?line {ok,Bytes4} = asn1_wrapper:encode('PrimStrings','BMP',[]),
+ ?line {ok,[]} = asn1_wrapper:decode('PrimStrings','BMP',lists:flatten(Bytes4)),
+
+
+ BMP1 = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
+ ?line {ok,Bytes5} = asn1_wrapper:encode('PrimStrings','BMP',BMP1),
+ ?line {ok,BMP1r} = asn1_wrapper:decode('PrimStrings','BMP',lists:flatten(Bytes5)),
+ ?line BMP1 = BMP1r,
+
+
+ ok.
+
+
+
+
+
+times(_Rules) ->
+
+ %%==========================================================
+ %% Gt ::= GeneralizedTime
+ %%==========================================================
+
+ ?line {ok,Bytes1} = asn1_wrapper:encode('PrimStrings','Gt',"19970923110723.2"),
+ ?line {ok,"19970923110723.2"} =
+ asn1_wrapper:decode('PrimStrings','Gt',lists:flatten(Bytes1)),
+
+ ?line {ok,Bytes2} = asn1_wrapper:encode('PrimStrings','Gt',"19970923110723.2Z"),
+ ?line {ok,"19970923110723.2Z"} =
+ asn1_wrapper:decode('PrimStrings','Gt',lists:flatten(Bytes2)),
+
+ ?line {ok,Bytes3} = asn1_wrapper:encode('PrimStrings','Gt',"19970923110723.2-0500"),
+ ?line {ok,"19970923110723.2-0500"} =
+ asn1_wrapper:decode('PrimStrings','Gt',lists:flatten(Bytes3)),
+
+
+
+
+
+
+
+ %%==========================================================
+ %% UTC ::= UTCTime
+ %%==========================================================
+
+ ?line {ok,Bytes11} = asn1_wrapper:encode('PrimStrings','UTC',"9709211107Z"),
+ ?line {ok,"9709211107Z"} =
+ asn1_wrapper:decode('PrimStrings','UTC',lists:flatten(Bytes11)),
+
+ ?line {ok,Bytes12} = asn1_wrapper:encode('PrimStrings','UTC',"9709211107-0500"),
+ ?line {ok,"9709211107-0500"} =
+ asn1_wrapper:decode('PrimStrings','UTC',lists:flatten(Bytes12)),
+
+ ok.
+
+
+utf8_string(_Rules) ->
+
+ %%==========================================================
+ %% UTF ::= UTF8String
+ %%==========================================================
+
+ %% test values in all ranges
+
+ ValLbR1 = [16#00],
+ ValUbR1 = [16#7f],
+ ValLbR2 = [16#80],
+ ValUbR2 = [16#7ff],
+ ValLbR3 = [16#800],
+ ValUbR3 = [16#ffff],
+ ValLbR4 = [16#10000],
+ ValUbR4 = [16#1fffff],
+ ValLbR5 = [16#200000],
+ ValUbR5 = [16#3ffffff],
+ ValLbR6 = [16#4000000],
+ ValUbR6 = [16#7fffffff],
+
+ ?line {ok,UTF8L1} = asn1rt:utf8_list_to_binary(ValLbR1),
+ ?line {ok,Bytes1} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L1),
+ ?line {ok,Bin1} = asn1_wrapper:decode('PrimStrings','UTF',Bytes1),
+ ?line {ok,ValLbR1} = wrapper_utf8_binary_to_list(Bin1),
+
+ ?line {ok,UTF8L2} = asn1rt:utf8_list_to_binary(ValUbR1),
+ ?line {ok,Bytes2} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L2),
+ ?line {ok,Bin2} = asn1_wrapper:decode('PrimStrings','UTF',Bytes2),
+ ?line {ok,ValUbR1} = wrapper_utf8_binary_to_list(Bin2),
+
+ ?line {ok,UTF8L3} = asn1rt:utf8_list_to_binary(ValLbR2),
+ ?line {ok,Bytes3} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L3),
+ ?line {ok,Bin3} = asn1_wrapper:decode('PrimStrings','UTF',Bytes3),
+ ?line {ok,ValLbR2} = wrapper_utf8_binary_to_list(Bin3),
+
+ ?line {ok,UTF8L4} = asn1rt:utf8_list_to_binary(ValUbR2),
+ ?line {ok,Bytes4} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L4),
+ ?line {ok,Bin4} = asn1_wrapper:decode('PrimStrings','UTF',Bytes4),
+ ?line {ok,ValUbR2} = wrapper_utf8_binary_to_list(Bin4),
+
+ ?line {ok,UTF8L5} = asn1rt:utf8_list_to_binary(ValLbR3),
+ ?line {ok,Bytes5} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L5),
+ ?line {ok,Bin5} = asn1_wrapper:decode('PrimStrings','UTF',Bytes5),
+ ?line {ok,ValLbR3} = wrapper_utf8_binary_to_list(Bin5),
+
+ ?line {ok,UTF8L6} = asn1rt:utf8_list_to_binary(ValUbR3),
+ ?line {ok,Bytes6} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L6),
+ ?line {ok,Bin6} = asn1_wrapper:decode('PrimStrings','UTF',Bytes6),
+ ?line {ok,ValUbR3} = wrapper_utf8_binary_to_list(Bin6),
+
+ ?line {ok,UTF8L7} = asn1rt:utf8_list_to_binary(ValLbR4),
+ ?line {ok,Bytes7} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L7),
+ ?line {ok,Bin7} = asn1_wrapper:decode('PrimStrings','UTF',Bytes7),
+ ?line {ok,ValLbR4} = wrapper_utf8_binary_to_list(Bin7),
+
+ ?line {ok,UTF8L8} = asn1rt:utf8_list_to_binary(ValUbR4),
+ ?line {ok,Bytes8} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L8),
+ ?line {ok,Bin8} = asn1_wrapper:decode('PrimStrings','UTF',Bytes8),
+ ?line {ok,ValUbR4} = wrapper_utf8_binary_to_list(Bin8),
+
+ ?line {ok,UTF8L9} = asn1rt:utf8_list_to_binary(ValLbR5),
+ ?line {ok,Bytes9} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L9),
+ ?line {ok,Bin9} = asn1_wrapper:decode('PrimStrings','UTF',Bytes9),
+ ?line {ok,ValLbR5} = wrapper_utf8_binary_to_list(Bin9),
+
+ ?line {ok,UTF8L10} = asn1rt:utf8_list_to_binary(ValUbR5),
+ ?line {ok,Bytes10} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L10),
+ ?line {ok,Bin10} = asn1_wrapper:decode('PrimStrings','UTF',Bytes10),
+ ?line {ok,ValUbR5} = wrapper_utf8_binary_to_list(Bin10),
+
+ ?line {ok,UTF8L11} = asn1rt:utf8_list_to_binary(ValLbR6),
+ ?line {ok,Bytes11} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L11),
+ ?line {ok,Bin11} = asn1_wrapper:decode('PrimStrings','UTF',Bytes11),
+ ?line {ok,ValLbR6} = wrapper_utf8_binary_to_list(Bin11),
+
+ ?line {ok,UTF8L12} = asn1rt:utf8_list_to_binary(ValUbR6),
+ ?line {ok,Bytes12} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L12),
+ ?line {ok,Bin12} = asn1_wrapper:decode('PrimStrings','UTF',Bytes12),
+ ?line {ok,ValUbR6} = wrapper_utf8_binary_to_list(Bin12),
+
+ LVal = ValLbR1++ValUbR1++ValLbR2++ValUbR2++ValLbR3++ValUbR3++
+ ValLbR4++ValUbR4++ValLbR5++ValUbR5++ValLbR6++ValUbR6,
+ LongVal = LVal++LVal++LVal++LVal++LVal++LVal++LVal++"hello",
+
+ ?line {ok,UTF8L13} = asn1rt:utf8_list_to_binary(LongVal),
+ ?line {ok,Bytes13} = asn1_wrapper:encode('PrimStrings','UTF',UTF8L13),
+ ?line {ok,Bin13} = asn1_wrapper:decode('PrimStrings','UTF',Bytes13),
+ ?line {ok,LongVal} = wrapper_utf8_binary_to_list(Bin13).
+
+wrapper_utf8_binary_to_list(L) when list(L) ->
+ asn1rt:utf8_binary_to_list(list_to_binary(L));
+wrapper_utf8_binary_to_list(B) ->
+ asn1rt:utf8_binary_to_list(B).