... | ... |
@@ -665,7 +665,7 @@ genname(char *filename,char *prefix, char *postfix, char *buf, int bufsize) |
665 | 665 |
return(NULL); |
666 | 666 |
name=buf; |
667 | 667 |
} |
668 |
- for(ptr=filename+strlen(filename);ptr>0 && ptr[-1]!='/';ptr--) |
|
668 |
+ for(ptr=filename+strlen(filename);ptr>filename && ptr[-1]!='/';ptr--) |
|
669 | 669 |
; |
670 | 670 |
off=0; |
671 | 671 |
memcpy(name+off,filename,ptr-filename); |
... | ... |
@@ -14,19 +14,102 @@ |
14 | 14 |
#include <unistd.h> |
15 | 15 |
#include <string.h> |
16 | 16 |
#include <limits.h> |
17 |
+#include <fcntl.h> |
|
17 | 18 |
|
18 | 19 |
#include "recenteditor_data.h" |
19 | 20 |
|
21 |
+#define PREFIX "retest_" |
|
22 |
+#define TEST_OK "OK" |
|
23 |
+ |
|
24 |
+typedef struct test_t { |
|
25 |
+ char *name; |
|
26 |
+ char *(*fn)(redata_t *,char *,char *, int, int); |
|
27 |
+ char *param1; |
|
28 |
+ char *param2; |
|
29 |
+ int int1; |
|
30 |
+ int int2; |
|
31 |
+} test_t; |
|
32 |
+ |
|
33 |
+char *test_newfile(redata_t *redata, char *filename, char *dummy, int filesize, int dummy2); |
|
34 |
+ |
|
20 | 35 |
int |
21 | 36 |
main(int argc, char *argv[]) |
22 | 37 |
{ |
38 |
+ test_t tests[]={ |
|
39 |
+ {"newfile_16",test_newfile,PREFIX "FILE", NULL, 16, 0}, |
|
40 |
+ {"newfile_1024",test_newfile,PREFIX "FILE", NULL, 1024, 0}, |
|
41 |
+ {"newfile_32767",test_newfile,PREFIX "FILE", NULL, 32767, 0}, |
|
42 |
+ {"newfile_32768",test_newfile,PREFIX "FILE", NULL, 32768, 0}, |
|
43 |
+ {"newfile_32769",test_newfile,PREFIX "FILE", NULL, 32769, 0}, |
|
44 |
+ {"newfile_131072",test_newfile,PREFIX "FILE", NULL, 131072, 0}, |
|
45 |
+ |
|
46 |
+ }; |
|
23 | 47 |
redata_t *redata; |
24 |
- if((redata=redata_init())==NULL) { |
|
25 |
- fprintf(stderr,"ERROR: problem initializong redata module\n"); |
|
26 |
- return(1); |
|
48 |
+ int i; |
|
49 |
+ int nerrors; |
|
50 |
+ char *res; |
|
51 |
+ for(i=0,nerrors=0;i<(sizeof(tests)/sizeof(tests[0]));i++) { |
|
52 |
+ if((redata=redata_init())==NULL) { |
|
53 |
+ fprintf(stderr,"ERROR: problem initializing redata module\n"); |
|
54 |
+ return(1); |
|
55 |
+ } |
|
56 |
+ fprintf(stderr,"%s...",tests[i].name); |
|
57 |
+ res=tests[i].fn(redata,tests[i].param1,tests[i].param2,tests[i].int1,tests[i].int2); |
|
58 |
+ if(strcmp(res,TEST_OK)==0) { |
|
59 |
+ fprintf(stderr," ok.\n"); |
|
60 |
+ } else { |
|
61 |
+ fprintf(stderr," ERROR: %s\n",res); |
|
62 |
+ nerrors++; |
|
63 |
+ } |
|
64 |
+ redata_free(redata),redata=NULL; |
|
27 | 65 |
} |
28 |
-#warning TODO |
|
66 |
+ fprintf(stderr,"\n"); |
|
67 |
+ if(nerrors==0) |
|
68 |
+ fprintf(stderr,"All tests passed OK\n"); |
|
69 |
+ else |
|
70 |
+ fprintf(stderr,"%i tests failed of %i total tests.\n",nerrors,i); |
|
29 | 71 |
redata_free(redata),redata=NULL; |
72 |
+ return((nerrors==0)?0:1); |
|
30 | 73 |
} |
31 | 74 |
|
75 |
+char * |
|
76 |
+test_newfile(redata_t *redata, char *filename, char *dummy, int filesize, int dummy2) |
|
77 |
+{ |
|
78 |
+ char *mem; |
|
79 |
+ char hash129_pre[129]; |
|
80 |
+ char hash129_post[129]; |
|
81 |
+ int fd,i; |
|
82 |
+fprintf(stderr,"\ntest_newfile(%s%s%s,%s,%i,%i);\nResult: ",(filename!=NULL)?"\"":"",(filename!=NULL)?filename:"NULL",(filename!=NULL)?"\"":"",(dummy!=NULL)?dummy:"NULL",filesize,dummy2); |
|
83 |
+ /* prepare file for loading */ |
|
84 |
+ if((mem=malloc(filesize))==NULL) |
|
85 |
+ return("insuf. mem. for temp. buffer"); |
|
86 |
+ memset(mem,0,filesize); |
|
87 |
+ for(i=0;i<filesize;i++) |
|
88 |
+ ((unsigned char *)mem)[i]=(filesize%256); |
|
89 |
+ if((fd=open(filename,O_WRONLY|O_CREAT|O_TRUNC,0644))==-1) { |
|
90 |
+ free(mem),mem=NULL; |
|
91 |
+ return("couldn't create temporary file"); |
|
92 |
+ } |
|
93 |
+ write(fd,mem,filesize); |
|
94 |
+ close(fd),fd=-1; |
|
95 |
+ redata_filehash(redata,filename,hash129_pre); |
|
96 |
+ free(mem),mem=NULL; |
|
97 |
+ /* load file */ |
|
98 |
+ if(redata_load(redata,filename,0)!=0) { |
|
99 |
+ unlink(filename); |
|
100 |
+ return("couldn't load file"); |
|
101 |
+ } |
|
102 |
+ unlink(filename); |
|
103 |
+ redata_hash(redata,hash129_post); |
|
104 |
+ if(strcmp(hash129_pre,hash129_post)!=0) |
|
105 |
+ return("loaded file is corrupted"); |
|
106 |
+ /* save file */ |
|
107 |
+ redata_save(redata,filename); |
|
108 |
+ hash129_post[0]='\0'; |
|
109 |
+ redata_filehash(redata,filename,hash129_post); |
|
110 |
+ if(strcmp(hash129_pre,hash129_post)!=0) |
|
111 |
+ return("saved file is corrupted"); |
|
112 |
+ unlink(filename); |
|
113 |
+ return(TEST_OK); |
|
114 |
+} |
|
32 | 115 |
|