/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- bitmaptest
1 /*
2 * Copyright (c) 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009
3 * The President and Fellows of Harvard College.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of the University nor the names of its contributors
14 * may be used to endorse or promote products derived from this software
15 * without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 */
29
30 #include <types.h>
31 #include <lib.h>
32 #include <bitmap.h>
33 #include <test.h>
34
35 #define TESTSIZE 533
36
37 int
38 bitmaptest(int nargs, char **args)
39 {
40 struct bitmap *b;
41 char data[TESTSIZE];
42 uint32_t x;
43 int i;
44
45 (void)nargs;
46 (void)args;
47
48 kprintf("Starting bitmap test...\n");
49
50 for (i=0; i<TESTSIZE; i++) {
51 data[i] = random()%2;
52 }
53
54 b = bitmap_create(TESTSIZE);
55 KASSERT(b != NULL);
56
57 for (i=0; i<TESTSIZE; i++) {
58 KASSERT(bitmap_isset(b, i)==0);
59 }
60
61 for (i=0; i<TESTSIZE; i++) {
62 if (data[i]) {
63 bitmap_mark(b, i);
64 }
65 }
66 for (i=0; i<TESTSIZE; i++) {
67 if (data[i]) {
68 KASSERT(bitmap_isset(b, i));
69 }
70 else {
71 KASSERT(bitmap_isset(b, i)==0);
72 }
73 }
74
75 for (i=0; i<TESTSIZE; i++) {
76 if (data[i]) {
77 bitmap_unmark(b, i);
78 }
79 else {
80 bitmap_mark(b, i);
81 }
82 }
83 for (i=0; i<TESTSIZE; i++) {
84 if (data[i]) {
85 KASSERT(bitmap_isset(b, i)==0);
86 }
87 else {
88 KASSERT(bitmap_isset(b, i));
89 }
90 }
91
92 while (bitmap_alloc(b, &x)==0) {
93 KASSERT(x < TESTSIZE);
94 KASSERT(bitmap_isset(b, x));
95 KASSERT(data[x]==1);
96 data[x] = 0;
97 }
98
99 for (i=0; i<TESTSIZE; i++) {
100 KASSERT(bitmap_isset(b, i));
101 KASSERT(data[i]==0);
102 }
103
104 kprintf("Bitmap test complete\n");
105 return 0;
106 }