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      @Test
38      public void testLongSerializer() throws IOException
39      {
40          long value = 0x0000000000000000L;
41          byte[] result = LongSerializer.serialize( value );
42  
43          assertEquals( ( byte ) 0x00, result[7] );
44          assertEquals( ( byte ) 0x00, result[6] );
45          assertEquals( ( byte ) 0x00, result[5] );
46          assertEquals( ( byte ) 0x00, result[4] );
47          assertEquals( ( byte ) 0x00, result[3] );
48          assertEquals( ( byte ) 0x00, result[2] );
49          assertEquals( ( byte ) 0x00, result[1] );
50          assertEquals( ( byte ) 0x00, result[0] );
51  
52          assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
53  
54          // ------------------------------------------------------------------
55          value = 0x0000000000000001L;
56          result = LongSerializer.serialize( value );
57  
58          assertEquals( ( byte ) 0x01, result[7] );
59          assertEquals( ( byte ) 0x00, result[6] );
60          assertEquals( ( byte ) 0x00, result[5] );
61          assertEquals( ( byte ) 0x00, result[4] );
62          assertEquals( ( byte ) 0x00, result[3] );
63          assertEquals( ( byte ) 0x00, result[2] );
64          assertEquals( ( byte ) 0x00, result[1] );
65          assertEquals( ( byte ) 0x00, result[0] );
66  
67          assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
68  
69          // ------------------------------------------------------------------
70          value = 0x00000000000000FFL;
71          result = LongSerializer.serialize( value );
72  
73          assertEquals( ( byte ) 0xFF, result[7] );
74          assertEquals( ( byte ) 0x00, result[6] );
75          assertEquals( ( byte ) 0x00, result[5] );
76          assertEquals( ( byte ) 0x00, result[4] );
77          assertEquals( ( byte ) 0x00, result[3] );
78          assertEquals( ( byte ) 0x00, result[2] );
79          assertEquals( ( byte ) 0x00, result[1] );
80          assertEquals( ( byte ) 0x00, result[0] );
81  
82          assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
83  
84          // ------------------------------------------------------------------
85          value = 0x0000000000000100L;
86          result = LongSerializer.serialize( value );
87  
88          assertEquals( ( byte ) 0x00, result[7] );
89          assertEquals( ( byte ) 0x01, result[6] );
90          assertEquals( ( byte ) 0x00, result[5] );
91          assertEquals( ( byte ) 0x00, result[4] );
92          assertEquals( ( byte ) 0x00, result[3] );
93          assertEquals( ( byte ) 0x00, result[2] );
94          assertEquals( ( byte ) 0x00, result[1] );
95          assertEquals( ( byte ) 0x00, result[0] );
96  
97          assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
98  
99          // ------------------------------------------------------------------
100         value = 0x000000000000FFFFL;
101         result = LongSerializer.serialize( value );
102 
103         assertEquals( ( byte ) 0xFF, result[7] );
104         assertEquals( ( byte ) 0xFF, result[6] );
105         assertEquals( ( byte ) 0x00, result[5] );
106         assertEquals( ( byte ) 0x00, result[4] );
107         assertEquals( ( byte ) 0x00, result[3] );
108         assertEquals( ( byte ) 0x00, result[2] );
109         assertEquals( ( byte ) 0x00, result[1] );
110         assertEquals( ( byte ) 0x00, result[0] );
111 
112         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
113 
114         // ------------------------------------------------------------------
115         value = 0x0000000000010000L;
116         result = LongSerializer.serialize( value );
117 
118         assertEquals( ( byte ) 0x00, result[7] );
119         assertEquals( ( byte ) 0x00, result[6] );
120         assertEquals( ( byte ) 0x01, result[5] );
121         assertEquals( ( byte ) 0x00, result[4] );
122         assertEquals( ( byte ) 0x00, result[3] );
123         assertEquals( ( byte ) 0x00, result[2] );
124         assertEquals( ( byte ) 0x00, result[1] );
125         assertEquals( ( byte ) 0x00, result[0] );
126 
127         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
128 
129         // ------------------------------------------------------------------
130         value = 0x0000000000FFFFFFL;
131         result = LongSerializer.serialize( value );
132 
133         assertEquals( ( byte ) 0xFF, result[7] );
134         assertEquals( ( byte ) 0xFF, result[6] );
135         assertEquals( ( byte ) 0xFF, result[5] );
136         assertEquals( ( byte ) 0x00, result[4] );
137         assertEquals( ( byte ) 0x00, result[3] );
138         assertEquals( ( byte ) 0x00, result[2] );
139         assertEquals( ( byte ) 0x00, result[1] );
140         assertEquals( ( byte ) 0x00, result[0] );
141 
142         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
143 
144         // ------------------------------------------------------------------
145         value = 0x0000000001000000L;
146         result = LongSerializer.serialize( value );
147 
148         assertEquals( ( byte ) 0x00, result[7] );
149         assertEquals( ( byte ) 0x00, result[6] );
150         assertEquals( ( byte ) 0x00, result[5] );
151         assertEquals( ( byte ) 0x01, result[4] );
152         assertEquals( ( byte ) 0x00, result[3] );
153         assertEquals( ( byte ) 0x00, result[2] );
154         assertEquals( ( byte ) 0x00, result[1] );
155         assertEquals( ( byte ) 0x00, result[0] );
156 
157         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
158 
159         // ------------------------------------------------------------------
160         value = 0x000000007FFFFFFFL;
161         result = LongSerializer.serialize( value );
162 
163         assertEquals( ( byte ) 0xFF, result[7] );
164         assertEquals( ( byte ) 0xFF, result[6] );
165         assertEquals( ( byte ) 0xFF, result[5] );
166         assertEquals( ( byte ) 0x7F, result[4] );
167         assertEquals( ( byte ) 0x00, result[3] );
168         assertEquals( ( byte ) 0x00, result[2] );
169         assertEquals( ( byte ) 0x00, result[1] );
170         assertEquals( ( byte ) 0x00, result[0] );
171 
172         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
173 
174         // ------------------------------------------------------------------
175         value = 0x0000000080000000L;
176         result = LongSerializer.serialize( value );
177 
178         assertEquals( ( byte ) 0x00, result[7] );
179         assertEquals( ( byte ) 0x00, result[6] );
180         assertEquals( ( byte ) 0x00, result[5] );
181         assertEquals( ( byte ) 0x80, result[4] );
182         assertEquals( ( byte ) 0x00, result[3] );
183         assertEquals( ( byte ) 0x00, result[2] );
184         assertEquals( ( byte ) 0x00, result[1] );
185         assertEquals( ( byte ) 0x00, result[0] );
186 
187         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
188 
189         // ------------------------------------------------------------------
190         value = 0x00000000FFFFFFFFL;
191         result = LongSerializer.serialize( value );
192 
193         assertEquals( ( byte ) 0xFF, result[7] );
194         assertEquals( ( byte ) 0xFF, result[6] );
195         assertEquals( ( byte ) 0xFF, result[5] );
196         assertEquals( ( byte ) 0xFF, result[4] );
197         assertEquals( ( byte ) 0x00, result[3] );
198         assertEquals( ( byte ) 0x00, result[2] );
199         assertEquals( ( byte ) 0x00, result[1] );
200         assertEquals( ( byte ) 0x00, result[0] );
201 
202         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
203 
204         // ------------------------------------------------------------------
205         value = 0x0000000100000000L;
206         result = LongSerializer.serialize( value );
207 
208         assertEquals( ( byte ) 0x00, result[7] );
209         assertEquals( ( byte ) 0x00, result[6] );
210         assertEquals( ( byte ) 0x00, result[5] );
211         assertEquals( ( byte ) 0x00, result[4] );
212         assertEquals( ( byte ) 0x01, result[3] );
213         assertEquals( ( byte ) 0x00, result[2] );
214         assertEquals( ( byte ) 0x00, result[1] );
215         assertEquals( ( byte ) 0x00, result[0] );
216 
217         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
218 
219         // ------------------------------------------------------------------
220         value = 0x000000FFFFFFFFFFL;
221         result = LongSerializer.serialize( value );
222 
223         assertEquals( ( byte ) 0xFF, result[7] );
224         assertEquals( ( byte ) 0xFF, result[6] );
225         assertEquals( ( byte ) 0xFF, result[5] );
226         assertEquals( ( byte ) 0xFF, result[4] );
227         assertEquals( ( byte ) 0xFF, result[3] );
228         assertEquals( ( byte ) 0x00, result[2] );
229         assertEquals( ( byte ) 0x00, result[1] );
230         assertEquals( ( byte ) 0x00, result[0] );
231 
232         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
233 
234         // ------------------------------------------------------------------
235         value = 0x0000010000000000L;
236         result = LongSerializer.serialize( value );
237 
238         assertEquals( ( byte ) 0x00, result[7] );
239         assertEquals( ( byte ) 0x00, result[6] );
240         assertEquals( ( byte ) 0x00, result[5] );
241         assertEquals( ( byte ) 0x00, result[4] );
242         assertEquals( ( byte ) 0x00, result[3] );
243         assertEquals( ( byte ) 0x01, result[2] );
244         assertEquals( ( byte ) 0x00, result[1] );
245         assertEquals( ( byte ) 0x00, result[0] );
246 
247         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
248 
249         // ------------------------------------------------------------------
250         value = 0x0000FFFFFFFFFFFFL;
251         result = LongSerializer.serialize( value );
252 
253         assertEquals( ( byte ) 0xFF, result[7] );
254         assertEquals( ( byte ) 0xFF, result[6] );
255         assertEquals( ( byte ) 0xFF, result[5] );
256         assertEquals( ( byte ) 0xFF, result[4] );
257         assertEquals( ( byte ) 0xFF, result[3] );
258         assertEquals( ( byte ) 0xFF, result[2] );
259         assertEquals( ( byte ) 0x00, result[1] );
260         assertEquals( ( byte ) 0x00, result[0] );
261 
262         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
263 
264         // ------------------------------------------------------------------
265         value = 0x0001000000000000L;
266         result = LongSerializer.serialize( value );
267 
268         assertEquals( ( byte ) 0x00, result[7] );
269         assertEquals( ( byte ) 0x00, result[6] );
270         assertEquals( ( byte ) 0x00, result[5] );
271         assertEquals( ( byte ) 0x00, result[4] );
272         assertEquals( ( byte ) 0x00, result[3] );
273         assertEquals( ( byte ) 0x00, result[2] );
274         assertEquals( ( byte ) 0x01, result[1] );
275         assertEquals( ( byte ) 0x00, result[0] );
276 
277         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
278 
279         // ------------------------------------------------------------------
280         value = 0x00FFFFFFFFFFFFFFL;
281         result = LongSerializer.serialize( value );
282 
283         assertEquals( ( byte ) 0xFF, result[7] );
284         assertEquals( ( byte ) 0xFF, result[6] );
285         assertEquals( ( byte ) 0xFF, result[5] );
286         assertEquals( ( byte ) 0xFF, result[4] );
287         assertEquals( ( byte ) 0xFF, result[3] );
288         assertEquals( ( byte ) 0xFF, result[2] );
289         assertEquals( ( byte ) 0xFF, result[1] );
290         assertEquals( ( byte ) 0x00, result[0] );
291 
292         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
293 
294         // ------------------------------------------------------------------
295         value = 0x0100000000000000L;
296         result = LongSerializer.serialize( value );
297 
298         assertEquals( ( byte ) 0x00, result[7] );
299         assertEquals( ( byte ) 0x00, result[6] );
300         assertEquals( ( byte ) 0x00, result[5] );
301         assertEquals( ( byte ) 0x00, result[4] );
302         assertEquals( ( byte ) 0x00, result[3] );
303         assertEquals( ( byte ) 0x00, result[2] );
304         assertEquals( ( byte ) 0x00, result[1] );
305         assertEquals( ( byte ) 0x01, result[0] );
306 
307         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
308 
309         // ------------------------------------------------------------------
310         value = 0x7FFFFFFFFFFFFFFFL;
311         result = LongSerializer.serialize( value );
312 
313         assertEquals( ( byte ) 0xFF, result[7] );
314         assertEquals( ( byte ) 0xFF, result[6] );
315         assertEquals( ( byte ) 0xFF, result[5] );
316         assertEquals( ( byte ) 0xFF, result[4] );
317         assertEquals( ( byte ) 0xFF, result[3] );
318         assertEquals( ( byte ) 0xFF, result[2] );
319         assertEquals( ( byte ) 0xFF, result[1] );
320         assertEquals( ( byte ) 0x7F, result[0] );
321 
322         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
323 
324         // ------------------------------------------------------------------
325         value = 0x8000000000000000L;
326         result = LongSerializer.serialize( value );
327 
328         assertEquals( ( byte ) 0x00, result[7] );
329         assertEquals( ( byte ) 0x00, result[6] );
330         assertEquals( ( byte ) 0x00, result[5] );
331         assertEquals( ( byte ) 0x00, result[4] );
332         assertEquals( ( byte ) 0x00, result[3] );
333         assertEquals( ( byte ) 0x00, result[2] );
334         assertEquals( ( byte ) 0x00, result[1] );
335         assertEquals( ( byte ) 0x80, result[0] );
336 
337         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
338 
339         // ------------------------------------------------------------------
340         value = 0xFFFFFFFFFFFFFFFFL;
341         result = LongSerializer.serialize( value );
342 
343         assertEquals( ( byte ) 0xFF, result[7] );
344         assertEquals( ( byte ) 0xFF, result[6] );
345         assertEquals( ( byte ) 0xFF, result[5] );
346         assertEquals( ( byte ) 0xFF, result[4] );
347         assertEquals( ( byte ) 0xFF, result[3] );
348         assertEquals( ( byte ) 0xFF, result[2] );
349         assertEquals( ( byte ) 0xFF, result[1] );
350         assertEquals( ( byte ) 0xFF, result[0] );
351 
352         assertEquals( value, LongSerializer.INSTANCE.deserialize( new BufferHandler( result ) ).longValue() );
353     }
354 }