Tactility/Modules/service-module/tests/source/service_paths_test.cpp
Ken Van Hoeylandt 4279a8ed72
Terminal and shell support based on BreezyBox (#656)
Features:
- Implemented terminal app based on BreezyBox
- Implemented shell based on BreezyBox
- Added font-module with fixed-width fonts

Improvements:
- Improved application standard-output and error-output routing, including dynamically loaded applications.
- Updated shared icons and Material Symbols mappings.
- Other improvements & fixes
2026-09-22 23:01:03 +02:00

72 lines
3.0 KiB
C++

#include "doctest.h"
#include <service/paths.h>
#include <tactility/paths.h>
#include <cstring>
#include <string>
TEST_CASE("paths_get_data_path returns a non-empty path") {
char buffer[FILE_MAX_PATH_STRING_LENGTH];
REQUIRE_EQ(paths_get_data_path(buffer, sizeof(buffer)), ERROR_NONE);
CHECK_GT(std::strlen(buffer), 0);
}
TEST_CASE("paths_get_data_path reports overflow for a too-small buffer") {
char buffer[1];
CHECK_EQ(paths_get_data_path(buffer, sizeof(buffer)), ERROR_BUFFER_OVERFLOW);
}
TEST_CASE("service_paths_get_user_data_directory includes the service id") {
char root[FILE_MAX_PATH_STRING_LENGTH];
REQUIRE_EQ(paths_get_data_path(root, sizeof(root)), ERROR_NONE);
char buffer[FILE_MAX_PATH_STRING_LENGTH];
CHECK_EQ(service_paths_get_user_data_directory("my-service", buffer, sizeof(buffer)), ERROR_NONE);
std::string expected = std::string(root) + "/service/my-service";
CHECK_EQ(std::string(buffer), expected);
}
TEST_CASE("service_paths_get_user_data_path appends the child path") {
char directory[FILE_MAX_PATH_STRING_LENGTH];
REQUIRE_EQ(service_paths_get_user_data_directory("my-service", directory, sizeof(directory)), ERROR_NONE);
char buffer[256];
CHECK_EQ(service_paths_get_user_data_path("my-service", "settings.properties", buffer, sizeof(buffer)), ERROR_NONE);
std::string expected = std::string(directory) + "/settings.properties";
CHECK_EQ(std::string(buffer), expected);
}
TEST_CASE("service_paths_get_assets_directory is nested under the user data directory") {
char directory[FILE_MAX_PATH_STRING_LENGTH];
REQUIRE_EQ(service_paths_get_user_data_directory("my-service", directory, sizeof(directory)), ERROR_NONE);
char buffer[FILE_MAX_PATH_STRING_LENGTH];
CHECK_EQ(service_paths_get_assets_directory("my-service", buffer, sizeof(buffer)), ERROR_NONE);
std::string expected = std::string(directory) + "/assets";
CHECK_EQ(std::string(buffer), expected);
}
TEST_CASE("service_paths_get_assets_path appends the child path") {
char directory[FILE_MAX_PATH_STRING_LENGTH];
REQUIRE_EQ(service_paths_get_assets_directory("my-service", directory, sizeof(directory)), ERROR_NONE);
char buffer[FILE_MAX_PATH_STRING_LENGTH];
CHECK_EQ(service_paths_get_assets_path("my-service", "icon.png", buffer, sizeof(buffer)), ERROR_NONE);
std::string expected = std::string(directory) + "/icon.png";
CHECK_EQ(std::string(buffer), expected);
}
TEST_CASE("service_paths functions report overflow for a too-small buffer") {
char buffer[1];
CHECK_EQ(service_paths_get_user_data_directory("my-service", buffer, sizeof(buffer)), ERROR_BUFFER_OVERFLOW);
CHECK_EQ(service_paths_get_user_data_path("my-service", "child", buffer, sizeof(buffer)), ERROR_BUFFER_OVERFLOW);
CHECK_EQ(service_paths_get_assets_directory("my-service", buffer, sizeof(buffer)), ERROR_BUFFER_OVERFLOW);
CHECK_EQ(service_paths_get_assets_path("my-service", "child", buffer, sizeof(buffer)), ERROR_BUFFER_OVERFLOW);
}