aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/test/error_SUITE.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2013-03-26 11:51:59 +0100
committerBjörn Gustavsson <[email protected]>2013-05-31 14:52:22 +0200
commit8b68ddddd113ca304690136efb6889fc565aeb44 (patch)
tree49c02250e5d6a3a1073bdb83ef3f9ffd1fe968a3 /lib/asn1/test/error_SUITE.erl
parenta70395cd59e07a03ad003fa0cf166e1237151cb5 (diff)
downloadotp-8b68ddddd113ca304690136efb6889fc565aeb44.tar.gz
otp-8b68ddddd113ca304690136efb6889fc565aeb44.tar.bz2
otp-8b68ddddd113ca304690136efb6889fc565aeb44.zip
Clean up checking of values for ENUMERATEDs
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.
Diffstat (limited to 'lib/asn1/test/error_SUITE.erl')
-rw-r--r--lib/asn1/test/error_SUITE.erl35
1 files changed, 33 insertions, 2 deletions
diff --git a/lib/asn1/test/error_SUITE.erl b/lib/asn1/test/error_SUITE.erl
index 4dd4d58aad..a94a6d95a0 100644
--- a/lib/asn1/test/error_SUITE.erl
+++ b/lib/asn1/test/error_SUITE.erl
@@ -19,7 +19,7 @@
-module(error_SUITE).
-export([suite/0,all/0,groups/0,
- already_defined/1]).
+ already_defined/1,enumerated/1]).
-include_lib("test_server/include/test_server.hrl").
@@ -29,7 +29,8 @@ all() ->
[{group,p}].
groups() ->
- [{p,parallel(),[already_defined]}].
+ [{p,parallel(),[already_defined,
+ enumerated]}].
parallel() ->
case erlang:system_info(schedulers) > 1 of
@@ -66,6 +67,36 @@ already_defined(Config) ->
} = run(P, Config),
ok.
+enumerated(Config) ->
+ M = 'Enumerated',
+ P = {M,
+ <<"Enumerated DEFINITIONS AUTOMATIC TAGS ::= BEGIN\n"
+ " Enum ::= ENUMERATED { a, b, c }\n"
+ " e Enum ::= d\n"
+ " EnumExt ::= ENUMERATED { x, ..., y }\n"
+ " ext EnumExt ::= z\n"
+ " S1 ::= SEQUENCE {\n"
+ " ge1 Enum DEFAULT a,\n"
+ " ge2 EnumExt DEFAULT x,\n"
+ " ge3 EnumExt DEFAULT y,\n"
+ " e Enum DEFAULT aa\n"
+ " }\n"
+ " S2 ::= SEQUENCE {\n"
+ " e2 EnumExt DEFAULT xyz\n"
+ " }\n"
+ "END\n">>},
+ {error,
+ [
+ {structured_error,{'Enumerated',3},asn1ct_check,{undefined,d}},
+ {structured_error,{'Enumerated',5},asn1ct_check,{undefined,z}},
+ {structured_error,{'Enumerated',10},asn1ct_check,{undefined,aa}},
+ {structured_error,{'Enumerated',13},asn1ct_check,{undefined,xyz}}
+ ]
+ } = run(P, Config),
+ ok.
+
+
+
run({Mod,Spec}, Config) ->
Base = atom_to_list(Mod) ++ ".asn1",
File = filename:join(?config(priv_dir, Config), Base),