1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.asn1.ber ;
18
19 import java.nio.ByteBuffer;
20
21 import org.apache.asn1.ber.AbstractDecoderTestCase;
22 import org.apache.asn1.ber.BERDecoderState;
23
24
25 /***
26 * Performs simple primitive tlv tests.
27 *
28 * @author <a href="mailto:dev@directory.apache.org">
29 * Apache Directory Project</a>
30 * @version $Rev: 157644 $
31 */
32 public class SimplePrimitiveTLVTests extends AbstractDecoderTestCase
33 {
34
35 /***
36 * @param arg0
37 */
38 public SimplePrimitiveTLVTests( String arg0 )
39 {
40 super( arg0 ) ;
41 }
42
43
44 public void testSingleSimpleTLV() throws Exception
45 {
46
47 Tuple tlv = decode( "01000001" ) ;
48 assertEquals( 1, tlv.id ) ;
49 assertEquals( 0, tlvList.size() ) ;
50 assertEquals( true, tlv.isPrimitive ) ;
51 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
52 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
53
54
55 tlv = decode( "00000001" ) ;
56 assertEquals( BERDecoderState.VALUE, decoder.getState() ) ;
57 assertEquals( 1, tlv.length ) ;
58
59
60 tlv = decode( "01010101" ) ;
61 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
62 assertEquals( 1, tlvList.size() ) ;
63 assertNotNull( tlv.valueChunk ) ;
64 assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
65 }
66
67
68 public void testMultipleSimpleTLV() throws Exception
69 {
70
71 Tuple tlv = decode( "01000001" ) ;
72 assertEquals( 1, tlv.id ) ;
73 assertEquals( 0, tlvList.size() ) ;
74 assertEquals( true, tlv.isPrimitive ) ;
75 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
76 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
77
78
79 tlv = decode( "00000001" ) ;
80 assertEquals( BERDecoderState.VALUE, decoder.getState() ) ;
81 assertEquals( 1, tlv.length ) ;
82
83
84 tlv = decode( "01010101" ) ;
85 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
86 assertEquals( 1, tlvList.size() ) ;
87 assertNotNull( tlv.valueChunk ) ;
88 assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
89
90
91
92 tlv = decode( "01000001" ) ;
93 assertEquals( 1, tlv.id ) ;
94 assertEquals( 1, tlvList.size() ) ;
95 assertEquals( true, tlv.isPrimitive ) ;
96 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
97 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
98
99
100 tlv = decode( "00000001" ) ;
101 assertEquals( BERDecoderState.VALUE, decoder.getState() ) ;
102 assertEquals( 1, tlv.length ) ;
103
104
105 tlv = decode( "01010101" ) ;
106 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
107 assertEquals( 2, tlvList.size() ) ;
108 assertNotNull( tlv.valueChunk ) ;
109 assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
110
111
112
113 tlv = decode( "01000001" ) ;
114 assertEquals( 1, tlv.id ) ;
115 assertEquals( 2, tlvList.size() ) ;
116 assertEquals( true, tlv.isPrimitive ) ;
117 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
118 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
119
120
121 tlv = decode( "00000001" ) ;
122 assertEquals( BERDecoderState.VALUE, decoder.getState() ) ;
123 assertEquals( 1, tlv.length ) ;
124
125
126 tlv = decode( "01010101" ) ;
127 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
128 assertEquals( 3, tlvList.size() ) ;
129 assertNotNull( tlv.valueChunk ) ;
130 assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
131 }
132
133
134 public void testSingleSimpleLongTLV() throws Exception
135 {
136
137 Tuple tlv = decode( "01000001" ) ;
138 assertEquals( 1, tlv.id ) ;
139 assertEquals( 0, tlvList.size() ) ;
140 assertEquals( true, tlv.isPrimitive ) ;
141 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
142 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
143
144
145 tlv = decode( "10000001" ) ;
146 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
147 assertEquals( 0, tlv.length ) ;
148
149 tlv = decode( "00000111" ) ;
150 assertEquals( BERDecoderState.VALUE, decoder.getState() ) ;
151 assertEquals( 7, tlv.length ) ;
152
153
154 tlv = decode( "01010101" + "01010101" + "01010101" + "01010101"
155 + "01010101" + "01010101" + "01010101" ) ;
156 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
157 assertEquals( 1, tlvList.size() ) ;
158 assertNotNull( tlv.valueChunk ) ;
159 assertEquals( 7, tlv.valueChunk.capacity() ) ;
160
161 ByteBuffer value = tlv.valueChunk.duplicate() ;
162 for ( int ii = 0 ; ii < 7; ii++ )
163 {
164 assertEquals( 0x0055, 0x00ff & value.get( ii ) ) ;
165 }
166 }
167 }