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 * Performs constructed tlv tests.
26 *
27 * @author <a href="mailto:dev@directory.apache.org">
28 * Apache Directory Project</a>
29 * @version $Rev: 157644 $
30 */
31 public class ConstructedTLVTests extends AbstractDecoderTestCase
32 {
33
34 /***
35 * @param arg0
36 */
37 public ConstructedTLVTests( String arg0 )
38 {
39 super( arg0 ) ;
40 }
41
42
43 public void testConstructedDefinateTLV() throws Exception
44 {
45
46 Tuple outter = decode( "01100001" ) ;
47 assertEquals( 1, outter.id ) ;
48 assertEquals( 0, tlvList.size() ) ;
49 assertEquals( false, outter.isPrimitive ) ;
50 assertEquals( TypeClass.APPLICATION, outter.typeClass ) ;
51 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
52
53
54 outter = decode( "00000011" ) ;
55 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
56
57
58 Tuple tlv = decode( "01000001" ) ;
59 assertEquals( 1, tlv.id ) ;
60 assertEquals( 0, tlvList.size() ) ;
61 assertEquals( true, tlv.isPrimitive ) ;
62 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
63 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
64
65
66 tlv = decode( "00000001" ) ;
67 assertEquals( BERDecoderState.VALUE, decoder.getState() ) ;
68 assertEquals( 1, tlv.length ) ;
69
70
71 tlv = decode( "01010101" ) ;
72 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
73 assertEquals( 2, tlvList.size() ) ;
74 }
75
76
77 public void testMultipleIndefiniteTLV() throws Exception
78 {
79
80
81
82 Tuple outter = decode( "01100001" ) ;
83 assertEquals( 1, outter.id ) ;
84 assertEquals( 0, tlvList.size() ) ;
85 assertEquals( false, outter.isPrimitive ) ;
86 assertEquals( TypeClass.APPLICATION, outter.typeClass ) ;
87 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
88
89
90 outter = decode( "10000000" ) ;
91 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
92
93
94
95
96
97
98 Tuple tlv = decode( "01000001" ) ;
99 assertEquals( 1, tlv.id ) ;
100 assertEquals( 0, tlvList.size() ) ;
101 assertEquals( true, tlv.isPrimitive ) ;
102 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
103 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
104
105
106 tlv = decode( "00000001" ) ;
107 assertEquals( BERDecoderState.VALUE, decoder.getState() ) ;
108 assertEquals( 1, tlv.length ) ;
109 assertEquals( 0, tlvList.size() ) ;
110
111
112 tlv = decode( "01010101" ) ;
113 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
114 assertEquals( 1, tlvList.size() ) ;
115 assertNotNull( tlv.valueChunk ) ;
116 assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
117
118
119
120
121
122
123 tlv = decode( "01000001" ) ;
124 assertEquals( 1, tlv.id ) ;
125 assertEquals( 1, tlvList.size() ) ;
126 assertEquals( true, tlv.isPrimitive ) ;
127 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
128 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
129
130
131 tlv = decode( "00000001" ) ;
132 assertEquals( BERDecoderState.VALUE, decoder.getState() ) ;
133 assertEquals( 1, tlv.length ) ;
134
135
136 tlv = decode( "01010101" ) ;
137 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
138 assertEquals( 2, tlvList.size() ) ;
139 assertNotNull( tlv.valueChunk ) ;
140 assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
141
142
143
144
145
146
147 tlv = decode( "01000001" ) ;
148 assertEquals( 1, tlv.id ) ;
149 assertEquals( 2, tlvList.size() ) ;
150 assertEquals( true, tlv.isPrimitive ) ;
151 assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
152 assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
153
154
155 tlv = decode( "00000001" ) ;
156 assertEquals( BERDecoderState.VALUE, decoder.getState() ) ;
157 assertEquals( 1, tlv.length ) ;
158
159
160 tlv = decode( "01010101" ) ;
161 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
162 assertEquals( 3, tlvList.size() ) ;
163 assertNotNull( tlv.valueChunk ) ;
164 assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
165
166 decode( "00000000" ) ;
167 decode( "00000000" ) ;
168
169 assertEquals( 4, tlvList.size() ) ;
170 assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
171 }
172
173
174 public void testIllegalState() throws Exception
175 {
176 try
177 {
178 decode( "00000000" ) ;
179 decode( "00000000" ) ;
180 fail( "should throw an exception before getting here" ) ;
181 }
182 catch( Throwable e )
183 {
184 assertNotNull( e ) ;
185 }
186 }
187
188
189 public void testIllegalStateNoMonitor() throws Exception
190 {
191 decoder.setDecoderMonitor( null ) ;
192
193 try
194 {
195 decode( "00000000" ) ;
196 decode( "00000000" ) ;
197 fail( "should throw an exception before getting here" ) ;
198 }
199 catch( Throwable e )
200 {
201 assertNotNull( e ) ;
202 }
203 }
204 }