X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Ftimothy_tests%2Fquick_tests%2Ftest_yaffs_read_EINVAL.c;h=c5b5455ef9a548338d70907dbf415ae0340c0d2e;hp=7e7d43ef2a0e82339bcbb5296fbb36f5a32372ec;hb=dd93a8090e78af3a429a55349cb05a4bf6fb2c39;hpb=f2c8e9cf2b72e5ac6a776a1a1b188f8595e7c35c diff --git a/direct/timothy_tests/quick_tests/test_yaffs_read_EINVAL.c b/direct/timothy_tests/quick_tests/test_yaffs_read_EINVAL.c index 7e7d43e..c5b5455 100644 --- a/direct/timothy_tests/quick_tests/test_yaffs_read_EINVAL.c +++ b/direct/timothy_tests/quick_tests/test_yaffs_read_EINVAL.c @@ -11,40 +11,131 @@ * published by the Free Software Foundation. */ -#include "test_yaffs_read_EBADF.h" +#include "test_yaffs_read_EINVAL.h" -static int handle=0; +static int handle = -1; +static char *file_name = NULL; + +int test_yaffs_read_EINVAL(void) +{ + int error_code = 0; + handle=yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE); + char text[2000000]; + int output=0; + + if (handle<0){ + print_message("could not open file\n",2); + return -1; + } + + /*there needs a large amout of test in the file in order to trigger EINVAL */ + output=test_yaffs_read_EINVAL_init(); + if (output<0){ + print_message("could not write text to the file\n",2); + return -1; + } -int test_yaffs_read_EBADF(void){ - handle=test_yaffs_open(); - char text[20]="\0"; - int output=0; - //printf("handle %d\n",handle); if (handle>=0){ - output=yaffs_read(-1, text, FILE_TEXT_NBYTES); - //printf("yaffs_test_read output: %d\n",output); - //printf("text in file is: '%s' expected text is '%s'\n",text,FILE_TEXT); + output=yaffs_read(handle, text, -1); if (output<0){ - if (0==memcmp(text,FILE_TEXT,FILE_TEXT_NBYTES)){ + error_code=yaffs_get_error(); + if (abs(error_code)== EINVAL){ return 1; + } else { + print_message("different error than expected\n",2); + return -1; } - else { - printf("returned error does not match the the expected error\n"); + } else{ + print_message("read a negative number of bytes (which is a bad thing)\n",2); + return -1; + } + } else { + print_message("error opening file\n",2); + return -1; + } +} + +int test_yaffs_read_EINVAL_clean(void) +{ + int output=0; + if (handle>=0){ + if(file_name){ + free(file_name); + file_name = NULL; + } + + + output= yaffs_truncate(FILE_PATH,FILE_SIZE ); + if (output>=0){ + output=test_yaffs_write(); + if (output<0){ + print_message("failed to write to file\n",2); return -1; + } else { + output=test_yaffs_write_clean(); + if (output<0){ + print_message("failed to clean the write_to_file function\n",2); + } } + } else { + print_message("failed to truncate file\n",2); + return -1; } - else{ - printf("read a non-existing file (which is a bad thing)\n"); + + if(output>=0){ + output=yaffs_close(handle); + if (output>=0){ + return 1; + } else { + print_message("could not close the handle\n",2); + return -1; + } + } else { + print_message("failed to fix the file\n",2); return -1; } + } else { + print_message("no open handle\n",2); + return -1; } - else { - printf("error opening file\n"); +} + +int test_yaffs_read_EINVAL_init(void) +{ + int output=0; + int x=0; + + int file_name_length=1000000; + + file_name = malloc(file_name_length); + if(!file_name){ + print_message("unable to create file text\n",2); return -1; } -} + strcat(file_name,YAFFS_MOUNT_POINT); + for (x=strlen(YAFFS_MOUNT_POINT); x=0){ + output= yaffs_write(handle, file_name, file_name_length-1); + if (output<0){ + print_message("could not write text to file\n",2); + return -1; + } else { + + return 1; + } + + } else { + print_message("error opening file\n",2); + return -1; + } + } + +