#include "settings_backup.h" #include #include typedef struct { uint32_t now; unsigned writes, unmounts; int fail; } mock_t; static uint32_t tick(void *p) { return ((mock_t*)p)->now; } static SettingsBackupPortResult mount(void *p) { (void)p; return SETTINGS_BACKUP_PORT_OK; } static void unmount(void *p) { ++((mock_t*)p)->unmounts; } static SettingsBackupPortResult find(void *p,uint32_t r,uint32_t c,uint8_t *found) { (void)p; (void)r; (void)c; *found=0; return SETTINGS_BACKUP_PORT_OK; } static SettingsBackupPortResult paths(void *p,const SettingsBackupSnapshot *s,char *f,uint32_t fc,char *t,uint32_t tc) { (void)p; (void)s; assert(fc>8 && tc>8); memcpy(f,"ok.json",8); memcpy(t,"ok.tmp",7); return SETTINGS_BACKUP_PORT_OK; } static SettingsBackupPortResult write_json(void *p,const char *t,const char *f,const char *json,uint32_t n) { mock_t *m=p; (void)t; (void)f; assert(n==strlen(json) && n>10 && json[0]=='{'); if (m->fail) return SETTINGS_BACKUP_PORT_IO_ERROR; ++m->writes; return SETTINGS_BACKUP_PORT_OK; } static SettingsBackupPortResult retain(void *p,uint16_t n) { (void)p; assert(n==2); return SETTINGS_BACKUP_PORT_OK; } int main(void) { SettingsBackup b; SettingsBackupSnapshot s={0}; mock_t m={0}; char json[16000]; SettingsBackupPort port={tick,mount,unmount,find,paths,write_json,retain}; unsigned i; uint32_t crc; s.revision=1; s.room_count=SETTINGS_BACKUP_MAX_ROOMS; for(i=0;i