00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <types.h>
00031 #include <lib.h>
00032 #include <bitmap.h>
00033 #include <test.h>
00034
00035 #define TESTSIZE 533
00036
00037 int
00038 bitmaptest(int nargs, char **args)
00039 {
00040 struct bitmap *b;
00041 char data[TESTSIZE];
00042 uint32_t x;
00043 int i;
00044
00045 (void)nargs;
00046 (void)args;
00047
00048 kprintf("Starting bitmap test...\n");
00049
00050 for (i=0; i<TESTSIZE; i++) {
00051 data[i] = random()%2;
00052 }
00053
00054 b = bitmap_create(TESTSIZE);
00055 KASSERT(b != NULL);
00056
00057 for (i=0; i<TESTSIZE; i++) {
00058 KASSERT(bitmap_isset(b, i)==0);
00059 }
00060
00061 for (i=0; i<TESTSIZE; i++) {
00062 if (data[i]) {
00063 bitmap_mark(b, i);
00064 }
00065 }
00066 for (i=0; i<TESTSIZE; i++) {
00067 if (data[i]) {
00068 KASSERT(bitmap_isset(b, i));
00069 }
00070 else {
00071 KASSERT(bitmap_isset(b, i)==0);
00072 }
00073 }
00074
00075 for (i=0; i<TESTSIZE; i++) {
00076 if (data[i]) {
00077 bitmap_unmark(b, i);
00078 }
00079 else {
00080 bitmap_mark(b, i);
00081 }
00082 }
00083 for (i=0; i<TESTSIZE; i++) {
00084 if (data[i]) {
00085 KASSERT(bitmap_isset(b, i)==0);
00086 }
00087 else {
00088 KASSERT(bitmap_isset(b, i));
00089 }
00090 }
00091
00092 while (bitmap_alloc(b, &x)==0) {
00093 KASSERT(x < TESTSIZE);
00094 KASSERT(bitmap_isset(b, x));
00095 KASSERT(data[x]==1);
00096 data[x] = 0;
00097 }
00098
00099 for (i=0; i<TESTSIZE; i++) {
00100 KASSERT(bitmap_isset(b, i));
00101 KASSERT(data[i]==0);
00102 }
00103
00104 kprintf("Bitmap test complete\n");
00105 return 0;
00106 }