text: /*
   * Copyright (c) 2018 Intel Corporation.
   *
   * SPDX-License-Identifier: Apache-2.0
   */
  
  #include <ztest.h>
  #include <string.h>
  #include <fs/fs.h>
  #include "test_common.h"
  
  int test_file_open(struct fs_file_t *filep, const char *file_path)
  {
  	int res;
  
  	TC_PRINT("\nOpen tests:\n");
  
  	if (check_file_dir_exists(file_path)) {
  		TC_PRINT("Opening existing file %s\n", file_path);
  	} else {
  		TC_PRINT("Creating new file %s\n", file_path);
  	}
  
  	/* Verify fs_open() */
  	res = fs_open(filep, file_path);
  	if (res) {
  		TC_PRINT("Failed opening file [%d]\n", res);
  		return res;
  	}
  
  	TC_PRINT("Opened file %s\n", file_path);
  
  	return res;
  }
  
  int test_file_write(struct fs_file_t *filep, const char *test_str)
  {
  	ssize_t brw;
  	int res;
  
  	TC_PRINT("\nWrite tests:\n");
  
  	/* Verify fs_seek() */
  	res = fs_seek(filep, 0, FS_SEEK_SET);
  	if (res) {
  		TC_PRINT("fs_seek failed [%d]\n", res);
  		fs_close(filep);
  		return res;
  	}
  
  	TC_PRINT("Data written:\"%s\"\n\n", test_str);
  
  	/* Verify fs_write() */
  	brw = fs_write(filep, (char *)test_str, strlen(test_str));
  	if (brw < 0) {
  		TC_PRINT("Failed writing to file [%zd]\n", brw);
  		fs_close(filep);
  		return brw;
  	}
  
  	if (brw < strlen(test_str)) {
  		TC_PRINT("Unable to complete write. Volume full.\n");
  		TC_PRINT("Number of bytes written: [%zd]\n", brw);
  		fs_close(filep);
  		return TC_FAIL;
  	}
  
  	TC_PRINT("Data successfully written!\n");
  
  	return res;
  }
  
  int test_file_read(struct fs_file_t *filep, const char *test_str)
  {
  	ssize_t brw;
  	int res;
  	char read_buff[80];
  	size_t sz = strlen(test_str);
  
  	TC_PRINT("\nRead tests:\n");
  
  	res = fs_seek(filep, 0, FS_SEEK_SET);
  	if (res) {
  		TC_PRINT("fs_seek failed [%d]\n", res);
  		fs_close(filep);
  		return res;
  	}
  
  	/* Verify fs_read() */
  	brw = fs_read(filep, read_buff, sz);
  	if (brw < 0) {
  		TC_PRINT("Failed reading file [%zd]\n", brw);
  		fs_close(filep);
  		return brw;
  	}
  
  	read_buff[brw] = 0;
  
  	TC_PRINT("Data read:\"%s\"\n\n", read_buff);
  
  	if (strcmp(test_str, read_buff)) {
  		TC_PRINT("Error - Data read does not match data written\n");
  		TC_PRINT("Data read:\"%s\"\n\n", read_buff);
  		return TC_FAIL;
  	}
  
  	TC_PRINT("Data read matches data written\n");
  
  	return res;
  }
  
  int test_file_close(struct fs_file_t *filep)
  {
  	int res;
  
  	TC_PRINT("\nClose tests:\n");
  
  	res = fs_close(filep);
  	if (res) {
  		TC_PRINT("Error closing file [%d]\n", res);
  		return res;
  	}
  
  
  	return res;
  }
  
  int test_file_delete(const char *file_path)
  {
  	int res;
  
  
  	TC_PRINT("\nDelete tests:\n");
  
  	/* Verify fs_unlink() */
  	res = fs_unlink(file_path);
  	if (res) {
  		TC_PRINT("Error deleting file [%d]\n", res);
  		return res;
  	}
  
  	/* Check if file was deleted */
  	if (check_file_dir_exists(file_path)) {
  		TC_PRINT("Failed deleting %s\n", file_path);
  		return TC_FAIL;
  	}
  
  	TC_PRINT("File (%s) deleted successfully!\n", file_path);
  
  	return res;
  }
  