kopia lustrzana https://github.com/espressif/esp-idf
…
|
||
---|---|---|
.. | ||
main | ||
.build-test-rules.yml | ||
CMakeLists.txt | ||
README.md | ||
pytest_esp_hid.py | ||
sdkconfig.defaults |
README.md
Supported Targets | ESP32 | ESP32-C3 |
---|
esp_hid unit tests
The unit tests are currently run only on the chips listed above just to save CI resources. If you are adding some tests which need to run on a different chip, update .build-test-rules.yml, adding the chip you need.
When adding new test cases, check if the depends_components
list in .build-test-rules.yml
needs to be updated to include additional components. The test app will only be built and tested when these components are modified.
To build and run this test app, using esp32c3 target for example:
idf.py set-target esp32c3
idf.py build flash monitor
To run tests using pytest:
idf.py set-target esp32c3
idf.py build
pytest --target=esp32c3
Code used to generate tests
void dump_report_map(const uint8_t *data, size_t len){
esp_hid_report_map_t * report_map = esp_hid_parse_report_map(data, len);
printf(" TEST_ASSERT_NOT_NULL(report_map);\n");
printf(" TEST_ASSERT(report_map->usage == ESP_HID_USAGE_%s);\n", esp_hid_usage_str(report_map->usage));
printf(" TEST_ASSERT(report_map->appearance == 0x%04X);\n", report_map->appearance);
printf(" TEST_ASSERT(report_map->reports_len == %u);\n", report_map->reports_len);
for(uint8_t i=0; i<report_map->reports_len; i++){
printf(" TEST_ASSERT(report_map->reports[%u].report_id == %u);\n", i, report_map->reports[i].report_id);
printf(" TEST_ASSERT(report_map->reports[%u].report_type == ESP_HID_REPORT_TYPE_%s);\n", i, esp_hid_report_type_str(report_map->reports[i].report_type));
printf(" TEST_ASSERT(report_map->reports[%u].protocol_mode == ESP_HID_PROTOCOL_MODE_%s);\n", i, esp_hid_protocol_mode_str(report_map->reports[i].protocol_mode));
printf(" TEST_ASSERT(report_map->reports[%u].usage == ESP_HID_USAGE_%s);\n", i, esp_hid_usage_str(report_map->reports[i].usage));
printf(" TEST_ASSERT(report_map->reports[%u].value_len == %u);\n", i, report_map->reports[i].value_len);
}
printf(" esp_hid_free_report_map(report_map);\n");
}
#define _str(a) #a
#define xstr(a) _str(a)
#define TEST_DUMP(map) \
printf("TEST_CASE(\"can parse " xstr(map) "\", \"[esp_hid]\")\n{\n"); \
printf(" esp_hid_report_map_t * report_map = esp_hid_parse_report_map(" xstr(map) ", sizeof(" xstr(map) "));\n"); \
dump_report_map(map, sizeof(map)); \
printf("}\n\n");
void generate_tests(){
TEST_DUMP(hidReportMap);
TEST_DUMP(relMouseReportMap);
TEST_DUMP(absMouseReportMap);
TEST_DUMP(keyboardReportMap);
TEST_DUMP(joystickReportMap);
TEST_DUMP(mediaReportMap);
TEST_DUMP(mediaReportMap2);
TEST_DUMP(hidapiReportMap);
}