OSDN Git Service

imported from subversion repository
[xerial/xerial-core.git] / src / test / java / org / xerial / util / BitVectorTest.java
1 /*--------------------------------------------------------------------------\r
2  *  Copyright 2008 Taro L. Saito\r
3  *\r
4  *  Licensed under the Apache License, Version 2.0 (the "License");\r
5  *  you may not use this file except in compliance with the License.\r
6  *  You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  *  Unless required by applicable law or agreed to in writing, software\r
11  *  distributed under the License is distributed on an "AS IS" BASIS,\r
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  *  See the License for the specific language governing permissions and\r
14  *  limitations under the License.\r
15  *--------------------------------------------------------------------------*/\r
16 //--------------------------------------\r
17 // XerialJ\r
18 //\r
19 // BitVectorTest.java\r
20 // Since: 2008/11/08 10:01:51\r
21 //\r
22 // $URL$\r
23 // $Author$\r
24 //--------------------------------------\r
25 package org.xerial.util;\r
26 \r
27 import static org.junit.Assert.assertEquals;\r
28 import static org.junit.Assert.assertFalse;\r
29 import static org.junit.Assert.assertNotSame;\r
30 import static org.junit.Assert.assertTrue;\r
31 \r
32 import org.junit.Test;\r
33 import org.xerial.util.log.Logger;\r
34 \r
35 public class BitVectorTest\r
36 {\r
37     private static Logger _logger = Logger.getLogger(BitVectorTest.class);\r
38 \r
39     @Test\r
40     public void testBitVector()\r
41     {\r
42         BitVector bv = new BitVector();\r
43         bv.on(1);\r
44         assertEquals("01", bv.toString());\r
45         assertEquals(2, bv.size());\r
46 \r
47         bv.on(5);\r
48         assertEquals("010001", bv.toString());\r
49         assertEquals(6, bv.size());\r
50 \r
51     }\r
52 \r
53     @Test\r
54     public void testSetAndGet()\r
55     {\r
56         BitVector bv = new BitVector();\r
57         for (int i = 0; i < 10000; i++)\r
58         {\r
59             assertFalse(bv.get(i));\r
60             bv.set(i, true);\r
61             assertTrue(bv.get(i));\r
62         }\r
63 \r
64     }\r
65 \r
66     @Test\r
67     public void testOnOff()\r
68     {\r
69         BitVector bv = new BitVector();\r
70         for (int i = 0; i < 10000; i++)\r
71         {\r
72             assertFalse(bv.get(i));\r
73             bv.on(i);\r
74             assertTrue(bv.get(i));\r
75         }\r
76 \r
77         int[] pos = { 1, 34, 5093, 443, 4 };\r
78         for (int offIndex : pos)\r
79         {\r
80             bv.off(offIndex);\r
81             assertFalse(bv.get(offIndex));\r
82         }\r
83         \r
84         \r
85 \r
86     }\r
87 \r
88     @Test\r
89     public void testEqualsObject()\r
90     {\r
91         BitVector bv = new BitVector();\r
92         BitVector bv2 = new BitVector();\r
93         int[] pos = { 1, 34, 43, 13, 4 };\r
94         for(int index : pos)\r
95         {\r
96             bv.on(index);\r
97             bv2.on(index);\r
98             assertTrue(bv.get(index));\r
99             assertTrue(bv2.get(index));\r
100         }\r
101         \r
102         assertEquals(bv, bv2);\r
103         assertEquals(bv.hashCode(), bv2.hashCode());\r
104         assertEquals(bv.size(), bv2.size());\r
105 \r
106         bv2.on(55);\r
107         assertNotSame(bv, bv2);\r
108         assertNotSame(bv.size(), bv2.size());\r
109     }\r
110 \r
111     @Test\r
112     public void testNewInstance()\r
113     {\r
114         BitVector bv = new BitVector();\r
115         int[] pos = { 1, 34, 43, 13, 4 };\r
116         for (int index : pos)\r
117         {\r
118             bv.on(index);\r
119             assertTrue(bv.get(index));\r
120         }\r
121 \r
122         BitVector bv2 = BitVector.newInstance(bv);\r
123         assertEquals(bv, bv2);\r
124         assertEquals(bv.hashCode(), bv2.hashCode());\r
125         assertEquals(bv.size(), bv2.size());\r
126 \r
127         bv2.on(55);\r
128         assertNotSame(bv, bv2);\r
129         assertNotSame(bv.size(), bv2.size());\r
130 \r
131     }\r
132 \r
133 }\r