aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1
AgeCommit message (Collapse)Author
2013-09-18Remove unused compile() functionsBjörn Gustavsson
2013-09-18asn1_test_lib: Remove unnecessary loading of a compiled ASN.1 specBjörn Gustavsson
asn1ct:compile/2 calls c:c/2 to invoke the compiler and to load the compiled code. That means that there is no need load the module after having invoked the ASN.1 compiler. To make sure that we'll notice if that behavior changes in the future, extend the rtUI/1 test case to verify that the loaded module has the correct encoding rule (if asn1ct:compile/2 would fail to reload the module, the previous encoding rule would be returned). While at it, it also makes sense to test calling M:bit_string_format/0 to ensure that it continues working.
2013-09-18Slightly clean up testX420Björn Gustavsson
2013-09-18asn1_SUITE: Combine most tests that use External.asn1Björn Gustavsson
By combining most tests that use External.asn, we will only need to compile that spec once instead of 11 times. While combining the test cases, make sure to remove the redundant code in testPrimExternal/1 that tests primitive strings in exactly the same way as testPrimString/1. Removing the redundant code shaves off a few seconds of testing time. Keep testSeqExtension/1 as a separate test case, since it is a complicated test case that does hairy stuff to the source files.
2013-09-18asn1ct_gen: Clean up process dictionary after generatingBjörn Gustavsson
Cleanliness.
2013-09-18asn1ct_parser2: Clean the process dictionary after parsingBjörn Gustavsson
Apart from cleanliness, the test suite runs many tests cases in parallel, so it never hurts to reduce the memory pressure.
2013-09-18asn1_SUITE: Remove useless test case testInvokeMod/1Björn Gustavsson
It seems that the original purpose is to test encoding by directly calling the module (as opposed to calling indirectly using asn1rt). That is tested in many other test cases (such as testPrimStrings); thus this test case no longer serves any useful purpose.
2013-09-18asn_SUITE: Fold per_GeneralString/1 into h323testBjörn Gustavsson
The per_GeneralString/1 test case compiles MULTIMEDIA-SYSTEM-CONTROL and then does a single decoding. Save some compilation time by folding the test into the h323test/1 test case.
2013-09-18asn1_SUITE: Remove unused function case_dir/2Björn Gustavsson
2013-09-18asn1_SUITE: Remove useless test_driver_load/1 test caseBjörn Gustavsson
The PER back-end no longer use a driver (or even a NIF), and the test case would not fail if it didn't work because the spawned processed were not linked.
2013-09-16Prepare releaseOTP_R16B02Erlang/OTP
2013-09-09Merge branch 'kenneth/doc_to_dtd/OTP-11193' into maintBjörn-Egil Dahlberg
* kenneth/doc_to_dtd/OTP-11193: Corrections so that the documentation confirms to the DTD Minor correction of xml structure to conform to the DTD
2013-09-03asn1ct_constucted_per: Directly call asn1ct_gen_perBjörn Gustavsson
2013-09-03Clean up handling of .asn1db filesBjörn Gustavsson
There is (differenct) code for reading .asn1db files both in asn1ct and asn1_db. Consolidate the reading into one routine in asn1db. Another problem is that the encoding rule that the .asn1db file was created for is not in the .asn1db, but only in the generated Erlang module. It is much easier and safer to put the encoding rule in the .asn1db file itself. We will also put the version number of the asn1 application into the file, to ensure that we don't use an old .asn1db file that could potentially be incompatible.
2013-09-03PER, UPER: Fix encoding/decoding of open types greater than 16KBjörn Gustavsson
2013-09-03PER, UPER: Optimize table constraintsBjörn Gustavsson
The generated code for table constraints has several problems: * For each object set, a function for getting an encoding or decoding fun is generated, regardless of whether it is actually used. In many specifications, the object set actually used is the union of several other object sets. That means that the code can become a lot bulkier than it would need to be. * The funs are not necessary. The funs just add to the code bloat and generate more unnecessary garbage at run-time. Also, one of the arguments of the fun is the name of the field in the class which is known at compile-time, and the fun for decoding has unused arguments. How to fix the problems: At each call site where an open type should be encoded/decoded, call a specific generated function specialized for the actual object set and the name of the field in the class. When generating the specialized functions, make sure that we re-use a previously generated function if possible.
2013-08-30PER, UPER: Optimize encoding using an intermediate formatBjörn Gustavsson
There are some minor incompatibilities for BIT STRING: {bit,Position} is now only only supported for a named BIT STRING type. Values longer than the maximum size for the BIT STRING type would be truncated silently - they now cause an exception.
2013-08-30Refactor decoding of components of SEQUENCE OF / SET OFBjörn Gustavsson
As a preparation for rewriting handling of table constraints, we must make sure that code for decoding a SEQUENCE OF / SET OF can be be contained in a single clause of a function; thus, we must not output the helper function for decoding of each component directly following the code that follows it. Use asn1ct_func:call_gen/3 to delay outputting the helper function.
2013-08-30PER,UPER: Get rid of unused 'telltype' argument in decoding functionsBjörn Gustavsson
2013-08-30Optimize the generated encode/2 functionBjörn Gustavsson
Use 'try' instead of 'catch', and don't match anything that cannot actually be returned from the generated encoding code.
2013-08-30UPER: Optimize complete/1Björn Gustavsson
2013-08-30Clean up checking of objectsBjörn Gustavsson
2013-08-30Improve tests of deep table constraintsBjörn Gustavsson
2013-08-30BER: Handle multiple optional SEQUENCE fields with table constraintsBjörn Gustavsson
2013-08-30Test OPTIONAL and DEFAULT for open typesBjörn Gustavsson
2013-08-30PER/UPER: Fix encoding of an object set with multiple inlined constructsBjörn Gustavsson
Also extend the test suite with more tests of inlined constructs in object sets.
2013-08-30Remove broken support for multiple UNIQUEBjörn Gustavsson
According to the ASN.1 standard, having multiple UNIQUE in class is allowed. For example: C ::= CLASS { &id1 INTEGER UNIQUE, &id2 INTEGER UNIQUE } In practice, no one uses multiple UNIQUE. The ASN.1 compiler will crash if a class with multiple UNIQUE is used, but the backends have half-hearted support for multiple UNIQUE in that they generate helper functions similar to: getenc_OBJECT_SET(id1, 42) -> fun enc_XXX/3; ... Since we have no plans to implement support for multiple UNIQUE (no one seems to have missed it), simplify the helper functions like this: getenc_OBJECT_SET(42) -> fun enc_XXX/3; ...
2013-08-30Extend the test for parameterized information objectsBjörn Gustavsson
2013-08-30asn1_SUITE: Remove off-topic (and slow) smp/1 test caseBjörn Gustavsson
The smp1/1 test case seems test how well the SMP emulator can parallelize tasks, not any functionality in the asn1 application that is not tested in other tests.
2013-08-30SeqOf: Add more tricky SEQUENCE OF testsBjörn Gustavsson
2013-08-30Clean up handling of extension addition groupsBjörn Gustavsson
Break out the code to a separate function to make it more readable. Also avoid hard-coding the name of the value to use as "Val1" as it may not be true in the future. Instead of using a list comprenhension like this: case [X || X <- [element(5, Val),element(6, Val)], X =/= asn1_NOVALUE] of [] -> ...; _ -> ... end use an orelse chain: case element(5, Val) =/= asn1_NOVALUE orelse element(5, Val) =/= asn1_NOVALUE of false -> ...; true -> ... end
2013-08-30Refactor encoding of REALBjörn Gustavsson
To facilitate optimizing PER encoding using an intermediate format, we must change asn1rtt_real_common:encode_real/1 so that it only returns the encoded binary.
2013-08-30Teach asn1ct_func to dynamically generate run-time functionsBjörn Gustavsson
2013-08-29Corrections so that the documentation confirms to the DTDKenneth Lundin
2013-08-28asn1ct_constructed_per: Simplify gen_enc_line() and friendsBjörn Gustavsson
The first clause of gen_enc_line() allows us to pass in [] as the value for Element; if we modify the only caller that passes [] to pass an actual expression we can remove the first clause. Furthermore, since the Pos argument was only used by the first clause, we can remove the Pos argument. We can also remove the first clause in gen_enc_component_optional(), since the code in its body is exactly the same as in the following clause.
2013-08-28Remove code for handling an object/object set reference in SEQUENCEBjörn Gustavsson
An field in a class that references an object or object set is not allowed to be referenced directly from within a SEQUENCE.
2013-08-26Encode SEQUENCE OF / SET OF using a list comprehensionBjörn Gustavsson
Using a list comprehension will simplify both the code generator and the generated code. Also, if there is an ObjFun argument in the host function, the BEAM compiler will make sure it is only passed to the generated list comprehension function if it is actually used.
2013-08-26asn1ct_imm: Break out the rule for string alignmentBjörn Gustavsson
Break out the the rules for determining whether a string should be in aligned so that it can be reused for encoding.
2013-06-17Prepare releaseOTP_R16B01Erlang/OTP
2013-06-12Update copyright yearsBjörn-Egil Dahlberg
2013-06-10Merge branch 'bjorn/asn1/not-small-bugs/OTP-11153' into maintBjörn Gustavsson
* bjorn/asn1/not-small-bugs/OTP-11153: PER/UPER: Correct decoding of SEQUENCEs with more than 64 extensions testConstraints: Improve tests of semi-constrained INTEGERs Test ENUMERATED with many extended values UPER: Correct encoding of ENUMERATED with more than 63 extended values Add asn1_test_lib:hex_to_bin/1
2013-06-08PER/UPER: Correct decoding of SEQUENCEs with more than 64 extensionsBjörn Gustavsson
2013-06-08testConstraints: Improve tests of semi-constrained INTEGERsBjörn Gustavsson
Make sure that semi-constrained integers are correctly encoded in the mininum number of bytes. (The roundtrip test does not catch problems with non-minimal encodings.) Also test huge values that must be encoded in 128 or 256 bytes.
2013-06-08Test ENUMERATED with many extended valuesBjörn Gustavsson
2013-06-07PER, UPER: Fix record name mismatch between HRL file and decoding codeBjörn Gustavsson
When a SEQUENCE was defined inline inside extension addition group like this: InlinedSeq ::= SEQUENCE { ..., [[ s SEQUENCE { a INTEGER, b BOOLEAN } ]] } the decoding code would return the contents of the SEQUENCE in a record named 'InlinedSeq_ExtAddGroup1_s', while the record definition in the generated HRL file would be 'InlinedSeq_s'. Since there is no reason to use the longer record name (no risk for ambiguity), correct the name in the decoding code.
2013-06-07UPER: Correct encoding of ENUMERATED with more than 63 extended valuesBjörn Gustavsson
2013-06-07Add asn1_test_lib:hex_to_bin/1Björn Gustavsson
2013-06-03testSeqOf: Test constrained, extensible sizesBjörn Gustavsson
2013-05-31Clean up testSeqOfBjörn Gustavsson
2013-05-31Extend tests cases for BIT STRINGBjörn Gustavsson