blob: 555cf6b5e73f77206a25c534c562d1764cb837e9 [file] [log] [blame]
/*
* Copyright (c) 2018 Intel Corporation.
* Copyright (c) 2020 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "test_fat.h"
#include <ff.h>
/* FatFs work area */
static FATFS fat_fs;
/* mounting info */
static struct fs_mount_t fatfs_mnt = {
.type = FS_FATFS,
.mnt_point = FATFS_MNTP,
.fs_data = &fat_fs,
};
static int test_mount_no_format(void)
{
int ret = 0;
fatfs_mnt.flags = FS_MOUNT_FLAG_NO_FORMAT;
ret = fs_mount(&fatfs_mnt);
if (ret >= 0) {
TC_PRINT("Expected failure\n");
return TC_FAIL;
}
fatfs_mnt.flags = 0;
return TC_PASS;
}
static int test_mount_rd_only_no_sys(void)
{
int ret = 0;
fatfs_mnt.flags = FS_MOUNT_FLAG_READ_ONLY;
ret = fs_mount(&fatfs_mnt);
if (ret >= 0) {
TC_PRINT("Expected failure\n");
return TC_FAIL;
}
fatfs_mnt.flags = 0;
return TC_PASS;
}
static int test_mount_use_disk_access(void)
{
int res;
fatfs_mnt.flags = FS_MOUNT_FLAG_USE_DISK_ACCESS;
res = fs_mount(&fatfs_mnt);
if (res < 0) {
TC_PRINT("Error mounting fs [%d]\n", res);
return TC_FAIL;
}
return ((fatfs_mnt.flags & FS_MOUNT_FLAG_USE_DISK_ACCESS) ? TC_PASS : TC_FAIL);
}
static int test_mount(void)
{
int res;
fatfs_mnt.flags = 0;
res = fs_mount(&fatfs_mnt);
if (res < 0) {
TC_PRINT("Error mounting fs [%d]\n", res);
return TC_FAIL;
}
return ((fatfs_mnt.flags & FS_MOUNT_FLAG_USE_DISK_ACCESS) ? TC_PASS : TC_FAIL);
}
static int test_unmount(void)
{
return (fs_unmount(&fatfs_mnt) >= 0 ? TC_PASS : TC_FAIL);
}
void test_fat_unmount(void)
{
zassert_true(test_unmount() == TC_PASS, NULL);
}
void test_fat_mount(void)
{
zassert_false(test_unmount() == TC_PASS, NULL);
zassert_true(test_mount_no_format() == TC_PASS, NULL);
zassert_true(test_mount_rd_only_no_sys() == TC_PASS, NULL);
zassert_true(test_mount_use_disk_access() == TC_PASS, NULL);
zassert_true(test_unmount() == TC_PASS, NULL);
zassert_true(test_mount() == TC_PASS, NULL);
zassert_false(test_mount() == TC_PASS, NULL);
}