ตัวอย่างสมบูรณ์ — ห้าไฟล์ทำงานร่วมกัน
level_alarm.h/.c — state machine แจ้งเตือนระดับ สามสถานะ NORMAL, ACTIVE, FAULT ต้องเห็นค่าเกินเกณฑ์ติดกัน confirm ครั้งจึงเปลี่ยนสถานะ มี hysteresis ระหว่าง on_mv กับ off_mv
typedef struct {
int (*read_mv)(void *ctx, int32_t *out_mv);
void *ctx;
} level_sensor_t;
void test_stays_normal_below_threshold(void) {
TEST_ASSERT_EQUAL_INT(ALARM_NORMAL, level_alarm_state(&alarm));
}
test_level_alarm_first.c — ท่าที่ 1 กรณีปกติ ท่าที่ 2 กรณีผิดพลาด ท่าที่ 3 main() ที่คืนจำนวน test ที่ล้ม
ลองแก้แล้วทายก่อนรัน: เปลี่ยน >= เป็น > ใน level_alarm.c แล้วรัน make test — test สองข้อแรกผ่านหรือล้ม เพราะอะไร (แล้วแก้กลับ)