aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/test/asn1_SUITE.erl
AgeCommit message (Collapse)Author
2016-03-03asn1_SUITE_value: Don't test the LDAP moduleBjörn Gustavsson
asn1ct:test(Mod) will generate sample values for data types in an ASN.1 modules. The following definition from LDAP can cause problems for asn1ct:test/1: Filter ::= CHOICE { and [0] SET SIZE (1..MAX) OF filter Filter, or [1] SET SIZE (1..MAX) OF filter Filter, not [2] Filter, equalityMatch [3] AttributeValueAssertion, substrings [4] SubstringFilter, greaterOrEqual [5] AttributeValueAssertion, lessOrEqual [6] AttributeValueAssertion, present [7] AttributeDescription, approxMatch [8] AttributeValueAssertion, extensibleMatch [9] MatchingRuleAssertion, ... } If we were unlucky (which we were on some computers), the construction of sample values would not terminate. Eliminate the problem for now by not testing the LDAP module. This workaround should be removed when we have added some limitation to the recursion in asn1ct_value when generating values.
2015-06-18Change license text to APLv2Bruce Yinhe
2015-01-12Add a test case for EXTENSIBILITY IMPLIEDBjörn Gustavsson
2015-01-12asn1ct_parser2: Clean up error handling and reportingBjörn Gustavsson
Errors were reported using a throw like this: throw({asn1_error,{get_line(hd(Tokens)),get(asn1_module), [got,get_token(hd(Tokens)),expected,typereference]}}). The attempt to tell the user what was expected was often mis-leading. It is time-consuming and non-trival to provide correct information of what is expected. Therefore, we will not even try. Instead we will spend more effort to report the token where the error was discovered. We will replace each throw with a function call: parse_error(Tokens). Also add the syntax_SUITE test suite to test error reporting and to cover all error reporting code. Remove the old c_syntax/1 test case. Also remove all out-commented code.
2015-01-12Modernize error handling for illicit tagsBjörn Gustavsson
2015-01-12Clean up error reporting for duplicate tagsDan Gudmundsson
Split the test case duplicate_tags/1 into two parts. Do the error checking test in error_SUITE. Keep the SeqOptional2 specification and compile it from the per/1 and ber_other/1 test cases (for coverage).
2015-01-12asn1: Rewrite error handling for EXPORT to new styleDan Gudmundsson
2015-01-12Strengthen the constraint_equivalence test caseBjörn Gustavsson
Instead of only compiling to the abstract format using 'abs', also compile to each of the back-ends.
2015-01-12Get rid of the test case for warnings_as_errorsBjörn Gustavsson
The warnings in the ASN.1 are being eliminated one by one and replaced with errors. Therefore, it is no longer possible to test warnings_as_errors. We will reimplement this test case in the future if we will introduce some new sensible warnings.
2015-01-12Add the other PKCS files to the rfcs test caseDan Gudmundsson
Changed the following from the original copies: PKCS-5 (renamed from PKCS-v21) PKCS-9 Import from CryptographicMessageSyntax-2009 instead of CryptographicMessageSyntax Since most of the files from the x420 directory are needed, copy all of them into the rfcs directory and remove the x420 directory and test case. Copy the test of OTP-7759 to the testRfcs test case.
2015-01-12Add the rfcs test caseBjörn Gustavsson
Add the ASN.1 specs from RFC-5911 and RFC-5912.
2015-01-12Fix object set duplication testBjörn Gustavsson
Wrong fields in the record where checked when sorting, which caused duplicate objects to exist in constructed object sets and later caused an error.
2015-01-12Refactor code involving calls to get_fieldname_element/3Björn Gustavsson
Refactor and clean up code. While at it, add error handling and test cases. (Also add test cases for the existing values in ValueTest.asn while we are it.) Add support for defining INTEGER constants by extracting fields from objects. Example: int-from-object INTEGER ::= object.&id When extracting values from objects in constraints, only one level of extraction would work. That is, the following would work: SomeName ::= INTEGER (object.&int) but not: SomeName ::= INTEGER (object.&obj.&int)
2015-01-12Add a new test case to test values in ValueTest.asn1Björn Gustavsson
We only tested that ValueTest.asn1 would compile, no that the values were correct.
2014-11-18Add test for IMPLICIT tagging when TagDefault is AUTOMATICSimon Cornish
2014-09-01Correct expansion of parameterized typesBjörn Gustavsson
Attempting to compile: SomeType{SOME-CLASS-NAME, SOME-CLASS-NAME:SomeSet} ::= ... SEQUENCE { something SOME-CLASS-NAME.&id({SomeSet}) } would crash the compiler, because the actual parameter for SOME-CLASS-NAME was not substituted into the governor for the SomeSet parameter. While we are at it, combine the functionality of is_class/2 and get_class_def/2 (eliminating is_class/2). Most callers call both function.
2014-06-05Test suites: Add support for running Dialyzer on generated codeBjörn Gustavsson
Running dialyzer on test suites is good for finding both bugs and useless dialyzer warnings. Add a mechanism in asn1_test_lib for turning on running of dialyzer on all generated code. Turned off by default, because it is slow and because there are still a few dialyzer warnings left.
2014-05-06Test DEFAULT more thoroughlyBjörn Gustavsson
We need to test DEFAULT values both with and without legacy_erlang_types.
2014-02-28Clean up reporting of errors in IMPORTSBjörn Gustavsson
2014-02-24Eliminate warnings for deprecated funtions in test suitesBjörn Gustavsson
Commit e5c71b7 deprecated several all functions in the asn1rt module. As a result, calls to those functions from test suites caused warnings, and as the warnings_as_errors option was active, two test files failed to compile.
2014-01-24Fix open typesBjörn Gustavsson
2014-01-24Fix OCTET STRINGBjörn Gustavsson
2014-01-24Fix BIT STRINGBjörn Gustavsson
2014-01-24asn1 test suite: Modernize testTimer_* and testTimer.erlBjörn Gustavsson
2013-10-01Fix broken handling of default values for BIT STRINGsBjörn Gustavsson
For DER/PER/UPER, a value equal to the DEFAULT is not supposed to be encoded. BIT STRINGs values can be represented as Erlang terms in four different ways: as an integer, as a list of zeroes and ones, as a {Unused,Binary} tuple, or as an Erlang bitstring. When encoding a BIT STRING, only certain representations of BIT STRINGs values were recognized. All representations must be recognized. When decoding a DEFAULT value for a BIT STRING, the actual value given in the decoding would be either an integer or a list of zeroes and one (depending on how the literal was written in the specification). We expect that the default value should be in the same representation as any other BIT STRING value (i.e. by default an Erlang bitstring, or a list if the 'legacy_bitstring' option has been given, or as compact bitstring if 'compact_bitstring' has been given).
2013-09-27Teach the ASN.1 compiler the no_ok_wrapper optionBjörn Gustavsson
Add the no_ok_wrapper option so that the generated M:encode/2 and M:decode/2 functions will not wrap a successful return value in an {ok,...} tuple. Errors will cause exceptions. Eliminating the wrapping tuple allows simpler nesting of calls.
2013-09-18No longer compile the X420 specs for plain BERBjörn Gustavsson
We used to compile the X420 specs for both DER and PER, but 9ec0a0ba changed that to compile for DER and plain BER (probably accidentally). Since the X420 suite contains 99 source files and compilations takes more than 40 seconds on my computer for one backend, we only want to do compilations that are likely to find bugs. Compiling with the BER backend after having compiled for the DER backend is very unlikely to detect any bugs. Compiling for PER (as well as DER) is slightly more likely to expose bugs, but I don't think it is worth the extra running time for the test suite.
2013-09-18Combine the testSeqIndefinite/1 and testSetIndefinite/1 test casesBjörn Gustavsson
They use the same ASN.1 spec.
2013-09-18Eliminate the use of asn1_wrapperBjörn Gustavsson
The asn1_wrapper made some sense when encode functions could either produce a list or a binary, depending on the backend. Now encode functions always produce a binary. To improve readbility of the test suites, eliminate the asn1_wrapper functions by replacing them with calls to one of the roundtrip functions in asn1_test_lib. When it is not possible to use the roundtrip functions, call the module in question directly. While at it, also remove ?line macros that are near to the touched code and use asn1_test_lib:hex_to_bin/1 instead of home-brewn hex conversion routines.
2013-09-18Simplify tests of CHOICE with OPTIONALBjörn Gustavsson
Test ChoOptional and ChoOptionalImplicitTag with the same test code and data.
2013-09-18Don't allow unused exported functions in test case helpersBjörn Gustavsson
To keep the test case clean, add an xref test case to ensure that there are no unused functions in the any of the test case helper modules. Eliminate 4 functions that were exported just so that timer:tc/3 could be used (use timer:tc/1 with a fun instead).
2013-09-18Move out specific tests from asn1_test_libBjörn Gustavsson
asn1_test_lib is supposed to be a general-purpose helper module for test cases. Move all specific test cases into asn1_SUITE.
2013-09-18asn1_SUITE: Reinstate test of sub-constraintBjörn Gustavsson
A test of sub-constraints for PER/UPER was lost in commit 9ec0a0babace.
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-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-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-03PER, UPER: Fix encoding/decoding of open types greater than 16KBjörn Gustavsson
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-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-06-08PER/UPER: Correct decoding of SEQUENCEs with more than 64 extensionsBjörn Gustavsson
2013-05-31Clean up checking of values for ENUMERATEDsBjörn Gustavsson
Unify the code for checking an enumeration value named in a DEFAULT and in an ENUMERATED value. There is no need to handle those cases differently. That also will also make sure that the following works: E ::= ENUMERATED { x, ..., y } e E ::= x (Extensible ENUMERATEDs were not handled when defining values.) Always generate an error when an unknown enumeration value is given (used in a DEFAULT, a message would be printed, but the compilation would succeed). Also make sure that we always include the line number for the incorrect enumeration. Write a new test case and remove the extremely rudimentary value_bad_enum_test/1 test case.
2013-05-31Introduce a new mechanism for structured error handlingBjörn Gustavsson
2013-05-31asn1_SUITE: Add testS1AP/1Björn Gustavsson
2013-05-31ber_other/1: Test more specifications with the BER backendBjörn Gustavsson
2013-05-31testExtensionAddtionGroup/1: Clean up and enhanceBjörn Gustavsson
For the example from X.691, make sure to test that our encoded value is the same as given in X.691. Run the test for BER, too.
2013-05-31Normalize SIZE constraints to simplify backendsBjörn Gustavsson
2013-04-16Merge branch 'bjorn/asn1/fix-lost-extension-mark/OTP-10995' into maint-r16Erlang/OTP
* bjorn/asn1/fix-lost-extension-mark/OTP-10995: Prevent loss of objects after the extension marker Don't lose the extension mark for object set parameters