/*
 * Copyright (c) 2019 Peter Bigot Consulting, LLC
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/* Tests of functions in testfs_util */

#include <string.h>
#include <zephyr/ztest.h>
#include "testfs_tests.h"
#include "testfs_lfs.h"

void test_main(void)
{
	ztest_test_suite(littlefs_test,
			 ztest_unit_test(test_util_path_init_base),
			 ztest_unit_test(test_util_path_init_overrun),
			 ztest_unit_test(test_util_path_init_extended),
			 ztest_unit_test(test_util_path_extend),
			 ztest_unit_test(test_util_path_extend_up),
			 ztest_unit_test(test_util_path_extend_overrun),
			 ztest_unit_test(test_lfs_basic),
			 ztest_unit_test(test_lfs_dirops),
			 ztest_unit_test(test_lfs_perf),
			 ztest_unit_test(test_fs_open_flags_lfs),
			 ztest_unit_test(test_fs_mount_flags)
			 );
	ztest_run_test_suite(littlefs_test);
}
