Set up a test framework.
[yaffs2.git] / direct / test-framework / python / examples.py
diff --git a/direct/test-framework/python/examples.py b/direct/test-framework/python/examples.py
new file mode 100644 (file)
index 0000000..68fc95c
--- /dev/null
@@ -0,0 +1,98 @@
+##
+## YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
+##
+## Copyright (C) 2002-2010 Aleph One Ltd.
+##   for Toby Churchill Ltd and Brightstar Engineering
+##
+## Created by Charles Manning <charles@aleph1.co.uk>
+##
+## 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.
+##
+
+
+from yaffsfs import *
+
+def yaffs_ls(dname):
+    if dname[-1] != "/": dname = dname + "/"
+    dc = yaffs_opendir(dname)
+    if dc != 0 :
+        sep = yaffs_readdir(dc)
+        while bool(sep):
+            se = sep.contents
+            fullname = dname + se.d_name
+            #print fullname, " ", se.d_ino," ",ord(se.d_type)
+            st = yaffs_stat_struct()
+            result = yaffs_stat(fullname,byref(st))
+            perms = st.st_mode & 0777
+            isFile = True if st.st_mode & 0x8000 else False
+            isDir  = True if st.st_mode & 0x4000 else False
+
+            if isFile :
+                print "File ",se.d_ino, hex(perms), st.st_size, fullname, " times ", st.yst_atime, st.yst_ctime, st.yst_mtime
+            elif isDir :
+                print "Dir  ",se.d_ino, hex(perms), fullname, " times ", st.yst_atime, st.yst_ctime, st.yst_mtime
+                yaffs_ls(fullname)
+            else :
+               print "Other (",hex(st.st_mode),") ",se.d_ino, hex(perms), fullname, " times ", st.yst_atime, st.yst_ctime, st.yst_mtime
+
+            sep = yaffs_readdir(dc)
+        yaffs_closedir(dc)
+        return 0
+    else:
+        print "Could not open directory"
+        return -1
+
+def yaffs_mkfile(fname,fsize):
+    fd = yaffs_open(fname,66, 0666)
+    if fd >= 0:
+        b = create_string_buffer("",1024)
+        totalwrite=0
+        while fsize > 0:
+            thiswrite = 1024 if fsize > 1024 else fsize
+            result = yaffs_write(fd,b,thiswrite)
+            totalwrite += result
+            fsize -= result
+            if result != thiswrite:
+                fsize= 0
+
+        return totalwrite
+    else :
+        return -1
+
+def yaffs_link_test(dir):
+    fnamea = dir + '/aaa'
+    fnameb = dir + '/bbb'
+    yaffs_unlink(fnamea)
+    fd = yaffs_open(fnamea,66,0666)
+    yaffs_link(fnamea,fnameb)
+    yaffs_ls(dir)
+    yaffs_unlink(fnamea)
+    yaffs_ls(dir)
+    yaffs_unlink(fnameb)
+
+def yaffs_o_excl_test(dir):
+    fname = dir + '/aaa'
+    yaffs_unlink(fname)
+    fd = yaffs_open(fname, 66, 0666)
+    yaffs_close(fd)
+    print "Created ", fname, " result ", fd
+    fdx = yaffs_open(fname, 0301, 0666)
+    print "Attempt to create with O_EXCL existing file returned ", fdx
+    yaffs_unlink(fname)
+    fdx = yaffs_open(fname, 0301, 0666)
+    print "Attempt to create with O_EXCL non-existing file returned ", fdx
+
+    
+root = "/yaffs2"
+
+yaffs_start_up()
+yaffs_mount(root)
+
+yaffs_mkdir(root+"/dd",0666)
+
+h = yaffs_open(root+"/dd/111",66,0666)
+yaffs_close(h)
+
+yaffs_ls(root)