00001
00016 #include <stdio.h>
00017 #include <string.h>
00018 #include <stdlib.h>
00019 #if UNDER_CE
00020 # include <windows.h>
00021 #endif
00022 #include <ham/hamsterdb.h>
00023
00024 #define LOOP 10
00025
00026 void
00027 error(const char *foo, ham_status_t st)
00028 {
00029 #if UNDER_CE
00030 wchar_t title[1024];
00031 wchar_t text[1024];
00032
00033 MultiByteToWideChar(CP_ACP, 0, foo, -1, title,
00034 sizeof(title)/sizeof(wchar_t));
00035 MultiByteToWideChar(CP_ACP, 0, ham_strerror(st), -1, text,
00036 sizeof(text)/sizeof(wchar_t));
00037
00038 MessageBox(0, title, text, 0);
00039 #endif
00040 printf("%s() returned error %d: %s\n", foo, st, ham_strerror(st));
00041 exit(-1);
00042 }
00043
00044 int
00045 main(int argc, char **argv)
00046 {
00047 int i;
00048 ham_status_t st;
00049 ham_db_t *db;
00050 ham_key_t key;
00051 ham_record_t record;
00052
00053 memset(&key, 0, sizeof(key));
00054 memset(&record, 0, sizeof(record));
00055
00056
00057
00058
00059 st=ham_new(&db);
00060 if (st!=HAM_SUCCESS)
00061 error("ham_new", st);
00062
00063
00064
00065
00066
00067
00068
00069 st=ham_create_ex(db, "test.db", 0, 0664, 0);
00070 if (st!=HAM_SUCCESS)
00071 error("ham_create", st);
00072
00073
00074
00075
00076
00077
00078
00079 for (i=0; i<LOOP; i++) {
00080 key.data=&i;
00081 key.size=sizeof(i);
00082
00083 record.size=key.size;
00084 record.data=key.data;
00085
00086 st=ham_insert(db, 0, &key, &record, 0);
00087 if (st!=HAM_SUCCESS)
00088 error("ham_insert", st);
00089 }
00090
00091
00092
00093
00094
00095
00096
00097
00098 for (i=0; i<LOOP; i++) {
00099 key.data=&i;
00100 key.size=sizeof(i);
00101
00102 st=ham_find(db, 0, &key, &record, 0);
00103 if (st!=HAM_SUCCESS)
00104 error("ham_find", st);
00105
00106
00107
00108
00109 if (*(int *)record.data!=i) {
00110 printf("ham_find() ok, but returned bad value\n");
00111 return (-1);
00112 }
00113 }
00114
00115
00116
00117
00118
00119 st=ham_close(db, 0);
00120 if (st!=HAM_SUCCESS)
00121 error("ham_close", st);
00122 st=ham_open_ex(db, "test.db", 0, 0);
00123 if (st!=HAM_SUCCESS)
00124 error("ham_open", st);
00125
00126
00127
00128
00129 for (i=0; i<LOOP; i++) {
00130 key.size=sizeof(i);
00131 key.data=&i;
00132
00133 st=ham_erase(db, 0, &key, 0);
00134 if (st!=HAM_SUCCESS)
00135 error("ham_erase", st);
00136 }
00137
00138
00139
00140
00141
00142 for (i=0; i<LOOP; i++) {
00143 key.size=sizeof(i);
00144 key.data=&i;
00145
00146 st=ham_find(db, 0, &key, &record, 0);
00147 if (st!=HAM_KEY_NOT_FOUND)
00148 error("ham_find", st);
00149 }
00150
00151
00152
00153
00154 st=ham_close(db, 0);
00155 if (st!=HAM_SUCCESS)
00156 error("ham_close", st);
00157
00158
00159
00160
00161 ham_delete(db);
00162
00163 #if UNDER_CE
00164 error("success", 0);
00165 #endif
00166 printf("success!\n");
00167 return (0);
00168 }
00169
00170 #if UNDER_CE
00171 int
00172 _tmain(int argc, _TCHAR* argv[])
00173 {
00174 return (main(0, 0));
00175 }
00176 #endif