#ifndef SD2506_TEST_H
#define SD2506_TEST_H

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

/* ============ Phase 使能开关（取消注释即启用，默认全开） ============ */
#define ENABLE_RTC_BASIC_TESTS        /* Phase 1: 基本读写 / 走时 */
#define ENABLE_RTC_API_TESTS          /* Phase 2: 全功能 API 覆盖（BCD互转/温度/电压/ID/SRAM/报警） */

/* ============ 测试统计（与 STORAGE/GD5F 套件一致的独立统计） ============ */
typedef struct {
    uint16_t total;
    uint16_t passed;
    uint16_t failed;
} sd2506_test_stats_t;

extern sd2506_test_stats_t g_sd2506_test_stats;

#define SD2506_TEST_CHECK(cond, fmt, ...) do { \
    g_sd2506_test_stats.total++; \
    if (cond) { \
        g_sd2506_test_stats.passed++; \
        DBG_INFO("[PASS] " fmt, ##__VA_ARGS__); \
    } else { \
        g_sd2506_test_stats.failed++; \
        DBG_ERROR("[FAIL] " fmt, ##__VA_ARGS__); \
    } \
} while (0)

#define SD2506_TEST_REPORT(name) do { \
    DBG_INFO("=== %s: %u/%u PASSED (failed=%u) ===", \
             name, g_sd2506_test_stats.passed, g_sd2506_test_stats.total, \
             g_sd2506_test_stats.failed); \
} while (0)

/* 测试入口：由 StartCh395fTestTask 经 TEST_SUITE_RTC 调度，顺序执行 Phase 1~3 */
void sd2506_test_run(void);

#ifdef __cplusplus
}
#endif

#endif /* SD2506_TEST_H */
