Add embedded storage drivers and extend firmware metadata
This commit is contained in:
67
c/sd-file-browser/Tests/test_sd_file_browser.c
Normal file
67
c/sd-file-browser/Tests/test_sd_file_browser.c
Normal file
@@ -0,0 +1,67 @@
|
||||
#include "sd_file_browser.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
static unsigned checks;
|
||||
static unsigned failures;
|
||||
static unsigned calls;
|
||||
|
||||
#define CHECK(condition) do { ++checks; if (!(condition)) ++failures; } while (0)
|
||||
|
||||
/* Mock подтверждает, что core передаёт только проверенный bounded запрос. */
|
||||
static SdFileBrowserStatus mock_list(
|
||||
void *context, const char *path, uint16_t offset, uint8_t limit,
|
||||
SdFileBrowserPage *page)
|
||||
{
|
||||
(void)context;
|
||||
++calls;
|
||||
CHECK(strcmp(path, "/niceOne") == 0);
|
||||
CHECK(offset == 3U);
|
||||
CHECK(limit == 2U);
|
||||
memcpy(page->items[0].name, "July", sizeof("July"));
|
||||
page->items[0].is_directory = 1U;
|
||||
page->count = 1U;
|
||||
page->next_offset = 4U;
|
||||
return SD_FILE_BROWSER_OK;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
static const char *const invalid[] = {
|
||||
"", "niceOne", "/../secret", "/./logs", "/a//b", "/a\\b",
|
||||
"/a:b", "/trailing/"
|
||||
};
|
||||
SdFileBrowser browser = { NULL, mock_list };
|
||||
SdFileBrowserPage page;
|
||||
unsigned index;
|
||||
|
||||
CHECK(SdFileBrowser_ValidatePath("/") == SD_FILE_BROWSER_OK);
|
||||
CHECK(SdFileBrowser_ValidateLogFilePath("/TEMPLOG.MD") == SD_FILE_BROWSER_OK);
|
||||
CHECK(SdFileBrowser_ValidateLogFilePath(
|
||||
"/niceOne/mounth/2026-07_July/temperature_2026-07-18_10-00-00.md") ==
|
||||
SD_FILE_BROWSER_OK);
|
||||
CHECK(SdFileBrowser_ValidateLogFilePath("/niceOne/settings/private.json") ==
|
||||
SD_FILE_BROWSER_NOT_LOG_FILE);
|
||||
CHECK(SdFileBrowser_ValidateLogFilePath("/niceOne/mounth/fw.bin") ==
|
||||
SD_FILE_BROWSER_NOT_LOG_FILE);
|
||||
CHECK(SdFileBrowser_ValidateLogFilePath("/niceOne/mounth/temperature_bad.md") ==
|
||||
SD_FILE_BROWSER_NOT_LOG_FILE);
|
||||
CHECK(SdFileBrowser_ValidatePath("/niceOne/2026-07_July") ==
|
||||
SD_FILE_BROWSER_OK);
|
||||
for (index = 0U; index < sizeof(invalid) / sizeof(invalid[0]); ++index) {
|
||||
CHECK(SdFileBrowser_ValidatePath(invalid[index]) ==
|
||||
SD_FILE_BROWSER_INVALID_PATH);
|
||||
}
|
||||
memset(&page, 0xA5, sizeof(page));
|
||||
CHECK(SdFileBrowser_ListPage(&browser, "/niceOne", 3U, 2U, &page) ==
|
||||
SD_FILE_BROWSER_OK);
|
||||
CHECK(calls == 1U);
|
||||
CHECK(page.count == 1U);
|
||||
CHECK(strcmp(page.items[0].name, "July") == 0);
|
||||
CHECK(SdFileBrowser_ListPage(&browser, "/niceOne", 0U, 4U, &page) ==
|
||||
SD_FILE_BROWSER_INVALID_CURSOR);
|
||||
CHECK(calls == 1U);
|
||||
(void)printf("SD browser core: %u checks, %u failures\n", checks, failures);
|
||||
return failures == 0U ? 0 : 1;
|
||||
}
|
||||
Reference in New Issue
Block a user