View Javadoc

1   /*
2    *  Licensed to the Apache Software Foundation (ASF) under one
3    *  or more contributor license agreements.  See the NOTICE file
4    *  distributed with this work for additional information
5    *  regarding copyright ownership.  The ASF licenses this file
6    *  to you under the Apache License, Version 2.0 (the
7    *  "License"); you may not use this file except in compliance
8    *  with the License.  You may obtain a copy of the License at
9    *
10   *    http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *  Unless required by applicable law or agreed to in writing,
13   *  software distributed under the License is distributed on an
14   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   *  KIND, either express or implied.  See the License for the
16   *  specific language governing permissions and limitations
17   *  under the License.
18   *
19   */
20  package org.apache.directory.mavibot.btree.serializer;
21  
22  
23  import static org.junit.Assert.assertEquals;
24  
25  import java.io.IOException;
26  
27  import org.junit.Test;
28  
29  
30  /**
31   * Test the LongSerializer class
32   * 
33   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
34   */
35  public class LongSerializerTest
36  {
37      private static LongSerializer serializer = new LongSerializer();
38  
39  
40      @Test
41      public void testLongSerializer() throws IOException
42      {
43          long value = 0x0000000000000000L;
44          byte[] result = LongSerializer.serialize( value );
45  
46          assertEquals( ( byte ) 0x00, result[7] );
47          assertEquals( ( byte ) 0x00, result[6] );
48          assertEquals( ( byte ) 0x00, result[5] );
49          assertEquals( ( byte ) 0x00, result[4] );
50          assertEquals( ( byte ) 0x00, result[3] );
51          assertEquals( ( byte ) 0x00, result[2] );
52          assertEquals( ( byte ) 0x00, result[1] );
53          assertEquals( ( byte ) 0x00, result[0] );
54  
55          assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
56  
57          // ------------------------------------------------------------------
58          value = 0x0000000000000001L;
59          result = LongSerializer.serialize( value );
60  
61          assertEquals( ( byte ) 0x01, result[7] );
62          assertEquals( ( byte ) 0x00, result[6] );
63          assertEquals( ( byte ) 0x00, result[5] );
64          assertEquals( ( byte ) 0x00, result[4] );
65          assertEquals( ( byte ) 0x00, result[3] );
66          assertEquals( ( byte ) 0x00, result[2] );
67          assertEquals( ( byte ) 0x00, result[1] );
68          assertEquals( ( byte ) 0x00, result[0] );
69  
70          assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
71  
72          // ------------------------------------------------------------------
73          value = 0x00000000000000FFL;
74          result = LongSerializer.serialize( value );
75  
76          assertEquals( ( byte ) 0xFF, result[7] );
77          assertEquals( ( byte ) 0x00, result[6] );
78          assertEquals( ( byte ) 0x00, result[5] );
79          assertEquals( ( byte ) 0x00, result[4] );
80          assertEquals( ( byte ) 0x00, result[3] );
81          assertEquals( ( byte ) 0x00, result[2] );
82          assertEquals( ( byte ) 0x00, result[1] );
83          assertEquals( ( byte ) 0x00, result[0] );
84  
85          assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
86  
87          // ------------------------------------------------------------------
88          value = 0x0000000000000100L;
89          result = LongSerializer.serialize( value );
90  
91          assertEquals( ( byte ) 0x00, result[7] );
92          assertEquals( ( byte ) 0x01, result[6] );
93          assertEquals( ( byte ) 0x00, result[5] );
94          assertEquals( ( byte ) 0x00, result[4] );
95          assertEquals( ( byte ) 0x00, result[3] );
96          assertEquals( ( byte ) 0x00, result[2] );
97          assertEquals( ( byte ) 0x00, result[1] );
98          assertEquals( ( byte ) 0x00, result[0] );
99  
100         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
101 
102         // ------------------------------------------------------------------
103         value = 0x000000000000FFFFL;
104         result = LongSerializer.serialize( value );
105 
106         assertEquals( ( byte ) 0xFF, result[7] );
107         assertEquals( ( byte ) 0xFF, result[6] );
108         assertEquals( ( byte ) 0x00, result[5] );
109         assertEquals( ( byte ) 0x00, result[4] );
110         assertEquals( ( byte ) 0x00, result[3] );
111         assertEquals( ( byte ) 0x00, result[2] );
112         assertEquals( ( byte ) 0x00, result[1] );
113         assertEquals( ( byte ) 0x00, result[0] );
114 
115         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
116 
117         // ------------------------------------------------------------------
118         value = 0x0000000000010000L;
119         result = LongSerializer.serialize( value );
120 
121         assertEquals( ( byte ) 0x00, result[7] );
122         assertEquals( ( byte ) 0x00, result[6] );
123         assertEquals( ( byte ) 0x01, result[5] );
124         assertEquals( ( byte ) 0x00, result[4] );
125         assertEquals( ( byte ) 0x00, result[3] );
126         assertEquals( ( byte ) 0x00, result[2] );
127         assertEquals( ( byte ) 0x00, result[1] );
128         assertEquals( ( byte ) 0x00, result[0] );
129 
130         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
131 
132         // ------------------------------------------------------------------
133         value = 0x0000000000FFFFFFL;
134         result = LongSerializer.serialize( value );
135 
136         assertEquals( ( byte ) 0xFF, result[7] );
137         assertEquals( ( byte ) 0xFF, result[6] );
138         assertEquals( ( byte ) 0xFF, result[5] );
139         assertEquals( ( byte ) 0x00, result[4] );
140         assertEquals( ( byte ) 0x00, result[3] );
141         assertEquals( ( byte ) 0x00, result[2] );
142         assertEquals( ( byte ) 0x00, result[1] );
143         assertEquals( ( byte ) 0x00, result[0] );
144 
145         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
146 
147         // ------------------------------------------------------------------
148         value = 0x0000000001000000L;
149         result = LongSerializer.serialize( value );
150 
151         assertEquals( ( byte ) 0x00, result[7] );
152         assertEquals( ( byte ) 0x00, result[6] );
153         assertEquals( ( byte ) 0x00, result[5] );
154         assertEquals( ( byte ) 0x01, result[4] );
155         assertEquals( ( byte ) 0x00, result[3] );
156         assertEquals( ( byte ) 0x00, result[2] );
157         assertEquals( ( byte ) 0x00, result[1] );
158         assertEquals( ( byte ) 0x00, result[0] );
159 
160         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
161 
162         // ------------------------------------------------------------------
163         value = 0x000000007FFFFFFFL;
164         result = LongSerializer.serialize( value );
165 
166         assertEquals( ( byte ) 0xFF, result[7] );
167         assertEquals( ( byte ) 0xFF, result[6] );
168         assertEquals( ( byte ) 0xFF, result[5] );
169         assertEquals( ( byte ) 0x7F, result[4] );
170         assertEquals( ( byte ) 0x00, result[3] );
171         assertEquals( ( byte ) 0x00, result[2] );
172         assertEquals( ( byte ) 0x00, result[1] );
173         assertEquals( ( byte ) 0x00, result[0] );
174 
175         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
176 
177         // ------------------------------------------------------------------
178         value = 0x0000000080000000L;
179         result = LongSerializer.serialize( value );
180 
181         assertEquals( ( byte ) 0x00, result[7] );
182         assertEquals( ( byte ) 0x00, result[6] );
183         assertEquals( ( byte ) 0x00, result[5] );
184         assertEquals( ( byte ) 0x80, result[4] );
185         assertEquals( ( byte ) 0x00, result[3] );
186         assertEquals( ( byte ) 0x00, result[2] );
187         assertEquals( ( byte ) 0x00, result[1] );
188         assertEquals( ( byte ) 0x00, result[0] );
189 
190         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
191 
192         // ------------------------------------------------------------------
193         value = 0x00000000FFFFFFFFL;
194         result = LongSerializer.serialize( value );
195 
196         assertEquals( ( byte ) 0xFF, result[7] );
197         assertEquals( ( byte ) 0xFF, result[6] );
198         assertEquals( ( byte ) 0xFF, result[5] );
199         assertEquals( ( byte ) 0xFF, result[4] );
200         assertEquals( ( byte ) 0x00, result[3] );
201         assertEquals( ( byte ) 0x00, result[2] );
202         assertEquals( ( byte ) 0x00, result[1] );
203         assertEquals( ( byte ) 0x00, result[0] );
204 
205         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
206 
207         // ------------------------------------------------------------------
208         value = 0x0000000100000000L;
209         result = LongSerializer.serialize( value );
210 
211         assertEquals( ( byte ) 0x00, result[7] );
212         assertEquals( ( byte ) 0x00, result[6] );
213         assertEquals( ( byte ) 0x00, result[5] );
214         assertEquals( ( byte ) 0x00, result[4] );
215         assertEquals( ( byte ) 0x01, result[3] );
216         assertEquals( ( byte ) 0x00, result[2] );
217         assertEquals( ( byte ) 0x00, result[1] );
218         assertEquals( ( byte ) 0x00, result[0] );
219 
220         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
221 
222         // ------------------------------------------------------------------
223         value = 0x000000FFFFFFFFFFL;
224         result = LongSerializer.serialize( value );
225 
226         assertEquals( ( byte ) 0xFF, result[7] );
227         assertEquals( ( byte ) 0xFF, result[6] );
228         assertEquals( ( byte ) 0xFF, result[5] );
229         assertEquals( ( byte ) 0xFF, result[4] );
230         assertEquals( ( byte ) 0xFF, result[3] );
231         assertEquals( ( byte ) 0x00, result[2] );
232         assertEquals( ( byte ) 0x00, result[1] );
233         assertEquals( ( byte ) 0x00, result[0] );
234 
235         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
236 
237         // ------------------------------------------------------------------
238         value = 0x0000010000000000L;
239         result = LongSerializer.serialize( value );
240 
241         assertEquals( ( byte ) 0x00, result[7] );
242         assertEquals( ( byte ) 0x00, result[6] );
243         assertEquals( ( byte ) 0x00, result[5] );
244         assertEquals( ( byte ) 0x00, result[4] );
245         assertEquals( ( byte ) 0x00, result[3] );
246         assertEquals( ( byte ) 0x01, result[2] );
247         assertEquals( ( byte ) 0x00, result[1] );
248         assertEquals( ( byte ) 0x00, result[0] );
249 
250         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
251 
252         // ------------------------------------------------------------------
253         value = 0x0000FFFFFFFFFFFFL;
254         result = LongSerializer.serialize( value );
255 
256         assertEquals( ( byte ) 0xFF, result[7] );
257         assertEquals( ( byte ) 0xFF, result[6] );
258         assertEquals( ( byte ) 0xFF, result[5] );
259         assertEquals( ( byte ) 0xFF, result[4] );
260         assertEquals( ( byte ) 0xFF, result[3] );
261         assertEquals( ( byte ) 0xFF, result[2] );
262         assertEquals( ( byte ) 0x00, result[1] );
263         assertEquals( ( byte ) 0x00, result[0] );
264 
265         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
266 
267         // ------------------------------------------------------------------
268         value = 0x0001000000000000L;
269         result = LongSerializer.serialize( value );
270 
271         assertEquals( ( byte ) 0x00, result[7] );
272         assertEquals( ( byte ) 0x00, result[6] );
273         assertEquals( ( byte ) 0x00, result[5] );
274         assertEquals( ( byte ) 0x00, result[4] );
275         assertEquals( ( byte ) 0x00, result[3] );
276         assertEquals( ( byte ) 0x00, result[2] );
277         assertEquals( ( byte ) 0x01, result[1] );
278         assertEquals( ( byte ) 0x00, result[0] );
279 
280         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
281 
282         // ------------------------------------------------------------------
283         value = 0x00FFFFFFFFFFFFFFL;
284         result = LongSerializer.serialize( value );
285 
286         assertEquals( ( byte ) 0xFF, result[7] );
287         assertEquals( ( byte ) 0xFF, result[6] );
288         assertEquals( ( byte ) 0xFF, result[5] );
289         assertEquals( ( byte ) 0xFF, result[4] );
290         assertEquals( ( byte ) 0xFF, result[3] );
291         assertEquals( ( byte ) 0xFF, result[2] );
292         assertEquals( ( byte ) 0xFF, result[1] );
293         assertEquals( ( byte ) 0x00, result[0] );
294 
295         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
296 
297         // ------------------------------------------------------------------
298         value = 0x0100000000000000L;
299         result = LongSerializer.serialize( value );
300 
301         assertEquals( ( byte ) 0x00, result[7] );
302         assertEquals( ( byte ) 0x00, result[6] );
303         assertEquals( ( byte ) 0x00, result[5] );
304         assertEquals( ( byte ) 0x00, result[4] );
305         assertEquals( ( byte ) 0x00, result[3] );
306         assertEquals( ( byte ) 0x00, result[2] );
307         assertEquals( ( byte ) 0x00, result[1] );
308         assertEquals( ( byte ) 0x01, result[0] );
309 
310         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
311 
312         // ------------------------------------------------------------------
313         value = 0x7FFFFFFFFFFFFFFFL;
314         result = LongSerializer.serialize( value );
315 
316         assertEquals( ( byte ) 0xFF, result[7] );
317         assertEquals( ( byte ) 0xFF, result[6] );
318         assertEquals( ( byte ) 0xFF, result[5] );
319         assertEquals( ( byte ) 0xFF, result[4] );
320         assertEquals( ( byte ) 0xFF, result[3] );
321         assertEquals( ( byte ) 0xFF, result[2] );
322         assertEquals( ( byte ) 0xFF, result[1] );
323         assertEquals( ( byte ) 0x7F, result[0] );
324 
325         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
326 
327         // ------------------------------------------------------------------
328         value = 0x8000000000000000L;
329         result = LongSerializer.serialize( value );
330 
331         assertEquals( ( byte ) 0x00, result[7] );
332         assertEquals( ( byte ) 0x00, result[6] );
333         assertEquals( ( byte ) 0x00, result[5] );
334         assertEquals( ( byte ) 0x00, result[4] );
335         assertEquals( ( byte ) 0x00, result[3] );
336         assertEquals( ( byte ) 0x00, result[2] );
337         assertEquals( ( byte ) 0x00, result[1] );
338         assertEquals( ( byte ) 0x80, result[0] );
339 
340         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
341 
342         // ------------------------------------------------------------------
343         value = 0xFFFFFFFFFFFFFFFFL;
344         result = LongSerializer.serialize( value );
345 
346         assertEquals( ( byte ) 0xFF, result[7] );
347         assertEquals( ( byte ) 0xFF, result[6] );
348         assertEquals( ( byte ) 0xFF, result[5] );
349         assertEquals( ( byte ) 0xFF, result[4] );
350         assertEquals( ( byte ) 0xFF, result[3] );
351         assertEquals( ( byte ) 0xFF, result[2] );
352         assertEquals( ( byte ) 0xFF, result[1] );
353         assertEquals( ( byte ) 0xFF, result[0] );
354 
355         assertEquals( value, serializer.deserialize( new BufferHandler( result ) ).longValue() );
356     }
357 }