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