aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/test/testDeepTConstr.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2013-09-04 13:27:10 +0200
committerBjörn Gustavsson <[email protected]>2013-09-04 13:27:10 +0200
commit515470a4fe094df8dc6fcaa3b90639b1e19145ce (patch)
treea5fa0c24993620a917aebeea4336ecba48c8e2e9 /lib/asn1/test/testDeepTConstr.erl
parent46779ac9c0ef083488b471379bd4cb501a6d24a0 (diff)
parent93fe50a6e3f685e77a48921273559b6f03b89fb8 (diff)
downloadotp-515470a4fe094df8dc6fcaa3b90639b1e19145ce.tar.gz
otp-515470a4fe094df8dc6fcaa3b90639b1e19145ce.tar.bz2
otp-515470a4fe094df8dc6fcaa3b90639b1e19145ce.zip
Merge branch 'maint'
* maint: (26 commits) genop.tab: Add documentation for many BEAM instructions asn1ct_constucted_per: Directly call asn1ct_gen_per Clean up handling of .asn1db files PER, UPER: Fix encoding/decoding of open types greater than 16K PER, UPER: Optimize table constraints PER, UPER: Optimize encoding using an intermediate format Refactor decoding of components of SEQUENCE OF / SET OF PER,UPER: Get rid of unused 'telltype' argument in decoding functions Optimize the generated encode/2 function UPER: Optimize complete/1 Clean up checking of objects Improve tests of deep table constraints BER: Handle multiple optional SEQUENCE fields with table constraints Test OPTIONAL and DEFAULT for open types PER/UPER: Fix encoding of an object set with multiple inlined constructs Remove broken support for multiple UNIQUE Extend the test for parameterized information objects asn1_SUITE: Remove off-topic (and slow) smp/1 test case SeqOf: Add more tricky SEQUENCE OF tests Clean up handling of extension addition groups ...
Diffstat (limited to 'lib/asn1/test/testDeepTConstr.erl')
-rw-r--r--lib/asn1/test/testDeepTConstr.erl28
1 files changed, 26 insertions, 2 deletions
diff --git a/lib/asn1/test/testDeepTConstr.erl b/lib/asn1/test/testDeepTConstr.erl
index f17dedc043..620b5f3356 100644
--- a/lib/asn1/test/testDeepTConstr.erl
+++ b/lib/asn1/test/testDeepTConstr.erl
@@ -40,8 +40,7 @@ main(_Erule) ->
{any,"DK"},
{final,"NO"}]}},
- {ok,Bytes1} = 'TConstrChoice':encode('FilterItem', Val1),
- {error,Reason} = asn1_wrapper:decode('TConstrChoice','FilterItem',Bytes1),
+ Reason = must_fail('TConstrChoice', 'FilterItem', Val1),
io:format("Reason: ~p~n~n",[Reason]),
{ok,Bytes2} = 'TConstrChoice':encode('FilterItem', Val2),
{ok,Res} = 'TConstrChoice':decode('FilterItem', Bytes2),
@@ -70,6 +69,21 @@ main(_Erule) ->
{'Deeper_a',12,
{'Deeper_a_s',{2,4},42}},
{'Deeper_b',13,{'Type-object1',14,true}}}),
+
+ roundtrip('TConstr', 'Seq3',
+ {'Seq3',
+ {'Seq3_a',42,'TConstr':'id-object1'()},
+ {'Seq3_b',
+ {'Type-object1',-777,true},
+ 12345,
+ {'Seq3_b_bc',12345789,{'Type-object1',-999,true}}}}),
+ roundtrip('TConstr', 'Seq3-Opt',
+ {'Seq3-Opt',
+ {'Seq3-Opt_a',42,'TConstr':'id-object1'()},
+ {'Seq3-Opt_b',
+ {'Type-object1',-777,true},
+ 12345,
+ {'Seq3-Opt_b_bc',12345789,{'Type-object1',-999,true}}}}),
ok.
@@ -77,3 +91,13 @@ roundtrip(M, T, V) ->
{ok,E} = M:encode(T, V),
{ok,V} = M:decode(T, E),
ok.
+
+%% Either encoding or decoding must fail.
+must_fail(M, T, V) ->
+ case M:encode(T, V) of
+ {ok,E} ->
+ {error,Reason} = M:decode(T, E),
+ Reason;
+ {error,Reason} ->
+ Reason
+ end.