1 /******************************************************************************
2 * Copyright (c) 2000-2015 Ericsson Telecom AB
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 ******************************************************************************/
10 import from Regr1 language "ASN.1:1997" all
11 with {encode "DER:1997"};
12 import from Regr2 language "ASN.1:1997" all
13 with {encode "DER:1997"};
15 external function enc_ber_int(in integer r) return octetstring
16 with { extension "encode(BER:BER_ENCODE_DER) prototype(convert) errorbehavior(ALL:WARNING)" }
17 external function dec_ber_int(in octetstring r) return integer
18 with { extension "decode(BER:BER_ENCODE_DER) prototype(convert) errorbehavior(ALL:WARNING)" }
20 type component comp_ber { }
22 type port MyPort1 message
24 out T0, T2, T3, T4, T5, T6, T7, T8,
29 type port MyPort2 message
31 in T0, T2, T3, T4, T5, T6, T7, T8,
36 type component MyComponent
43 type component MySystemType
49 altstep MyAltstep() runs on MyComponent
51 [] P1.receive { setverdict(fail); }
52 [] P2.receive { setverdict(fail); }
53 [] T.timeout { setverdict(inconc); T.start; }
56 testcase TC0a() runs on MyComponent system MySystemType
58 var default d := activate(MyAltstep());
59 map(mtc:P1, system:S2);
60 map(mtc:P2, system:S1);
75 unmap(mtc:P1, system:S2);
76 unmap(mtc:P2, system:S1);
79 testcase TC2a() runs on MyComponent system MySystemType
81 var default d := activate(MyAltstep());
82 map(mtc:P1, system:S2);
83 map(mtc:P2, system:S1);
98 unmap(mtc:P1, system:S2);
99 unmap(mtc:P2, system:S1);
102 testcase TC2b() runs on MyComponent system MySystemType
104 var default d := activate(MyAltstep());
105 map(mtc:P1, system:S2);
106 map(mtc:P2, system:S1);
121 unmap(mtc:P1, system:S2);
122 unmap(mtc:P2, system:S1);
125 testcase TC3a() runs on MyComponent system MySystemType
127 var default d := activate(MyAltstep());
128 map(mtc:P1, system:S2);
129 map(mtc:P2, system:S1);
144 unmap(mtc:P1, system:S2);
145 unmap(mtc:P2, system:S1);
148 testcase TC3b() runs on MyComponent system MySystemType
150 var default d := activate(MyAltstep());
151 map(mtc:P1, system:S2);
152 map(mtc:P2, system:S1);
167 unmap(mtc:P1, system:S2);
168 unmap(mtc:P2, system:S1);
171 testcase TC3c() runs on MyComponent system MySystemType
173 var default d := activate(MyAltstep());
174 map(mtc:P1, system:S2);
175 map(mtc:P2, system:S1);
358 unmap(mtc:P1, system:S2);
359 unmap(mtc:P2, system:S1);
362 testcase TC4() runs on MyComponent system MySystemType
364 var default d := activate(MyAltstep());
365 map(mtc:P1, system:S2);
366 map(mtc:P2, system:S1);
429 unmap(mtc:P1, system:S2);
430 unmap(mtc:P2, system:S1);
433 testcase TC5() runs on MyComponent system MySystemType
435 var default d := activate(MyAltstep());
436 map(mtc:P1, system:S2);
437 map(mtc:P2, system:S1);
512 unmap(mtc:P1, system:S2);
513 unmap(mtc:P2, system:S1);
516 testcase TC6() runs on MyComponent system MySystemType
518 var default d := activate(MyAltstep());
519 map(mtc:P1, system:S2);
520 map(mtc:P2, system:S1);
554 P2.receive(c6d); // Yes, c6d==c6c
583 unmap(mtc:P1, system:S2);
584 unmap(mtc:P2, system:S1);
587 testcase TC7() runs on MyComponent system MySystemType
589 var default d := activate(MyAltstep());
590 map(mtc:P1, system:S2);
591 map(mtc:P2, system:S1);
654 unmap(mtc:P1, system:S2);
655 unmap(mtc:P2, system:S1);
658 testcase TC8() runs on MyComponent system MySystemType
660 var default d := activate(MyAltstep());
661 map(mtc:P1, system:S2);
662 map(mtc:P2, system:S1);
689 unmap(mtc:P1, system:S2);
690 unmap(mtc:P2, system:S1);
693 testcase TC10() runs on MyComponent system MySystemType
695 var default d := activate(MyAltstep());
696 map(mtc:P1, system:S2);
697 map(mtc:P2, system:S1);
724 unmap(mtc:P1, system:S2);
725 unmap(mtc:P2, system:S1);
728 testcase TC11_12() runs on MyComponent system MySystemType
730 var default d := activate(MyAltstep());
731 map(mtc:P1, system:S2);
732 map(mtc:P2, system:S1);
747 unmap(mtc:P1, system:S2);
748 unmap(mtc:P2, system:S1);
751 testcase TC11_13() runs on MyComponent system MySystemType
753 var default d := activate(MyAltstep());
754 map(mtc:P1, system:S2);
755 map(mtc:P2, system:S1);
782 unmap(mtc:P1, system:S2);
783 unmap(mtc:P2, system:S1);
786 testcase TC11_14() runs on MyComponent system MySystemType
788 var default d := activate(MyAltstep());
789 map(mtc:P1, system:S2);
790 map(mtc:P2, system:S1);
817 unmap(mtc:P1, system:S2);
818 unmap(mtc:P2, system:S1);
821 testcase TC11_15() runs on MyComponent system MySystemType
823 var default d := activate(MyAltstep());
824 map(mtc:P1, system:S2);
825 map(mtc:P2, system:S1);
840 unmap(mtc:P1, system:S2);
841 unmap(mtc:P2, system:S1);
844 testcase TC11_16() runs on MyComponent system MySystemType
846 var default d := activate(MyAltstep());
847 map(mtc:P1, system:S2);
848 map(mtc:P2, system:S1);
875 unmap(mtc:P1, system:S2);
876 unmap(mtc:P2, system:S1);
879 testcase TC11_17() runs on MyComponent system MySystemType
881 var default d := activate(MyAltstep());
882 map(mtc:P1, system:S2);
883 map(mtc:P2, system:S1);
898 unmap(mtc:P1, system:S2);
899 unmap(mtc:P2, system:S1);
902 testcase TC11_18() runs on MyComponent system MySystemType
904 var default d := activate(MyAltstep());
905 map(mtc:P1, system:S2);
906 map(mtc:P2, system:S1);
921 unmap(mtc:P1, system:S2);
922 unmap(mtc:P2, system:S1);
925 testcase TC11_19() runs on MyComponent system MySystemType
927 var default d := activate(MyAltstep());
928 map(mtc:P1, system:S2);
929 map(mtc:P2, system:S1);
968 unmap(mtc:P1, system:S2);
969 unmap(mtc:P2, system:S1);
972 testcase TC11_20() runs on MyComponent system MySystemType
974 var default d := activate(MyAltstep());
975 map(mtc:P1, system:S2);
976 map(mtc:P2, system:S1);
991 unmap(mtc:P1, system:S2);
992 unmap(mtc:P2, system:S1);
995 testcase TC11_21() runs on MyComponent system MySystemType
997 var default d := activate(MyAltstep());
998 map(mtc:P1, system:S2);
999 map(mtc:P2, system:S1);
1003 P1.receive(d11_21a);
1009 P2.receive(c11_21a);
1015 P1.receive(d11_21b);
1021 P2.receive(c11_21b);
1026 unmap(mtc:P1, system:S2);
1027 unmap(mtc:P2, system:S1);
1030 testcase TC11_22() runs on MyComponent system MySystemType
1032 var default d := activate(MyAltstep());
1033 map(mtc:P1, system:S2);
1034 map(mtc:P2, system:S1);
1038 P1.receive(d11_22a);
1044 P2.receive(c11_22a);
1049 unmap(mtc:P1, system:S2);
1050 unmap(mtc:P2, system:S1);
1053 function check_enc_dec(integer int, octetstring expected) {
1054 var octetstring encoded_pdu := enc_ber_int(int);
1055 if (encoded_pdu == expected) {setverdict(pass);}
1056 else {setverdict(fail, "Encoding failed, encoded_pdu is ", log2str(encoded_pdu));}
1057 var integer decoded := dec_ber_int(encoded_pdu);
1058 if (int == decoded) { setverdict(pass); }
1059 else {setverdict(fail, "decoding failed, decoded is ", decoded);}
1061 extension "transparent"
1064 testcase tc_int_enc_dec() runs on comp_ber {
1066 check_enc_dec( 0, '020100'O);
1068 check_enc_dec(-1, '0201FF'O);
1069 check_enc_dec( 1, '020101'O);
1071 check_enc_dec(-2, '0201FE'O);
1072 check_enc_dec( 2, '020102'O);
1073 check_enc_dec(-5, '0201FB'O);
1074 check_enc_dec( 5, '020105'O);
1076 check_enc_dec(-254, '0202FF02'O);
1077 check_enc_dec( 254, '020200FE'O);
1078 check_enc_dec(-255, '0202FF01'O);
1079 check_enc_dec( 255, '020200FF'O);
1080 check_enc_dec(-256, '0202FF00'O);
1081 check_enc_dec( 256, '02020100'O);
1083 check_enc_dec(-1234, '0202FB2E'O);
1086 check_enc_dec(-65534, '0203FF0002'O);
1087 check_enc_dec( 65534, '020300FFFE'O);
1088 check_enc_dec(-65535, '0203FF0001'O);
1089 check_enc_dec( 65535, '020300FFFF'O);
1090 check_enc_dec(-65536, '0203FF0000'O);
1091 check_enc_dec( 65536, '0203010000'O);
1094 check_enc_dec(-16777215, '0204FF000001'O);
1095 check_enc_dec( 16777215, '020400FFFFFF'O);
1096 check_enc_dec(-16777216, '0204FF000000'O);
1097 check_enc_dec( 16777216, '020401000000'O);
1098 check_enc_dec(-16777217, '0204FEFFFFFF'O);
1099 check_enc_dec( 16777217, '020401000001'O);
1102 check_enc_dec(-4294967295, '0205FF00000001'O);
1103 check_enc_dec( 4294967295, '020500FFFFFFFF'O);
1104 check_enc_dec(-4294967296, '0205FF00000000'O);
1105 check_enc_dec( 4294967296, '02050100000000'O);
1106 check_enc_dec(-4294967297, '0205FEFFFFFFFF'O);
1107 check_enc_dec( 4294967297, '02050100000001'O);
1110 check_enc_dec(-128, '020180'O);
1111 check_enc_dec( 127, '02017F'O);
1114 check_enc_dec(-2147483648, '020480000000'O);
1115 check_enc_dec( 2147483647, '02047FFFFFFF'O);
1118 check_enc_dec(-549755813888, '02058000000000'O);
1119 check_enc_dec( 549755813887, '02057FFFFFFFFF'O);
1122 check_enc_dec(-140737488355328, '0206800000000000'O);
1123 check_enc_dec( 140737488355327, '02067FFFFFFFFFFF'O);
1126 check_enc_dec(-36028797018963968, '020780000000000000'O);
1127 check_enc_dec( 36028797018963967, '02077FFFFFFFFFFFFF'O);
1130 check_enc_dec(-9223372036854775808, '02088000000000000000'O);
1131 check_enc_dec( 9223372036854775807, '02087FFFFFFFFFFFFFFF'O);
1133 check_enc_dec(-12345678910111213141516, '020AFD62BD49A976CD7441F4'O);
1134 check_enc_dec( 12345678910111213141516, '020A029D42B65689328BBE0C'O);
1163 execute(tc_int_enc_dec());