1   /*
2    *   Copyright 2004 The Apache Software Foundation
3    *
4    *   Licensed under the Apache License, Version 2.0 (the "License");
5    *   you may not use this file except in compliance with the License.
6    *   You may obtain a copy of the License at
7    *
8    *       http://www.apache.org/licenses/LICENSE-2.0
9    *
10   *   Unless required by applicable law or agreed to in writing, software
11   *   distributed under the License is distributed on an "AS IS" BASIS,
12   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *   See the License for the specific language governing permissions and
14   *   limitations under the License.
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 SingleByteTagTests extends AbstractDecoderTestCase
33  {
34  
35      /***
36       * @param arg0
37       */
38      public SingleByteTagTests( String arg0 )
39      {
40          super( arg0 ) ;
41      }
42      
43      
44      public void testAppTypeClass() throws Exception
45      {
46          Tuple tlv = decode( "01000001" ) ;
47          assertEquals( 1, tlv.id ) ;
48          assertEquals( 0, tlvList.size() ) ;
49          assertEquals( true, tlv.isPrimitive ) ;
50          assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
51          assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
52      }
53  
54  
55      public void testPrivTypeClass() throws Exception
56      {
57          Tuple tlv = decode( "11000001" ) ;
58          assertEquals( 1, tlv.id ) ;
59          assertEquals( 0, tlvList.size() ) ;
60          assertEquals( true, tlv.isPrimitive ) ;
61          assertEquals( TypeClass.PRIVATE, tlv.typeClass ) ;
62          assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
63      }
64  
65  
66      public void testCtxTypeClass() throws Exception
67      {
68          Tuple tlv = decode( "10000001" ) ;
69          assertEquals( 1, tlv.id ) ;
70          assertEquals( 0, tlvList.size() ) ;
71          assertEquals( true, tlv.isPrimitive ) ;
72          assertEquals( TypeClass.CONTEXT_SPECIFIC, tlv.typeClass ) ;
73          assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
74      }
75  
76      
77      public void testUniTypeClass() throws Exception
78      {
79          Tuple tlv = decode( "01000001" ) ;
80          assertEquals( 1, tlv.id ) ;
81          assertEquals( 0, tlvList.size() ) ;
82          assertEquals( true, tlv.isPrimitive ) ;
83          assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
84          assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
85  
86      }
87      
88      public void testIllegalStateWithUniTypeClass() throws Exception
89      {
90          try
91          {
92              Tuple tlv = decode( "00000001" ) ;
93          }
94          catch( IllegalStateException e ) 
95          {
96              assertNotNull( e ) ;
97          }
98      }
99  
100     public void testId1() throws Exception
101     {
102         Tuple tlv = decode( "01000001" ) ;
103         assertEquals( 1, tlv.id ) ;
104         assertEquals( 0, tlvList.size() ) ;
105         assertEquals( true, tlv.isPrimitive ) ;
106         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
107         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
108     }
109 
110 
111     public void testId2() throws Exception
112     {
113         Tuple tlv = decode( "01000010" ) ;
114         assertEquals( 2, tlv.id ) ;
115         assertEquals( 0, tlvList.size() ) ;
116         assertEquals( true, tlv.isPrimitive ) ;
117         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
118         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
119     }
120 
121 
122     public void testId3() throws Exception
123     {
124         Tuple tlv = decode( "01000011" ) ;
125         assertEquals( 3, tlv.id ) ;
126         assertEquals( 0, tlvList.size() ) ;
127         assertEquals( true, tlv.isPrimitive ) ;
128         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
129         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
130     }
131 
132 
133     public void testId4() throws Exception
134     {
135         Tuple tlv = decode( "01000100" ) ;
136         assertEquals( 4, tlv.id ) ;
137         assertEquals( 0, tlvList.size() ) ;
138         assertEquals( true, tlv.isPrimitive ) ;
139         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
140         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
141     }
142 
143 
144     public void testId5() throws Exception
145     {
146         Tuple tlv = decode( "01000101" ) ;
147         assertEquals( 5, tlv.id ) ;
148         assertEquals( 0, tlvList.size() ) ;
149         assertEquals( true, tlv.isPrimitive ) ;
150         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
151         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
152     }
153 
154 
155     public void testId6() throws Exception
156     {
157         Tuple tlv = decode( "01000110" ) ;
158         assertEquals( 6, tlv.id ) ;
159         assertEquals( 0, tlvList.size() ) ;
160         assertEquals( true, tlv.isPrimitive ) ;
161         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
162         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
163     }
164 
165 
166     public void testId7() throws Exception
167     {
168         Tuple tlv = decode( "01000111" ) ;
169         assertEquals( 7, tlv.id ) ;
170         assertEquals( 0, tlvList.size() ) ;
171         assertEquals( true, tlv.isPrimitive ) ;
172         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
173         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
174     }
175 
176 
177     public void testId8() throws Exception
178     {
179         Tuple tlv = decode( "01001000" ) ;
180         assertEquals( 8, tlv.id ) ;
181         assertEquals( 0, tlvList.size() ) ;
182         assertEquals( true, tlv.isPrimitive ) ;
183         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
184         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
185     }
186 
187 
188     public void testId9() throws Exception
189     {
190         Tuple tlv = decode( "01001001" ) ;
191         assertEquals( 9, tlv.id ) ;
192         assertEquals( 0, tlvList.size() ) ;
193         assertEquals( true, tlv.isPrimitive ) ;
194         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
195         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
196     }
197 
198 
199     public void testId10() throws Exception
200     {
201         Tuple tlv = decode( "01001010" ) ;
202         assertEquals( 10, tlv.id ) ;
203         assertEquals( 0, tlvList.size() ) ;
204         assertEquals( true, tlv.isPrimitive ) ;
205         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
206         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
207     }
208 
209 
210     public void testId11() throws Exception
211     {
212         Tuple tlv = decode( "01001011" ) ;
213         assertEquals( 11, tlv.id ) ;
214         assertEquals( 0, tlvList.size() ) ;
215         assertEquals( true, tlv.isPrimitive ) ;
216         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
217         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
218     }
219 
220 
221     public void testId12() throws Exception
222     {
223         Tuple tlv = decode( "01001100" ) ;
224         assertEquals( 12, tlv.id ) ;
225         assertEquals( 0, tlvList.size() ) ;
226         assertEquals( true, tlv.isPrimitive ) ;
227         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
228         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
229     }
230 
231 
232     public void testId13() throws Exception
233     {
234         Tuple tlv = decode( "01001101" ) ;
235         assertEquals( 13, tlv.id ) ;
236         assertEquals( 0, tlvList.size() ) ;
237         assertEquals( true, tlv.isPrimitive ) ;
238         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
239         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
240     }
241 
242 
243     public void testId14() throws Exception
244     {
245         Tuple tlv = decode( "01001110" ) ;
246         assertEquals( 14, tlv.id ) ;
247         assertEquals( 0, tlvList.size() ) ;
248         assertEquals( true, tlv.isPrimitive ) ;
249         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
250         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
251     }
252 
253 
254     public void testId15() throws Exception
255     {
256         Tuple tlv = decode( "01001111" ) ;
257         assertEquals( 15, tlv.id ) ;
258         assertEquals( 0, tlvList.size() ) ;
259         assertEquals( true, tlv.isPrimitive ) ;
260         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
261         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
262     }
263 
264 
265     public void testId16() throws Exception
266     {
267         Tuple tlv = decode( "01010000" ) ;
268         assertEquals( 16, tlv.id ) ;
269         assertEquals( 0, tlvList.size() ) ;
270         assertEquals( true, tlv.isPrimitive ) ;
271         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
272         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
273     }
274 
275 
276     public void testId17() throws Exception
277     {
278         Tuple tlv = decode( "01010001" ) ;
279         assertEquals( 17, tlv.id ) ;
280         assertEquals( 0, tlvList.size() ) ;
281         assertEquals( true, tlv.isPrimitive ) ;
282         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
283         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
284     }
285 
286 
287     public void testId18() throws Exception
288     {
289         Tuple tlv = decode( "01010010" ) ;
290         assertEquals( 18, tlv.id ) ;
291         assertEquals( 0, tlvList.size() ) ;
292         assertEquals( true, tlv.isPrimitive ) ;
293         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
294         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
295     }
296 
297 
298     public void testId19() throws Exception
299     {
300         Tuple tlv = decode( "01010011" ) ;
301         assertEquals( 19, tlv.id ) ;
302         assertEquals( 0, tlvList.size() ) ;
303         assertEquals( true, tlv.isPrimitive ) ;
304         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
305         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
306     }
307 
308 
309     public void testId20() throws Exception
310     {
311         Tuple tlv = decode( "01010100" ) ;
312         assertEquals( 20, tlv.id ) ;
313         assertEquals( 0, tlvList.size() ) ;
314         assertEquals( true, tlv.isPrimitive ) ;
315         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
316         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
317     }
318 
319 
320     public void testId21() throws Exception
321     {
322         Tuple tlv = decode( "01010101" ) ;
323         assertEquals( 21, tlv.id ) ;
324         assertEquals( 0, tlvList.size() ) ;
325         assertEquals( true, tlv.isPrimitive ) ;
326         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
327         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
328     }
329 
330 
331     public void testId22() throws Exception
332     {
333         Tuple tlv = decode( "01010110" ) ;
334         assertEquals( 22, tlv.id ) ;
335         assertEquals( 0, tlvList.size() ) ;
336         assertEquals( true, tlv.isPrimitive ) ;
337         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
338         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
339     }
340 
341 
342     public void testId23() throws Exception
343     {
344         Tuple tlv = decode( "01010111" ) ;
345         assertEquals( 23, tlv.id ) ;
346         assertEquals( 0, tlvList.size() ) ;
347         assertEquals( true, tlv.isPrimitive ) ;
348         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
349         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
350     }
351 
352 
353     public void testId24() throws Exception
354     {
355         Tuple tlv = decode( "01011000" ) ;
356         assertEquals( 24, tlv.id ) ;
357         assertEquals( 0, tlvList.size() ) ;
358         assertEquals( true, tlv.isPrimitive ) ;
359         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
360         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
361     }
362 
363 
364     public void testId25() throws Exception
365     {
366         Tuple tlv = decode( "01011001" ) ;
367         assertEquals( 25, tlv.id ) ;
368         assertEquals( 0, tlvList.size() ) ;
369         assertEquals( true, tlv.isPrimitive ) ;
370         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
371         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
372     }
373 
374 
375     public void testId26() throws Exception
376     {
377         Tuple tlv = decode( "01011010" ) ;
378         assertEquals( 26, tlv.id ) ;
379         assertEquals( 0, tlvList.size() ) ;
380         assertEquals( true, tlv.isPrimitive ) ;
381         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
382         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
383     }
384 
385 
386     public void testId27() throws Exception
387     {
388         Tuple tlv = decode( "01011011" ) ;
389         assertEquals( 27, tlv.id ) ;
390         assertEquals( 0, tlvList.size() ) ;
391         assertEquals( true, tlv.isPrimitive ) ;
392         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
393         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
394     }
395 
396 
397     public void testId28() throws Exception
398     {
399         Tuple tlv = decode( "01011100" ) ;
400         assertEquals( 28, tlv.id ) ;
401         assertEquals( 0, tlvList.size() ) ;
402         assertEquals( true, tlv.isPrimitive ) ;
403         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
404         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
405     }
406 
407 
408     public void testId29() throws Exception
409     {
410         Tuple tlv = decode( "01011101" ) ;
411         assertEquals( 29, tlv.id ) ;
412         assertEquals( 0, tlvList.size() ) ;
413         assertEquals( true, tlv.isPrimitive ) ;
414         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
415         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
416     }
417 
418 
419     public void testId30() throws Exception
420     {
421         Tuple tlv = decode( "01011110" ) ;
422         assertEquals( 30, tlv.id ) ;
423         assertEquals( 0, tlvList.size() ) ;
424         assertEquals( true, tlv.isPrimitive ) ;
425         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
426         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
427     }
428     
429     
430     public void testIdOverLimit() throws Exception
431     {
432         // this is the long form
433         Tuple tlv = decode( "01011111" ) ;
434         
435         assertEquals( 0, tlv.id ) ;
436         assertEquals( 0, tlvList.size() ) ;
437         assertEquals( true, tlv.isPrimitive ) ;
438         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
439         
440         // state did not switch since we are still reading the long tag  
441         assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
442     }
443 
444     
445     public void testIsConstructed() throws Exception
446     {
447         Tuple tlv = decode( "01111110" ) ;
448         assertEquals( 30, tlv.id ) ;
449         assertEquals( 0, tlvList.size() ) ;
450         assertEquals( false, tlv.isPrimitive ) ;
451         assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
452         assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
453     }
454 }