xref: /haiku/src/tests/add-ons/kernel/file_systems/bfs/array/array.cpp (revision 425ac1b60a56f4df7a0e88bd784545c0ec4fa01f)
1244d5b90SAxel Dörfler #include "Utility.h"
2244d5b90SAxel Dörfler 
3244d5b90SAxel Dörfler #include <List.h>
4244d5b90SAxel Dörfler #include <stdlib.h>
5244d5b90SAxel Dörfler #include <stdio.h>
6244d5b90SAxel Dörfler 
7244d5b90SAxel Dörfler 
8244d5b90SAxel Dörfler const int32 kBlockSize = 1024;
9244d5b90SAxel Dörfler 
10244d5b90SAxel Dörfler int32 gNumber = 100000;
11244d5b90SAxel Dörfler BList gList;
12244d5b90SAxel Dörfler BlockArray gArray(kBlockSize);
13244d5b90SAxel Dörfler 
14244d5b90SAxel Dörfler 
15244d5b90SAxel Dörfler void
dumpArray()16244d5b90SAxel Dörfler dumpArray()
17244d5b90SAxel Dörfler {
18244d5b90SAxel Dörfler 	printf("  items in array: %ld\n",gArray.CountItems());
19244d5b90SAxel Dörfler 	printf("  blocks used:    %ld\n",gArray.BlocksUsed());
20244d5b90SAxel Dörfler 	printf("  size:           %ld\n",gArray.Size());
21244d5b90SAxel Dörfler }
22244d5b90SAxel Dörfler 
23244d5b90SAxel Dörfler 
24244d5b90SAxel Dörfler int
main(int argc,char ** argv)25244d5b90SAxel Dörfler main(int argc,char **argv)
26244d5b90SAxel Dörfler {
27244d5b90SAxel Dörfler 	srand(42);
28244d5b90SAxel Dörfler 
29244d5b90SAxel Dörfler 	// insert numbers in the array
30244d5b90SAxel Dörfler 
31244d5b90SAxel Dörfler 	for (int32 i = 0;i < gNumber;i++) {
32244d5b90SAxel Dörfler 		int32 num = rand();
33244d5b90SAxel Dörfler 		if (num == 0)
34244d5b90SAxel Dörfler 			num++;
35244d5b90SAxel Dörfler 
36244d5b90SAxel Dörfler 		if (gArray.Insert(num) == B_OK)
37244d5b90SAxel Dörfler 			gList.AddItem((void *)num);
38244d5b90SAxel Dörfler 		else if (gArray.Find(num) < 0) {
39244d5b90SAxel Dörfler 			printf("Could not insert entry in array, but it's not in there either...\n");
40244d5b90SAxel Dörfler 			dumpArray();
41244d5b90SAxel Dörfler 		} else
42244d5b90SAxel Dörfler 			printf("hola\n");
43244d5b90SAxel Dörfler 	}
44244d5b90SAxel Dörfler 
45244d5b90SAxel Dörfler 	// check for numbers in the array
46244d5b90SAxel Dörfler 
47244d5b90SAxel Dörfler 	for (int32 i = 0;i < gNumber;i++) {
48244d5b90SAxel Dörfler 		int32 num = (int32)gList.ItemAt(i);
49244d5b90SAxel Dörfler 
50244d5b90SAxel Dörfler 		if (gArray.Find(num) < 0) {
51244d5b90SAxel Dörfler 			printf("could not found entry %ld in array!\n",num);
52244d5b90SAxel Dörfler 			dumpArray();
53244d5b90SAxel Dörfler 		}
54244d5b90SAxel Dörfler 	}
55244d5b90SAxel Dörfler 
56244d5b90SAxel Dörfler 	// iterate through the array
57244d5b90SAxel Dörfler 
58244d5b90SAxel Dörfler 	sorted_array *array = gArray.Array();
59244d5b90SAxel Dörfler 	for (int32 i = 0;i < array->count;i++) {
60244d5b90SAxel Dörfler 		if (!gList.HasItem((void *)array->values[i])) {
61*425ac1b6SAlexander von Gluck IV 			printf("Could not find entry %lld at %ld in list!\n",array->values[i],i);
62244d5b90SAxel Dörfler 			dumpArray();
63244d5b90SAxel Dörfler 		}
64244d5b90SAxel Dörfler 	}
65244d5b90SAxel Dörfler 	return 0;
66244d5b90SAxel Dörfler }
67