xref: /DragonOS/kernel/crates/bitmap/tests/static-bitmap.rs (revision 6994f6b113f6fea7b997ec07130a7bdaecfd67b7)
1*6994f6b1SLoGin //! 静态位图的集成测试
2*6994f6b1SLoGin 
3*6994f6b1SLoGin use bitmap::{traits::BitMapOps, StaticBitmap};
4*6994f6b1SLoGin 
5*6994f6b1SLoGin /// 测试空的位图
6*6994f6b1SLoGin ///
7*6994f6b1SLoGin /// 这是一个测试空的位图的例子
8*6994f6b1SLoGin ///
9*6994f6b1SLoGin 
10*6994f6b1SLoGin /// 测试空的位图
11*6994f6b1SLoGin #[test]
12*6994f6b1SLoGin fn test_empty_bitmap_32() {
13*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<32>::new();
14*6994f6b1SLoGin     assert_eq!(bitmap.len(), 32);
15*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
16*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), None);
17*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
18*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), None);
19*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(31));
20*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), None);
21*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
22*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
23*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(0), None);
24*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
25*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), true);
26*6994f6b1SLoGin     bitmap.invert();
27*6994f6b1SLoGin     assert_eq!(bitmap.len(), 32);
28*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
29*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
30*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), None);
31*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(31));
32*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), None);
33*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
34*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), None);
35*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
36*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(0), None);
37*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), true);
38*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
39*6994f6b1SLoGin }
40*6994f6b1SLoGin 
41*6994f6b1SLoGin #[test]
42*6994f6b1SLoGin fn test_empty_bitmap_64() {
43*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<64>::new();
44*6994f6b1SLoGin     assert_eq!(bitmap.len(), 64);
45*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
46*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), None);
47*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
48*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), None);
49*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(63));
50*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), None);
51*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
52*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
53*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(0), None);
54*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
55*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), true);
56*6994f6b1SLoGin     bitmap.invert();
57*6994f6b1SLoGin     assert_eq!(bitmap.len(), 64);
58*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
59*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
60*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), None);
61*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(63));
62*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), None);
63*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
64*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), None);
65*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
66*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(0), None);
67*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), true);
68*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
69*6994f6b1SLoGin }
70*6994f6b1SLoGin 
71*6994f6b1SLoGin /// 测试长度为32的bmp,其中第一个元素为1
72*6994f6b1SLoGin #[test]
73*6994f6b1SLoGin fn test_bitmap_32_first_1() {
74*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<32>::new();
75*6994f6b1SLoGin     bitmap.set(0, true);
76*6994f6b1SLoGin     assert_eq!(bitmap.len(), 32);
77*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
78*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
79*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(1));
80*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(0));
81*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(31));
82*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), None);
83*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
84*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
85*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(0), None);
86*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
87*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
88*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(2), Some(0));
89*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(2), Some(1));
90*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), None);
91*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(2), Some(3));
92*6994f6b1SLoGin 
93*6994f6b1SLoGin     // 反转
94*6994f6b1SLoGin 
95*6994f6b1SLoGin     bitmap.invert();
96*6994f6b1SLoGin 
97*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(1));
98*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
99*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(31));
100*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(0));
101*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
102*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), None);
103*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
104*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(0), None);
105*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
106*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
107*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(2), Some(1));
108*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(2), Some(0));
109*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), Some(3));
110*6994f6b1SLoGin }
111*6994f6b1SLoGin 
112*6994f6b1SLoGin /// 测试长度为32的bmp,其中中间某个元素为1
113*6994f6b1SLoGin #[test]
114*6994f6b1SLoGin fn test_bitmap_32_middle_1() {
115*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<32>::new();
116*6994f6b1SLoGin     bitmap.set(15, true);
117*6994f6b1SLoGin     assert_eq!(bitmap.len(), 32);
118*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
119*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(15));
120*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
121*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(15));
122*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(31));
123*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(15));
124*6994f6b1SLoGin     assert_eq!(bitmap.next_index(15), None);
125*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(15), Some(16));
126*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(15), None);
127*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(15), Some(14));
128*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
129*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
130*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(20), Some(15));
131*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(20), Some(19));
132*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), Some(15));
133*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(2), Some(3));
134*6994f6b1SLoGin 
135*6994f6b1SLoGin     // 反转
136*6994f6b1SLoGin 
137*6994f6b1SLoGin     bitmap.invert();
138*6994f6b1SLoGin 
139*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
140*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(15));
141*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(31));
142*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(15));
143*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
144*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(1), Some(15));
145*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(15), Some(14));
146*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(15), None);
147*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
148*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
149*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(30), Some(29));
150*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(30), Some(15));
151*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), Some(3));
152*6994f6b1SLoGin }
153*6994f6b1SLoGin 
154*6994f6b1SLoGin /// 测试长度为32的bmp,其中最后一个元素为1
155*6994f6b1SLoGin #[test]
156*6994f6b1SLoGin fn test_bitmap_32_last_1() {
157*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<32>::new();
158*6994f6b1SLoGin     bitmap.set(31, true);
159*6994f6b1SLoGin     assert_eq!(bitmap.len(), 32);
160*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
161*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(31));
162*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
163*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(31));
164*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(30));
165*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(31));
166*6994f6b1SLoGin     assert_eq!(bitmap.next_index(31), None);
167*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
168*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(31), None);
169*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(31), Some(30));
170*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
171*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
172*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(2), None);
173*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(2), Some(1));
174*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), Some(31));
175*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(2), Some(3));
176*6994f6b1SLoGin 
177*6994f6b1SLoGin     // 反转
178*6994f6b1SLoGin 
179*6994f6b1SLoGin     bitmap.invert();
180*6994f6b1SLoGin 
181*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
182*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(31));
183*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(30));
184*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(31));
185*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
186*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(31));
187*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(31), Some(30));
188*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(31), None);
189*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
190*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
191*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(2), Some(1));
192*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(2), None);
193*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), Some(3));
194*6994f6b1SLoGin }
195*6994f6b1SLoGin 
196*6994f6b1SLoGin /// 测试长度为64的bmp,其中第一个元素为1
197*6994f6b1SLoGin #[test]
198*6994f6b1SLoGin fn test_bitmap_64_first_1() {
199*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<64>::new();
200*6994f6b1SLoGin     bitmap.set(0, true);
201*6994f6b1SLoGin     assert_eq!(bitmap.len(), 64);
202*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
203*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
204*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(1));
205*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(0));
206*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(63));
207*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), None);
208*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
209*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
210*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(0), None);
211*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
212*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
213*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(2), Some(0));
214*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(2), Some(1));
215*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), None);
216*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(2), Some(3));
217*6994f6b1SLoGin 
218*6994f6b1SLoGin     // 反转
219*6994f6b1SLoGin 
220*6994f6b1SLoGin     bitmap.invert();
221*6994f6b1SLoGin 
222*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(1));
223*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
224*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(63));
225*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(0));
226*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
227*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), None);
228*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
229*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(0), None);
230*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
231*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
232*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(2), Some(1));
233*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(2), Some(0));
234*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), Some(3));
235*6994f6b1SLoGin }
236*6994f6b1SLoGin 
237*6994f6b1SLoGin /// 测试长度为64的bmp,其中中间某个元素为1
238*6994f6b1SLoGin #[test]
239*6994f6b1SLoGin fn test_bitmap_64_middle_1() {
240*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<64>::new();
241*6994f6b1SLoGin     bitmap.set(15, true);
242*6994f6b1SLoGin     assert_eq!(bitmap.len(), 64);
243*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
244*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(15));
245*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
246*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(15));
247*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(63));
248*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(15));
249*6994f6b1SLoGin     assert_eq!(bitmap.next_index(15), None);
250*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(15), Some(16));
251*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(15), None);
252*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(15), Some(14));
253*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
254*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
255*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(20), Some(15));
256*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(20), Some(19));
257*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), Some(15));
258*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(2), Some(3));
259*6994f6b1SLoGin 
260*6994f6b1SLoGin     // 反转
261*6994f6b1SLoGin 
262*6994f6b1SLoGin     bitmap.invert();
263*6994f6b1SLoGin 
264*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
265*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(15));
266*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(63));
267*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(15));
268*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
269*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(1), Some(15));
270*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(15), Some(14));
271*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(15), None);
272*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
273*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
274*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(63), Some(62));
275*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(62), Some(15));
276*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), Some(3));
277*6994f6b1SLoGin }
278*6994f6b1SLoGin 
279*6994f6b1SLoGin /// 测试长度为64的bmp,其中最后一个元素为1
280*6994f6b1SLoGin #[test]
281*6994f6b1SLoGin fn test_bitmap_64_last_1() {
282*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<64>::new();
283*6994f6b1SLoGin     bitmap.set(63, true);
284*6994f6b1SLoGin     assert_eq!(bitmap.len(), 64);
285*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
286*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(63));
287*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
288*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(63));
289*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(62));
290*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(63));
291*6994f6b1SLoGin     assert_eq!(bitmap.next_index(63), None);
292*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
293*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(63), None);
294*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(63), Some(62));
295*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
296*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
297*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(2), None);
298*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(2), Some(1));
299*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), Some(63));
300*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(2), Some(3));
301*6994f6b1SLoGin 
302*6994f6b1SLoGin     // 反转
303*6994f6b1SLoGin 
304*6994f6b1SLoGin     bitmap.invert();
305*6994f6b1SLoGin 
306*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
307*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(63));
308*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(62));
309*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(63));
310*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
311*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(63));
312*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(63), Some(62));
313*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(63), None);
314*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
315*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
316*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(2), Some(1));
317*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(2), None);
318*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), Some(3));
319*6994f6b1SLoGin }
320*6994f6b1SLoGin 
321*6994f6b1SLoGin /// 测试长度为64的bmp,其中第一个和最后一个元素为1
322*6994f6b1SLoGin #[test]
323*6994f6b1SLoGin fn test_bitmap_64_two_1_first() {
324*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<64>::new();
325*6994f6b1SLoGin     bitmap.set(0, true);
326*6994f6b1SLoGin     bitmap.set(63, true);
327*6994f6b1SLoGin 
328*6994f6b1SLoGin     assert_eq!(bitmap.len(), 64);
329*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
330*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
331*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(1));
332*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(63));
333*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(62));
334*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(63));
335*6994f6b1SLoGin     assert_eq!(bitmap.next_index(63), None);
336*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
337*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(63), Some(0));
338*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(63), Some(62));
339*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
340*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
341*6994f6b1SLoGin 
342*6994f6b1SLoGin     // 反转
343*6994f6b1SLoGin 
344*6994f6b1SLoGin     bitmap.invert();
345*6994f6b1SLoGin 
346*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(1));
347*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
348*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(62));
349*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(63));
350*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
351*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(63));
352*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(63), Some(62));
353*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(63), Some(0));
354*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
355*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
356*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(2), Some(1));
357*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(2), Some(0));
358*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), Some(3));
359*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(2), Some(63));
360*6994f6b1SLoGin }
361*6994f6b1SLoGin 
362*6994f6b1SLoGin /// 测试长度为64的bmp,中间两个不相邻的元素为1
363*6994f6b1SLoGin #[test]
364*6994f6b1SLoGin fn test_bitmap_64_two_1_middle() {
365*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<64>::new();
366*6994f6b1SLoGin     bitmap.set(15, true);
367*6994f6b1SLoGin     bitmap.set(63, true);
368*6994f6b1SLoGin 
369*6994f6b1SLoGin     assert_eq!(bitmap.len(), 64);
370*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
371*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(15));
372*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
373*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(63));
374*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(62));
375*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(15));
376*6994f6b1SLoGin     assert_eq!(bitmap.next_index(15), Some(63));
377*6994f6b1SLoGin     assert_eq!(bitmap.next_index(63), None);
378*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
379*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(63), Some(15));
380*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(63), Some(62));
381*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
382*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
383*6994f6b1SLoGin 
384*6994f6b1SLoGin     // 反转
385*6994f6b1SLoGin 
386*6994f6b1SLoGin     bitmap.invert();
387*6994f6b1SLoGin 
388*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
389*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(15));
390*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(62));
391*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(63));
392*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
393*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(15));
394*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(15), Some(63));
395*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(63), Some(62));
396*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(63), Some(15));
397*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
398*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
399*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(2), Some(1));
400*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(2), None);
401*6994f6b1SLoGin     assert_eq!(bitmap.next_index(2), Some(3));
402*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(2), Some(15));
403*6994f6b1SLoGin }
404*6994f6b1SLoGin 
405*6994f6b1SLoGin #[test]
406*6994f6b1SLoGin fn test_bitmap_128_two_1_seperate_first() {
407*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<128>::new();
408*6994f6b1SLoGin 
409*6994f6b1SLoGin     bitmap.set(0, true);
410*6994f6b1SLoGin     bitmap.set(127, true);
411*6994f6b1SLoGin 
412*6994f6b1SLoGin     assert_eq!(bitmap.len(), 128);
413*6994f6b1SLoGin     assert_eq!(bitmap.size(), 16);
414*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
415*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(1));
416*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(127));
417*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(126));
418*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(127));
419*6994f6b1SLoGin     assert_eq!(bitmap.next_index(127), None);
420*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
421*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(127), Some(0));
422*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(127), Some(126));
423*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(64), Some(0));
424*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
425*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
426*6994f6b1SLoGin 
427*6994f6b1SLoGin     // 反转
428*6994f6b1SLoGin 
429*6994f6b1SLoGin     bitmap.invert();
430*6994f6b1SLoGin 
431*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(1));
432*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
433*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(126));
434*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(127));
435*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
436*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(127));
437*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(127), Some(126));
438*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(127), Some(0));
439*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(64), Some(0));
440*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
441*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
442*6994f6b1SLoGin }
443*6994f6b1SLoGin 
444*6994f6b1SLoGin /// 长度128, 第63、64bit为1
445*6994f6b1SLoGin #[test]
446*6994f6b1SLoGin fn test_bitmap_128_two_1_nearby_middle() {
447*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<128>::new();
448*6994f6b1SLoGin 
449*6994f6b1SLoGin     bitmap.set(63, true);
450*6994f6b1SLoGin     bitmap.set(64, true);
451*6994f6b1SLoGin 
452*6994f6b1SLoGin     assert_eq!(bitmap.len(), 128);
453*6994f6b1SLoGin     assert_eq!(bitmap.size(), 16);
454*6994f6b1SLoGin 
455*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(63));
456*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
457*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(64));
458*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(127));
459*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(63));
460*6994f6b1SLoGin     assert_eq!(bitmap.next_index(63), Some(64));
461*6994f6b1SLoGin     assert_eq!(bitmap.next_index(64), None);
462*6994f6b1SLoGin 
463*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
464*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(63), Some(65));
465*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(64), Some(63));
466*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(64), Some(62));
467*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(63), None);
468*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(63), Some(62));
469*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(65), Some(64));
470*6994f6b1SLoGin 
471*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
472*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
473*6994f6b1SLoGin 
474*6994f6b1SLoGin     // 反转
475*6994f6b1SLoGin     bitmap.invert();
476*6994f6b1SLoGin 
477*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
478*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(63));
479*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(127));
480*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(64));
481*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
482*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(63));
483*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(63), Some(64));
484*6994f6b1SLoGin     assert_eq!(bitmap.next_index(63), Some(65));
485*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(127), Some(64));
486*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(127), Some(126));
487*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(64), Some(63));
488*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(64), Some(62));
489*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(63), Some(62));
490*6994f6b1SLoGin 
491*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
492*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
493*6994f6b1SLoGin }
494*6994f6b1SLoGin 
495*6994f6b1SLoGin #[test]
496*6994f6b1SLoGin fn test_bitmap_full_32() {
497*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<32>::new();
498*6994f6b1SLoGin     bitmap.set_all(true);
499*6994f6b1SLoGin 
500*6994f6b1SLoGin     assert_eq!(bitmap.len(), 32);
501*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
502*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
503*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), None);
504*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(31));
505*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), None);
506*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
507*6994f6b1SLoGin     assert_eq!(bitmap.next_index(31), None);
508*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), None);
509*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(31), Some(30));
510*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(31), None);
511*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
512*6994f6b1SLoGin 
513*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), true);
514*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
515*6994f6b1SLoGin 
516*6994f6b1SLoGin     // 反转
517*6994f6b1SLoGin     bitmap.invert();
518*6994f6b1SLoGin 
519*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), None);
520*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
521*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), None);
522*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(31));
523*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), None);
524*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
525*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(31), None);
526*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(31), Some(30));
527*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
528*6994f6b1SLoGin 
529*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
530*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), true);
531*6994f6b1SLoGin }
532*6994f6b1SLoGin 
533*6994f6b1SLoGin #[test]
534*6994f6b1SLoGin fn test_bitmap_full_64() {
535*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<64>::new();
536*6994f6b1SLoGin     bitmap.set_all(true);
537*6994f6b1SLoGin 
538*6994f6b1SLoGin     assert_eq!(bitmap.len(), 64);
539*6994f6b1SLoGin     assert_eq!(bitmap.size(), 8);
540*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
541*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), None);
542*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(63));
543*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), None);
544*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
545*6994f6b1SLoGin     assert_eq!(bitmap.next_index(63), None);
546*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), None);
547*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(63), Some(62));
548*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(63), None);
549*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
550*6994f6b1SLoGin 
551*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), true);
552*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
553*6994f6b1SLoGin 
554*6994f6b1SLoGin     // 反转
555*6994f6b1SLoGin     bitmap.invert();
556*6994f6b1SLoGin 
557*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), None);
558*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
559*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), None);
560*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(63));
561*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), None);
562*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
563*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(63), None);
564*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(63), Some(62));
565*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
566*6994f6b1SLoGin 
567*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
568*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), true);
569*6994f6b1SLoGin }
570*6994f6b1SLoGin 
571*6994f6b1SLoGin #[test]
572*6994f6b1SLoGin fn test_bitmap_full_100() {
573*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<100>::new();
574*6994f6b1SLoGin     bitmap.set_all(true);
575*6994f6b1SLoGin 
576*6994f6b1SLoGin     assert_eq!(bitmap.len(), 100);
577*6994f6b1SLoGin     assert_eq!(bitmap.size(), 16);
578*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
579*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), None);
580*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(99));
581*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), None);
582*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
583*6994f6b1SLoGin     assert_eq!(bitmap.next_index(99), None);
584*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), None);
585*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(99), Some(98));
586*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(99), None);
587*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
588*6994f6b1SLoGin 
589*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), true);
590*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
591*6994f6b1SLoGin 
592*6994f6b1SLoGin     // 反转
593*6994f6b1SLoGin     bitmap.invert();
594*6994f6b1SLoGin 
595*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), None);
596*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
597*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), None);
598*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(99));
599*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), None);
600*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
601*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(99), None);
602*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(99), Some(98));
603*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
604*6994f6b1SLoGin 
605*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
606*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), true);
607*6994f6b1SLoGin }
608*6994f6b1SLoGin 
609*6994f6b1SLoGin #[test]
610*6994f6b1SLoGin fn test_bitmap_full_128() {
611*6994f6b1SLoGin     let mut bitmap = StaticBitmap::<128>::new();
612*6994f6b1SLoGin     bitmap.set_all(true);
613*6994f6b1SLoGin 
614*6994f6b1SLoGin     assert_eq!(bitmap.len(), 128);
615*6994f6b1SLoGin     assert_eq!(bitmap.size(), 16);
616*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), Some(0));
617*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), None);
618*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), Some(127));
619*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), None);
620*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), Some(1));
621*6994f6b1SLoGin     assert_eq!(bitmap.next_index(127), None);
622*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), None);
623*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(127), Some(126));
624*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(127), None);
625*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
626*6994f6b1SLoGin 
627*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), true);
628*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), false);
629*6994f6b1SLoGin 
630*6994f6b1SLoGin     // 反转
631*6994f6b1SLoGin     bitmap.invert();
632*6994f6b1SLoGin 
633*6994f6b1SLoGin     assert_eq!(bitmap.first_index(), None);
634*6994f6b1SLoGin     assert_eq!(bitmap.first_false_index(), Some(0));
635*6994f6b1SLoGin     assert_eq!(bitmap.last_index(), None);
636*6994f6b1SLoGin     assert_eq!(bitmap.last_false_index(), Some(127));
637*6994f6b1SLoGin     assert_eq!(bitmap.next_index(0), None);
638*6994f6b1SLoGin     assert_eq!(bitmap.next_false_index(0), Some(1));
639*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(127), None);
640*6994f6b1SLoGin     assert_eq!(bitmap.prev_false_index(127), Some(126));
641*6994f6b1SLoGin     assert_eq!(bitmap.prev_index(0), None);
642*6994f6b1SLoGin 
643*6994f6b1SLoGin     assert_eq!(bitmap.is_full(), false);
644*6994f6b1SLoGin     assert_eq!(bitmap.is_empty(), true);
645*6994f6b1SLoGin }
646