yaffsfs: Add yaffs_format function
[yaffs2.git] / direct / basic-test / dtest.c
index e57691903d369e416652e22db5a94ae122e32beb..9f2d2e6f82d2f810f2c5c13b22851286e2190bf8 100644 (file)
@@ -9,12 +9,9 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
  */
 
 
-
-
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
@@ -515,7 +512,7 @@ void leave_unlinked_file(const char *path,int maxIterations,int siz)
 void dumpDirFollow(const char *dname)
 {
        yaffs_DIR *d;
-       yaffs_dirent *de;
+       struct yaffs_dirent *de;
        struct yaffs_stat s;
        char str[100];
 
@@ -562,7 +559,7 @@ void dumpDirFollow(const char *dname)
 void dump_directory_tree_worker(const char *dname,int recursive)
 {
        yaffs_DIR *d;
-       yaffs_dirent *de;
+       struct yaffs_dirent *de;
        struct yaffs_stat s;
        char str[1000];
 
@@ -898,7 +895,7 @@ int huge_directory_test_on_path(char *path)
 {
 
        yaffs_DIR *d;
-       yaffs_dirent *de;
+       struct yaffs_dirent *de;
        struct yaffs_stat s;
 
        int f;
@@ -1547,7 +1544,7 @@ void lookup_test(const char *mountpt)
 
 
        yaffs_DIR *d;
-       yaffs_dirent *de;
+       struct yaffs_dirent *de;
 
        yaffs_start_up();
 
@@ -2794,7 +2791,9 @@ void max_files_test(const char *mountpt)
                result = yaffs_close(h);
        }
 
-       h =yaffs_open(hn,O_RDWR,0);
+       yaffs_unmount(mountpt);
+
+       //h =yaffs_open(hn,O_RDWR,0);
 
 }
 void case_insensitive_test(const char *mountpt)
@@ -2977,8 +2976,11 @@ void verify_big_sparse_file(int h)
 
 void large_file_test(const char *mountpt)
 {
+       char xx_buffer[1000];
+       int i;
        int handle;
        char fullname[100];
+       loff_t file_end;
 
        yaffs_trace_mask = 0;
 
@@ -3022,9 +3024,90 @@ void large_file_test(const char *mountpt)
        verify_big_sparse_file(handle);
        yaffs_unmount(mountpt);
 
+       /* Check resize by adding to the end, resizing back and verifying. */
+       yaffs_mount_common(mountpt, 0, 1);
+       printf("checking resize\n");
+        dumpDir(mountpt);
+       handle = yaffs_open(fullname, O_RDWR, 0);
+
+       file_end = yaffs_lseek(handle, 0, SEEK_END);
+       printf("file_end %lld\n", file_end);
+       for(i = 0; i < 10000; i++)
+               yaffs_write(handle, xx_buffer, sizeof(xx_buffer));
+       yaffs_ftruncate(handle, file_end);
+
+       verify_big_sparse_file(handle);
+       yaffs_unmount(mountpt);
+
 }
 
 
+void readdir_test(const char *mountpt)
+{
+       char xx_buffer[1000];
+       int i;
+       int handle;
+       char fullname[100];
+
+       yaffs_DIR *dirs[100];
+
+
+       yaffs_trace_mask = 0;
+
+       yaffs_start_up();
+
+       yaffs_mount(mountpt);
+
+       for(i = 0; i < 100; i++) {
+                dirs[i] = yaffs_opendir(mountpt);
+                printf("%2d %p,", i, dirs[i]);
+       }
+
+       printf("\n");
+
+       for(i = 0; i < 100; i++) {
+                if(dirs[i])
+                         yaffs_closedir(dirs[i]);
+       }
+
+
+       for(i = 0; i < 100; i++) {
+                dirs[i] = yaffs_opendir(mountpt);
+                printf("%2d %p,", i, dirs[i]);
+       }
+
+       yaffs_unmount(mountpt);
+
+
+}
+
+void format_test(const char *mountpt)
+{
+       int ret;
+
+       yaffs_start_up();
+
+       ret = yaffs_format(mountpt, 0, 0, 0);
+       printf("yaffs_format(...,0, 0, 0) of unmounted returned %d\n", ret);
+
+       yaffs_mount(mountpt);
+
+       ret = yaffs_format(mountpt, 0, 0, 0);
+       printf("yaffs_format(...,0, 0, 0) of mounted returned %d\n", ret);
+
+       ret = yaffs_format(mountpt, 1, 0, 0);
+       printf("yaffs_format(...,1, 0, 0) of mounted returned %d\n", ret);
+
+       ret = yaffs_mount(mountpt);
+       printf("mount should return 0 returned %d\n", ret);
+
+       ret = yaffs_format(mountpt, 1, 0, 1);
+       printf("yaffs_format(...,1, 0, 1) of mounted returned %d\n", ret);
+
+       ret = yaffs_mount(mountpt);
+       printf("mount should return -1 returned %d\n", ret);
+}
+
 int random_seed;
 int simulate_power_failure;
 
@@ -3092,11 +3175,15 @@ int main(int argc, char *argv[])
         // link_follow_test("/yaffs2");
         //basic_utime_test("/yaffs2");
 
-        //max_files_test("/yaffs2");
-        
-        start_twice("/yaffs2");
+
+       format_test("/yaffs2");
+
+       //max_files_test("/yaffs2");
+
+        //start_twice("/yaffs2");
 
         //large_file_test("/yaffs2");
+        //readdir_test("/yaffs2");
 
         //basic_utime_test("/yaffs2");
         //case_insensitive_test("/yaffs2");