#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
#include <ermanifest.h>
Go to the source code of this file.
Defines | |
#define | MAX_LEN 1024 |
#define | STROKE_LEN 2000 |
Functions | |
void | dumparg (int argc, char *argv[]) |
void | usage () |
void | testOpen (const char *pathname) |
void | testWrite (const char *pathname) |
void | testCreate (const char *pathname) |
void | testHugeCreate (const char *pathname) |
void | testBrowserIndexFile (const char *pathName) |
void | testDel (const char *pathName) |
void | testSpeXpath (const char *pathname) |
void | testSample (const char *pathname) |
int | main (int argc, char *argv[]) |
#define MAX_LEN 1024 |
void dumparg | ( | int | argc, | |
char * | argv[] | |||
) |
int main | ( | int | argc, | |
char * | argv[] | |||
) |
Definition at line 375 of file test.c.
00376 { 00377 dumparg(argc, argv); 00378 /* 00379 if (argc != 3) 00380 { 00381 usage(); 00382 return 1; 00383 } 00384 */ 00385 00386 // testOpen(argv[1]); 00387 // testCreate(argv[1]); 00388 // testBrowserIndexFile(argv[1]); 00389 // testHugeCreate(argv[1]); 00390 // testDel(argv[1]); 00391 00392 00393 // testSpeXpath(argv[1]); 00394 testSample(argv[1]); 00395 return 1; 00396 }
void testBrowserIndexFile | ( | const char * | pathName | ) |
Definition at line 233 of file test.c.
00234 { 00235 // time stamp 00236 struct timeval t1, t2; 00237 gettimeofday(&t1, NULL); 00238 00239 erManifest manifest; 00240 00241 char url[MAX_LEN] = {0}; 00242 char number[MAX_LEN] = {0}; 00243 char type[MAX_LEN] = {0}; 00244 char xpath[MAX_LEN] = {0}; 00245 ermXmlOpenFile(pathName, &manifest); 00246 00247 printf("open done!\n"); 00248 int i = 1, j = 1; 00249 int ret = RET_OK; 00250 while (1) 00251 { 00252 sprintf(xpath, "/package/index/pagelist[%d]", i); 00253 ret = ermXmlGetAttributeString(&manifest, xpath, "type", type, MAX_LEN); 00254 ret = ermXmlGetAttributeString(&manifest, xpath, "count", number, MAX_LEN); 00255 if (RET_ERR == ret) break; 00256 printf("type:\t%s\tcount:\t%s\n", type, number); 00257 00258 j = 1; 00259 while(1) 00260 { 00261 sprintf(xpath, "/package/index/pagelist[%d]/page[%d]", i, j); 00262 00263 memset(url, 0, MAX_LEN); memset(number, 0, MAX_LEN); 00264 ermXmlGetAttributeString(&manifest, xpath, "url", url, MAX_LEN); 00265 ret = ermXmlGetAttributeString(&manifest, xpath, "number", number, MAX_LEN); 00266 00267 if (RET_ERR == ret) break; 00268 printf("url:\t%s\t", url); 00269 printf("number:\t%s\n", number); 00270 ++j; 00271 } 00272 00273 ++i; 00274 } 00275 ermXmlClose(&manifest); 00276 00277 gettimeofday(&t2, NULL); 00278 printf("time used\tsec %ld usec %ld\n", t2.tv_sec -t1.tv_sec, t2.tv_usec - t1.tv_usec); 00279 }
void testCreate | ( | const char * | pathname | ) |
Definition at line 147 of file test.c.
00148 { 00149 erManifest manifest; 00150 00151 char data[MAX_LEN] = {0}; 00152 /* create a new file, it will overwrite existing file */ 00153 00154 ermXmlCreateFile(pathname, &manifest); 00155 printf("create done!\n"); 00156 00157 memset(&data[0], 0, MAX_LEN); 00158 strncpy(data, "abcde", 5); 00159 ermXmlNewString(&manifest, "/", "packet", data); 00160 printf("newstring done!\n"); 00161 ermXmlNewString(&manifest, "/packet", "metadata", data); 00162 00163 ermXmlNewString(&manifest, "/packet/metadata", "y-metadata", data); 00164 00165 ermXmlNewString(&manifest, "/packet/metadata/y-metadata", "pages", ""); 00166 ermXmlNewString(&manifest, "/packet/metadata/y-metadata/pages", "page", ""); 00167 ermXmlNewString(&manifest, "/packet/metadata/y-metadata/pages/page[1]", "strokes", ""); 00168 ermXmlNewString(&manifest, "/packet/metadata/y-metadata/pages/page[1]/strokes", "stroke", ""); 00169 00170 ermXmlNewString(&manifest, "/packet/metadata/y-metadata/pages", "page", ""); 00171 ermXmlNewString(&manifest, "/packet/metadata/y-metadata/pages/page[2]", "strokes", ""); 00172 ermXmlNewString(&manifest, "/packet/metadata/y-metadata/pages/page[2]/strokes", "stroke", ""); 00173 00174 00175 printf("save done!\n"); 00176 ermXmlSaveAndClose(&manifest); 00177 }
void testDel | ( | const char * | pathName | ) |
Definition at line 281 of file test.c.
00282 { 00283 erManifest manifest; 00284 00285 00286 ermXmlOpenFile(pathName, &manifest); 00287 00288 printf("Open done!\n"); 00289 00290 int i = 0; 00291 for(; i < 10; ++i) 00292 { 00293 ermXmlRemoveNode(&manifest, "/packet/metadata/y-metadata/pages/page[1]"); 00294 } 00295 ermXmlSaveAndClose(&manifest); 00296 00297 }
void testHugeCreate | ( | const char * | pathname | ) |
Definition at line 180 of file test.c.
00181 { 00182 erManifest manifest; 00183 00184 char data[MAX_LEN] = {0}; 00185 /* create a new file, it will overwrite existing file */ 00186 00187 ermXmlCreateFile(pathname, &manifest); 00188 printf("create done!\n"); 00189 00190 memset(&data[0], 0, MAX_LEN); 00191 strncpy(data, "abcde", 5); 00192 ermXmlNewString(&manifest, "/", "packet", data); 00193 printf("newstring done!\n"); 00194 ermXmlNewString(&manifest, "/packet", "metadata", data); 00195 00196 ermXmlNewString(&manifest, "/packet/metadata", "y-metadata", data); 00197 ermXmlNewString(&manifest, "/packet/metadata/y-metadata", "pages", ""); 00198 00199 int pages = 4; // 100 pages 00200 int i = 1; 00201 char xPath[MAX_LEN] = {0}; 00202 char stroke[STROKE_LEN] = {0}; 00203 for(;i < pages; ++i) 00204 { 00205 00206 ermXmlNewString(&manifest, "/packet/metadata/y-metadata/pages", "page", ""); 00207 memset(xPath, 0, MAX_LEN); 00208 snprintf(xPath, MAX_LEN, "/packet/metadata/y-metadata/pages/page[%d]", i); 00209 ermXmlNewString(&manifest, xPath, "strokes", ""); 00210 00211 int strokes = 10; 00212 int j = 1; 00213 strcat(xPath, "/strokes"); 00214 00215 memset(stroke, 'a', STROKE_LEN - 10); 00216 for(;j < strokes; ++j) 00217 { 00218 ermXmlNewString(&manifest, xPath, "stroke", stroke); 00219 } 00220 } 00221 00222 i = 1; 00223 snprintf(xPath, MAX_LEN, "/packet/metadata/y-metadata/pages/page[%d]", i); 00224 ermXmlSetString(&manifest, xPath, ""); 00225 00226 xmlDocDump(stderr, manifest.pDoc); 00227 00228 printf("save done!\n"); 00229 ermXmlSaveAndClose(&manifest); 00230 }
void testOpen | ( | const char * | pathname | ) |
Definition at line 46 of file test.c.
00047 { 00048 erManifest manifest; 00049 00050 ermXmlOpenFile(pathname, &manifest); 00051 00052 char data[MAX_LEN] = {0}; 00053 00054 // test memory leak 00055 fprintf(stderr, "test memory leak\n"); 00056 int i = 0; 00057 for( ; i < 10000000; ++i) 00058 { 00059 ermXmlGetString(&manifest, "/package/metadata/dc-metadata/Title", data, MAX_LEN); 00060 } 00061 fprintf(stderr, "\n\ntest done!!!!!!!\n\n"); 00062 sleep(100); 00063 fprintf(stderr, "result: %s\n", data); 00064 00065 ermXmlGetString(&manifest, "/package/metadata/dc-metadata/Description", data, MAX_LEN); 00066 fprintf(stderr, "result: %s\n", data); 00067 00068 00069 ermXmlGetString(&manifest, "/package/metadata/dc-metadata/Date", data, MAX_LEN); 00070 fprintf(stderr, "result: %s\n", data); 00071 00072 ermXmlGetString(&manifest, "/package/metadata/dc-metadata/Format", data, MAX_LEN); 00073 fprintf(stderr, "result: %s\n", data); 00074 00075 ermXmlGetString(&manifest, "/package/metadata/dc-metadata/Identifier", data, MAX_LEN); 00076 fprintf(stderr, "result: %s\n", data); 00077 00078 ermXmlGetString(&manifest, "/package/metadata/dc-metadata/Language", data, MAX_LEN); 00079 fprintf(stderr, "result: %s\n", data); 00080 00081 ermXmlGetString(&manifest, "/package/metadata/dc-metadata/Type", data, MAX_LEN); 00082 fprintf(stderr, "result: %s\n", data); 00083 00084 ermXmlGetString(&manifest, "/package/metadata/dc-metadata/Type", data, MAX_LEN); 00085 fprintf(stderr, "result: %s\n", data); 00086 00087 00088 ermXmlGetString(&manifest, "/package/metadata/y-metadata/FileSize", data, MAX_LEN); 00089 fprintf(stderr, "result: %s\n", data); 00090 00091 int itemSize = -1; 00092 ermXmlGetInt(&manifest, "/package/metadata/y-metadata/ItemSize", &itemSize); 00093 fprintf(stderr, "result: %d\n", itemSize); 00094 00095 ermXmlClose(&manifest); 00096 }
void testSample | ( | const char * | pathname | ) |
Definition at line 328 of file test.c.
00329 { 00330 erManifest manifest; 00331 00332 char data[MAX_LEN] = {0}; 00333 /* create a new file, it will overwrite existing file */ 00334 00335 ermXmlCreateFile(pathname, &manifest); 00336 printf("create done!\n"); 00337 00338 memset(&data[0], 0, MAX_LEN); 00339 ermXmlNewString(&manifest, "/", "packet", ""); 00340 printf("newstring done!\n"); 00341 ermXmlNewString(&manifest, "/packet", "metadata", ""); 00342 sleep(1); 00343 printf("1 done!\n"); 00344 00345 ermXmlNewString(&manifest, "/packet/metadata", "y-metadata", ""); 00346 00347 ermXmlNewString(&manifest, "/packet/metadata/y-metadata", "pages", ""); 00348 00349 ermXmlNewString(&manifest, "/packet/metadata", "index", ""); 00350 00351 ermXmlNewString(&manifest, "/packet/metadata/index", "pagelist", ""); 00352 00353 ermXmlSetAttributeString(&manifest, "/packet/metadata/index/pagelist", "type", "irfanview", 9); 00354 ermXmlSetAttributeInt(&manifest, "/packet/metadata/index/pagelist", "count", 689); 00355 00356 printf("going to create page list!\n"); 00357 int pages = 689; 00358 int i = 1; 00359 char xPath[MAX_LEN] = {0}; 00360 char tmp[MAX_LEN] = {0}; 00361 for(i = 1;i <= pages; ++i) 00362 { 00363 ermXmlNewString(&manifest, "/packet/metadata/index/pagelist", "page", ""); 00364 memset(xPath, 0, MAX_LEN); 00365 snprintf(xPath, MAX_LEN, "/packet/metadata/index/pagelist/page[%d]", i); 00366 snprintf(tmp, MAX_LEN, "%03d", i); 00367 ermXmlSetAttributeString(&manifest, xPath, "number", tmp, strlen(tmp)); 00368 ermXmlSetAttributeString(&manifest, xPath, "url", "pagl04.html",11); 00369 } 00370 ermXmlSaveAndClose(&manifest); 00371 }
void testSpeXpath | ( | const char * | pathname | ) |
Definition at line 299 of file test.c.
00300 { 00301 erManifest manifest; 00302 00303 if (RET_OK !=ermXmlOpenFile(pathname, &manifest)) 00304 { 00305 fprintf(stderr, "could not open file!\n"); 00306 return; 00307 } 00308 00309 char xPath[1024] = {0}; 00310 char data[MAX_LEN] = {0}; 00311 snprintf(xPath, 1024, "//page[@id=\"%s\"]", "1"); 00312 fprintf(stderr, "%s\n", xPath); 00313 if (RET_ERR == ermXmlExist(&manifest, xPath)) 00314 { 00315 fprintf(stderr, "error!\n"); 00316 ermXmlClose(&manifest); 00317 return; 00318 } 00319 00320 strncat(xPath, "/strokes/stroke", 1024); 00321 ermXmlGetString(&manifest, xPath, data, MAX_LEN); 00322 fprintf(stderr, "result: %s\n", data); 00323 00324 ermXmlClose(&manifest); 00325 }
void testWrite | ( | const char * | pathname | ) |
Definition at line 99 of file test.c.
00100 { 00101 erManifest manifest; 00102 00103 ermXmlOpenFile(pathname, &manifest); 00104 00105 char data[MAX_LEN] = {0}; 00106 00107 char *des = "This is a demo test!这是一个中文测试"; 00108 if (RET_OK == ermXmlSetString(&manifest, "/package/metadata/dc-metadata/Description", des)) 00109 printf("set string ok!\n"); 00110 else 00111 printf("set string failed!\n"); 00112 00113 ermXmlGetString(&manifest, "/package/metadata/dc-metadata/Description", data, MAX_LEN); 00114 fprintf(stderr, "result: %s\n", data); 00115 00116 int itemSize = 4567890; 00117 ermXmlSetInt(&manifest, "/package/metadata/y-metadata/ItemSize", itemSize); 00118 00119 ermXmlNewString(&manifest, "/package/metadata/y-metadata", "a", "content of a"); 00120 ermXmlNewString(&manifest, "/package/metadata/y-metadata/a", "b", "content of b"); 00121 ermXmlNewString(&manifest, "/package/metadata/y-metadata/a/b", "c", "content of c"); 00122 ermXmlNewString(&manifest, "/package/metadata/y-metadata/a/b/c", "d", "content of d"); 00123 ermXmlNewInt(&manifest, "/package/metadata/y-metadata/a/b/c/d", "e", 987654); 00124 00125 00126 /* test attributes */ 00127 /* "/package/index/pagelist[@type='paper']" */ 00128 ermXmlGetAttributeString(&manifest, "/package/index/pagelist[1]/page", "url", data, MAX_LEN); 00129 fprintf(stderr, "result: %s\n", data); 00130 ermXmlGetAttributeString(&manifest, "/package/index/pagelist[2]/page", "url", data, MAX_LEN); 00131 fprintf(stderr, "result: %s\n", data); 00132 ermXmlGetAttributeString(&manifest, "/package/index/pagelist[3]/page", "url", data, MAX_LEN); 00133 fprintf(stderr, "result: %s\n", data); 00134 00135 /* try to change */ 00136 char *attr = "this is attribute test这是中文属性测试"; 00137 strncpy(&data[0], attr, strlen(attr)); 00138 ermXmlSetAttributeString(&manifest, "/package/index/pagelist[1]/page", "url", data, MAX_LEN); 00139 00140 /* add a new attribute */ 00141 ermXmlSetAttributeString(&manifest, "/package/index/pagelist[1]/page", "abc", data, MAX_LEN); 00142 00143 ermXmlSaveAndClose(&manifest); 00144 }
void usage | ( | ) |