# HG changeset patch # User David Demelier # Date 1634131568 -7200 # Node ID 1d3e6108cb99fe87986a68a8b42f6e9157f2a8d2 # Parent 2ac41a176b5d7a75600b14a5637e7ee723c498ee tests: add vfs-directory test diff -r 2ac41a176b5d -r 1d3e6108cb99 tests/CMakeLists.txt --- a/tests/CMakeLists.txt Wed Oct 13 15:26:00 2021 +0200 +++ b/tests/CMakeLists.txt Wed Oct 13 15:26:08 2021 +0200 @@ -33,12 +33,13 @@ state tileset util + vfs-directory ) foreach (t ${TESTS}) add_executable(test-${t} ${tests_SOURCE_DIR}/test-${t}.c) add_test(NAME test-${t} COMMAND test-${t}) - target_link_libraries(test-${t} libmlk-adventure libmlk-greatest) + target_link_libraries(test-${t} libmlk-adventure libmlk-greatest libmlk-rexo) target_compile_definitions(test-${t} PRIVATE DIRECTORY="${tests_SOURCE_DIR}/assets") set_target_properties(test-${t} PROPERTIES FOLDER tests) source_group("" FILES test-${t}.c) diff -r 2ac41a176b5d -r 1d3e6108cb99 tests/assets/vfs/directory/hello.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/assets/vfs/directory/hello.txt Wed Oct 13 15:26:08 2021 +0200 @@ -0,0 +1,1 @@ +Hello World! diff -r 2ac41a176b5d -r 1d3e6108cb99 tests/test-vfs-directory.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-vfs-directory.c Wed Oct 13 15:26:08 2021 +0200 @@ -0,0 +1,59 @@ +/* + * test-vfs-directory.c -- test VFS directory + * + * Copyright (c) 2020-2021 David Demelier + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include + +#include +#include + +RX_SET_UP(setup) +{ + vfs_directory(RX_DATA, DIRECTORY "/vfs/directory"); + + return RX_SUCCESS; +} + +RX_TEAR_DOWN(teardown) +{ + vfs_finish(RX_DATA); +} + +RX_FIXTURE(basics_fixture, struct vfs, .set_up = setup, .tear_down = teardown); + +RX_TEST_CASE(basics, read, .fixture = basics_fixture) +{ + struct vfs_file file; + char data[256] = {0}; + + RX_INT_REQUIRE_EQUAL(vfs_open(RX_DATA, &file, "hello.txt", "r"), 0); + RX_UINT_REQUIRE_EQUAL(vfs_file_read(&file, data, sizeof (data)), 13U); + RX_STR_REQUIRE_EQUAL(data, "Hello World!\n"); +} + +RX_TEST_CASE(basics, notfound, .fixture = basics_fixture) +{ + struct vfs_file file; + + RX_INT_REQUIRE_EQUAL(vfs_open(RX_DATA, &file, "notfound.txt", "r"), -1); +} + +int +main(int argc, char **argv) +{ + return rx_main(0, NULL, argc, (const char **)argv) == RX_SUCCESS ? 0 : 1; +}