1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.asn1.ber ;
18
19
20 import org.apache.asn1.ber.AbstractDecoderTestCase;
21 import org.apache.asn1.ber.BERDecoderState;
22
23
24 /***
25 * Here we test simple 1 byte tag and length values to test the decoder's
26 * ability to handle these most simple tlvs.
27 *
28 * @author <a href="mailto:dev@directory.apache.org">
29 * Apache Directory Project</a>
30 * @version $Rev: 157644 $
31 */
32 public class MultiByteTagTests extends AbstractDecoderTestCase
33 {
34 /*** precalculated left shift of 1 by 14 places */
35 private static final int BIT_13 = 1 << 14 ;
36 /*** precalculated left shift of 1 by 16 places */
37 private static final int BIT_15 = 1 << 16 ;
38 /*** precalculated left shift of 1 by 21 places */
39 private static final int BIT_20 = 1 << 21 ;
40 /*** precalculated left shift of 1 by 24 places */
41 private static final int BIT_23 = 1 << 24 ;
42 /*** precalculated left shift of 1 by 28 places */
43 private static final int BIT_27 = 1 << 28 ;
44
45
46 /***
47 * @param arg0
48 */
49 public MultiByteTagTests( String arg0 )
50 {
51 super( arg0 ) ;
52 }
53
54
55 public void testId31() throws Exception
56 {
57 Tuple tlv = decode( "01011111" ) ;
58 assertEquals( 0, tlv.id ) ;
59 assertEquals( 0, tlvList.size() ) ;
60 assertEquals( true, tlv.isPrimitive ) ;
61 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
62 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
63
64 tlv = decode( "00011111" ) ;
65 assertEquals( 31, tlv.id ) ;
66 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
67 }
68
69
70 public void testId100() throws Exception
71 {
72 Tuple tlv = decode( "01011111" ) ;
73 assertEquals( 0, tlv.id ) ;
74 assertEquals( 0, tlvList.size() ) ;
75 assertEquals( true, tlv.isPrimitive ) ;
76 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
77 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
78
79 tlv = decode( "01100100" ) ;
80 assertEquals( 100, tlv.id ) ;
81 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
82 }
83
84
85 public void testId127() throws Exception
86 {
87 Tuple tlv = decode( "01011111" ) ;
88 assertEquals( 0, tlv.id ) ;
89 assertEquals( 0, tlvList.size() ) ;
90 assertEquals( true, tlv.isPrimitive ) ;
91 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
92 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
93
94 tlv = decode( "01111111" ) ;
95 assertEquals( 127, tlv.id ) ;
96 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
97 }
98
99
100 public void testId128() throws Exception
101 {
102 Tuple tlv = decode( "01011111" ) ;
103 assertEquals( 0, tlv.id ) ;
104 assertEquals( 0, tlvList.size() ) ;
105 assertEquals( true, tlv.isPrimitive ) ;
106 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
107 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
108
109 tlv = decode( "10000000" ) ;
110 assertEquals( 0, tlv.id ) ;
111 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
112
113 tlv = decode( "00000001" ) ;
114 assertEquals( 1, tlv.id ) ;
115 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
116 }
117
118
119 public void testId129() throws Exception
120 {
121 Tuple tlv = decode( "01011111" ) ;
122 assertEquals( 0, tlv.id ) ;
123 assertEquals( 0, tlvList.size() ) ;
124 assertEquals( true, tlv.isPrimitive ) ;
125 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
126 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
127
128 tlv = decode( "10000001" ) ;
129 assertEquals( 0, tlv.id ) ;
130 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
131
132 tlv = decode( "00000001" ) ;
133 assertEquals( 129, tlv.id ) ;
134 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
135 }
136
137
138
139
140 public void testIdShift14() throws Exception
141 {
142 Tuple tlv = decode( "01011111" ) ;
143 assertEquals( 0, tlv.id ) ;
144 assertEquals( 0, tlvList.size() ) ;
145 assertEquals( true, tlv.isPrimitive ) ;
146 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
147 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
148
149 tlv = decode( "10000001" ) ;
150 assertEquals( 0, tlv.id ) ;
151 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
152
153 tlv = decode( "10000000" ) ;
154 assertEquals( 0, tlv.id ) ;
155 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
156
157 tlv = decode( "00000000" ) ;
158 assertEquals( BIT_13, tlv.id ) ;
159 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
160 }
161
162
163 public void testIdShift14Minus1() throws Exception
164 {
165 Tuple tlv = decode( "01011111" ) ;
166 assertEquals( 0, tlv.id ) ;
167 assertEquals( 0, tlvList.size() ) ;
168 assertEquals( true, tlv.isPrimitive ) ;
169 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
170 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
171
172 tlv = decode( "11111111" ) ;
173 assertEquals( 0, tlv.id ) ;
174 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
175
176 tlv = decode( "01111111" ) ;
177 assertEquals( BIT_13 - 1, tlv.id ) ;
178 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
179 }
180
181
182 public void testIdShift14Plus1() throws Exception
183 {
184 Tuple tlv = decode( "01011111" ) ;
185 assertEquals( 0, tlv.id ) ;
186 assertEquals( 0, tlvList.size() ) ;
187 assertEquals( true, tlv.isPrimitive ) ;
188 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
189 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
190
191 tlv = decode( "10000001" ) ;
192 assertEquals( 0, tlv.id ) ;
193 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
194
195 tlv = decode( "10000000" ) ;
196 assertEquals( 0, tlv.id ) ;
197 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
198
199 tlv = decode( "00000001" ) ;
200 assertEquals( BIT_13 + 1, tlv.id ) ;
201 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
202 }
203
204
205 public void testIdShift21Minus1() throws Exception
206 {
207 Tuple tlv = decode( "01011111" ) ;
208 assertEquals( 0, tlv.id ) ;
209 assertEquals( 0, tlvList.size() ) ;
210 assertEquals( true, tlv.isPrimitive ) ;
211 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
212 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
213
214 tlv = decode( "11111111" ) ;
215 assertEquals( 0, tlv.id ) ;
216 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
217
218 tlv = decode( "11111111" ) ;
219 assertEquals( 0, tlv.id ) ;
220 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
221
222 tlv = decode( "01111111" ) ;
223 assertEquals( BIT_20 - 1, tlv.id ) ;
224 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
225 }
226 }