Add some more basic tests
[yaffs2.git] / direct / test-framework / basic-tests / dtest.c
index 665071b052a49cf12e135fad13d323ae9eb11e5d..420a3dcad2fa051d3169e8350eeaddebab1951b4 100644 (file)
@@ -3074,7 +3074,7 @@ void large_file_test(const char *mountpt)
        yaffs_unmount(mountpt);
 
 
-       yaffs_mount_common(mountpt, 0, 1);
+       yaffs_mount3(mountpt, 0, 1);
        printf("mounted with no checkpt\n");
         dumpDir(mountpt);
        handle = yaffs_open(fullname, O_RDONLY, 0);
@@ -3082,7 +3082,7 @@ void large_file_test(const char *mountpt)
        yaffs_unmount(mountpt);
 
        /* Check resize by adding to the end, resizing back and verifying. */
-       yaffs_mount_common(mountpt, 0, 1);
+       yaffs_mount3(mountpt, 0, 1);
        printf("checking resize\n");
         dumpDir(mountpt);
        handle = yaffs_open(fullname, O_RDWR, 0);
@@ -3199,7 +3199,6 @@ void readdir_test(const char *mountpt)
 
        yaffs_unmount(mountpt);
 
-
 }
 
 void format_test(const char *mountpt)
@@ -3209,21 +3208,25 @@ void format_test(const char *mountpt)
        yaffs_start_up();
 
        ret = yaffs_format(mountpt, 0, 0, 0);
-       printf("yaffs_format(...,0, 0, 0) of unmounted returned %d\n", ret);
+       printf("yaffs_format(...,0, 0, 0) of unmounted returned %d."
+               " Should return 0\n\n\n", ret);
 
        yaffs_mount(mountpt);
 
        ret = yaffs_format(mountpt, 0, 0, 0);
-       printf("yaffs_format(...,0, 0, 0) of mounted returned %d\n", ret);
+       printf("yaffs_format(...,0, 0, 0) of mounted returned %d."
+               " Should return -1 (busy)\n\n\n", ret);
 
        ret = yaffs_format(mountpt, 1, 0, 0);
-       printf("yaffs_format(...,1, 0, 0) of mounted returned %d\n", ret);
+       printf("yaffs_format(...,1, 0, 0) of mounted returned %d."
+               " Should return 0.\n\n\n", ret);
 
        ret = yaffs_mount(mountpt);
-       printf("mount should return 0 returned %d\n", ret);
+       printf("mount should return 0 returned %d\n\n\n", ret);
 
        ret = yaffs_format(mountpt, 1, 0, 1);
-       printf("yaffs_format(...,1, 0, 1) of mounted returned %d\n", ret);
+       printf("yaffs_format(...,1, 0, 1) of mounted returned %d."
+               " Should return 0.\n\n\n", ret);
 
        ret = yaffs_mount(mountpt);
        printf("mount should return -1 returned %d\n", ret);
@@ -3297,6 +3300,106 @@ void dir_fd_test(const char *mountpt)
 
 }
 
+void create_delete_many_files_test(const char *mountpt)
+{
+
+       char fn[100];
+       int i;
+       int fsize;
+       char buffer[1000];
+       int h;
+       int wrote;
+
+
+       yaffs_start_up();
+       yaffs_mount(mountpt);
+
+       for(i = 1; i < 2000; i++) {
+               sprintf(fn,"%s/f%d",mountpt, i);
+               fsize = (i%10) * 10000 + 20000;
+               h = yaffs_open(fn, O_CREAT | O_TRUNC | O_RDWR, 0666);
+               while (fsize > 0) {
+                       wrote = yaffs_write(h, buffer, sizeof(buffer));
+                       if (wrote != sizeof(buffer)) {
+                               printf("Writing file %s, only wrote %d bytes\n", fn, wrote);
+                               break;
+                       }
+                       fsize -= wrote;
+               }
+               yaffs_unlink(fn);
+               yaffs_close(h);
+       }
+
+}
+
+void find_device_check(void)
+{
+       char name[200];
+
+       yaffs_start_up();
+       yaffs_mount("/nand");
+       yaffs_mount("/");
+       yaffs_mkdir("/nandxxx", 0666);
+       yaffs_mkdir("/nand/xxx", 0666);
+}
+
+
+void try_opendir(const char *str)
+{
+       yaffs_DIR *d;
+
+       d = yaffs_opendir(str);
+
+       printf("%s --> %p\n", str, d);
+
+       if (d)
+               yaffs_closedir(d);
+}
+
+void opendir_test(void)
+{
+       yaffs_start_up();
+       yaffs_mount("/nand/");
+       yaffs_symlink("x", "/nand/sym");
+       yaffs_mkdir("/nand/x",0666);
+       yaffs_mkdir("/nand/y",0666);
+       yaffs_mkdir("/nand/x/r",0666);
+       yaffs_mkdir("/nand/x/s",0666);
+       yaffs_mkdir("/nand/x/t",0666);
+
+       try_opendir("nand/x/.");
+       try_opendir("nand/x/r/..");
+       try_opendir("nand/x/./");
+       try_opendir("nand/x/r/../");
+       try_opendir("/nand/x");
+       try_opendir("/nand/x/");
+       try_opendir("nand/x");
+       try_opendir("nand/sym");
+       try_opendir("nand/sym/");
+
+}
+
+void try_rmdir(const char *str)
+{
+       int ret;
+
+       ret= yaffs_rmdir(str);
+
+       printf("rmdir(\"%s\") --> %d, errno %d\n", str, ret, yaffs_get_error());
+
+}
+
+void rmdir_test2(void)
+{
+       yaffs_start_up();
+
+       yaffs_mount("/nand/");
+       yaffs_mkdir("/nand/z",0666);
+       try_rmdir("/nand/z");
+       yaffs_mkdir("/nand/z",0666);
+       try_rmdir("/nand/z/");
+}
+
 int random_seed;
 int simulate_power_failure;
 
@@ -3380,8 +3483,14 @@ int main(int argc, char *argv[])
         //yy_test("/nand");
         //dir_rename_test("/nand");
 
-       dir_fd_test("/nand");
+       //dir_fd_test("/nand");
+
+       //format_test("/nand");
+
+       //opendir_test();
+       rmdir_test2();
 
+       //create_delete_many_files_test("/nand");
         return 0;
 
 }