aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBjörn Gustavsson <bjorn@erlang.org>2013-06-20 13:04:28 +0200
committerBjörn Gustavsson <bjorn@erlang.org>2013-08-30 10:13:16 +0200
commit2ec69960969799e30a7b287f02c1e3bb252b3254 (patch)
tree992372f46169f4c6f3f26f5ca407e3f8cbc862ff /lib
parent72713a28d5e1bcc22e4be3650504b7ea9dd90b29 (diff)
downloadotp-2ec69960969799e30a7b287f02c1e3bb252b3254.tar.gz
otp-2ec69960969799e30a7b287f02c1e3bb252b3254.tar.bz2
otp-2ec69960969799e30a7b287f02c1e3bb252b3254.zip
SeqOf: Add more tricky SEQUENCE OF tests
Diffstat (limited to 'lib')
-rw-r--r--lib/asn1/test/asn1_SUITE_data/SeqOf.asn139
-rw-r--r--lib/asn1/test/testSeqOf.erl26
2 files changed, 62 insertions, 3 deletions
diff --git a/lib/asn1/test/asn1_SUITE_data/SeqOf.asn1 b/lib/asn1/test/asn1_SUITE_data/SeqOf.asn1
index 888dbe5dd7..670f827f5e 100644
--- a/lib/asn1/test/asn1_SUITE_data/SeqOf.asn1
+++ b/lib/asn1/test/asn1_SUITE_data/SeqOf.asn1
@@ -31,7 +31,43 @@ Seq4 ::= SEQUENCE
seq43 [43] SEQUENCE OF SeqIn DEFAULT {}
}
+Seq5 ::= SEQUENCE {
+ b BOOLEAN,
+ s SEQUENCE SIZE (0..3) OF OCTET STRING (SIZE (0..3)),
+ -- If 's' is empty, 'magic' should not be aligned.
+ magic INTEGER (0..127)
+}
+
+Seq6 ::= SEQUENCE {
+ a SEQUENCE OF INTEGER (0..7),
+ b SEQUENCE (SIZE (0..7)) OF INTEGER (0..7),
+ -- 'magic' should never be aligned.
+ magic INTEGER (0..127)
+}
+Seq7 ::= SEQUENCE {
+ a SEQUENCE OF INTEGER (1..512),
+ b SEQUENCE (SIZE (0..255)) OF INTEGER (1..512),
+ i INTEGER
+}
+
+Seq8 ::= SEQUENCE {
+ sof SEQUENCE (SIZE (0..3)) OF OCTET STRING (SIZE (3)),
+ -- Not aligned here if the size of 'sof' is zero.
+ i INTEGER (0..127)
+}
+
+Seq9 ::= SEQUENCE {
+ b BOOLEAN,
+ s SEQUENCE SIZE (0..3) OF OCTET STRING (SIZE (0..3)),
+ magic INTEGER (0..127)
+}
+
+Seq10 ::= SEQUENCE {
+ b BOOLEAN,
+ s SEQUENCE SIZE (1..3) OF OCTET STRING (SIZE (0..3)),
+ magic INTEGER (0..127)
+}
SeqIn ::= SEQUENCE
{
@@ -50,9 +86,6 @@ SeqCho ::= SEQUENCE OF CHOICE {bool BOOLEAN,
SeqOfInt ::= SEQUENCE OF INTEGER
-
-
-
SeqEmp ::= SEQUENCE
{
seq1 SEQUENCE OF Empty DEFAULT {}
diff --git a/lib/asn1/test/testSeqOf.erl b/lib/asn1/test/testSeqOf.erl
index db537b1478..c50cc27f6f 100644
--- a/lib/asn1/test/testSeqOf.erl
+++ b/lib/asn1/test/testSeqOf.erl
@@ -83,6 +83,32 @@ main(_Rules) ->
roundtrip('Seq4', #'Seq4'{seq43=SeqIn3},
#'Seq4'{seq41=[],seq42=[],
seq43=SeqIn3}),
+
+ roundtrip('Seq5', {'Seq5',true,[],77}),
+ roundtrip('Seq5', {'Seq5',true,[""],77}),
+ roundtrip('Seq5', {'Seq5',true,["a"],77}),
+ roundtrip('Seq5', {'Seq5',true,["ab"],77}),
+ roundtrip('Seq5', {'Seq5',true,["abc"],77}),
+
+ roundtrip('Seq6', {'Seq6',[],[],101}),
+ roundtrip('Seq6', {'Seq6',[],[7],101}),
+ roundtrip('Seq6', {'Seq6',[],[1,7],101}),
+ roundtrip('Seq6', {'Seq6',[1],[],101}),
+ roundtrip('Seq6', {'Seq6',[2],[7],101}),
+ roundtrip('Seq6', {'Seq6',[3],[1,7],101}),
+
+ roundtrip('Seq8', {'Seq8',[],37}),
+
+ roundtrip('Seq9', {'Seq9',true,[],97}),
+ roundtrip('Seq9', {'Seq9',true,[""],97}),
+ roundtrip('Seq9', {'Seq9',true,["x"],97}),
+ roundtrip('Seq9', {'Seq9',true,["xy"],97}),
+ roundtrip('Seq9', {'Seq9',true,["xyz"],97}),
+
+ roundtrip('Seq10', {'Seq10',true,[""],97}),
+ roundtrip('Seq10', {'Seq10',true,["a"],97}),
+ roundtrip('Seq10', {'Seq10',true,["a","b"],97}),
+ roundtrip('Seq10', {'Seq10',true,["a","b","c"],97}),
roundtrip('SeqEmp', #'SeqEmp'{seq1=[#'Empty'{}]}),