mirror of
https://github.com/espressif/esp-idf.git
synced 2026-08-18 06:35:35 +03:00
test(pcnt): expend assert value to decrease failure ratio
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -288,7 +288,7 @@ static void count_mode_test(gpio_num_t ctl_io)
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
TEST_ESP_OK(pcnt_get_counter_value(PCNT_UNIT_0, &test_counter));
|
||||
printf("value: %d\n", test_counter);
|
||||
TEST_ASSERT_INT16_WITHIN(1, test_counter, result[0]);
|
||||
TEST_ASSERT_INT16_WITHIN(2, test_counter, result[0]);
|
||||
|
||||
//2, 0, 0, 0
|
||||
TEST_ESP_OK(pcnt_counter_pause(PCNT_UNIT_0));
|
||||
@@ -300,7 +300,7 @@ static void count_mode_test(gpio_num_t ctl_io)
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
TEST_ESP_OK(pcnt_get_counter_value(PCNT_UNIT_0, &test_counter));
|
||||
printf("value: %d\n", test_counter);
|
||||
TEST_ASSERT_INT16_WITHIN(1, test_counter, result[1]);
|
||||
TEST_ASSERT_INT16_WITHIN(2, test_counter, result[1]);
|
||||
|
||||
//0,0,0,0
|
||||
TEST_ESP_OK(pcnt_counter_pause(PCNT_UNIT_0));
|
||||
@@ -312,7 +312,7 @@ static void count_mode_test(gpio_num_t ctl_io)
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
TEST_ESP_OK(pcnt_get_counter_value(PCNT_UNIT_0, &test_counter));
|
||||
printf("value: %d\n", test_counter);
|
||||
TEST_ASSERT_INT16_WITHIN(1, test_counter, result[2]);
|
||||
TEST_ASSERT_INT16_WITHIN(2, test_counter, result[2]);
|
||||
|
||||
//1,0,1,0
|
||||
TEST_ESP_OK(pcnt_counter_pause(PCNT_UNIT_0));
|
||||
@@ -324,7 +324,7 @@ static void count_mode_test(gpio_num_t ctl_io)
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
TEST_ESP_OK(pcnt_get_counter_value(PCNT_UNIT_0, &test_counter));
|
||||
printf("value: %d\n", test_counter);
|
||||
TEST_ASSERT_INT16_WITHIN(1, test_counter, result[3]);
|
||||
TEST_ASSERT_INT16_WITHIN(2, test_counter, result[3]);
|
||||
|
||||
//1,0,0,1
|
||||
TEST_ESP_OK(pcnt_counter_pause(PCNT_UNIT_0));
|
||||
@@ -336,7 +336,7 @@ static void count_mode_test(gpio_num_t ctl_io)
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
TEST_ESP_OK(pcnt_get_counter_value(PCNT_UNIT_0, &test_counter));
|
||||
printf("value: %d\n", test_counter);
|
||||
TEST_ASSERT_INT16_WITHIN(1, test_counter, result[4]);
|
||||
TEST_ASSERT_INT16_WITHIN(2, test_counter, result[4]);
|
||||
|
||||
//2,0,0,1
|
||||
TEST_ESP_OK(pcnt_counter_pause(PCNT_UNIT_0));
|
||||
@@ -348,7 +348,7 @@ static void count_mode_test(gpio_num_t ctl_io)
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
TEST_ESP_OK(pcnt_get_counter_value(PCNT_UNIT_0, &test_counter));
|
||||
printf("value: %d\n", test_counter);
|
||||
TEST_ASSERT_INT16_WITHIN(1, test_counter, result[5]);
|
||||
TEST_ASSERT_INT16_WITHIN(2, test_counter, result[5]);
|
||||
|
||||
//1,0,2,0
|
||||
TEST_ESP_OK(pcnt_counter_pause(PCNT_UNIT_0));
|
||||
@@ -360,7 +360,7 @@ static void count_mode_test(gpio_num_t ctl_io)
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
TEST_ESP_OK(pcnt_get_counter_value(PCNT_UNIT_0, &test_counter));
|
||||
printf("value: %d\n", test_counter);
|
||||
TEST_ASSERT_INT16_WITHIN(1, test_counter, result[6]);
|
||||
TEST_ASSERT_INT16_WITHIN(2, test_counter, result[6]);
|
||||
|
||||
//1,0,0,2
|
||||
TEST_ESP_OK(pcnt_counter_pause(PCNT_UNIT_0));
|
||||
@@ -372,7 +372,7 @@ static void count_mode_test(gpio_num_t ctl_io)
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
TEST_ESP_OK(pcnt_get_counter_value(PCNT_UNIT_0, &test_counter));
|
||||
printf("value: %d\n", test_counter);
|
||||
TEST_ASSERT_INT16_WITHIN(1, test_counter, result[7]);
|
||||
TEST_ASSERT_INT16_WITHIN(2, test_counter, result[7]);
|
||||
}
|
||||
|
||||
/* PCNT basic property:
|
||||
@@ -521,24 +521,24 @@ TEST_CASE("PCNT_interrupt_method_test_control_IO_high", "[pcnt][timeout=120]")
|
||||
|
||||
// test event
|
||||
event_calculate(&event);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_threshold, 2);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.l_threshold, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_threshold, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.l_threshold, 2);
|
||||
TEST_ASSERT(event.l_limit == 0);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_limit, 2);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.zero_times, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.filter_time, 4);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_limit, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.zero_times, 2);
|
||||
TEST_ASSERT_INT_WITHIN(4, event.filter_time, 4);
|
||||
|
||||
// test interrupt disable
|
||||
TEST_ESP_OK(pcnt_intr_disable(PCNT_UNIT_0));
|
||||
TEST_ESP_OK(pcnt_counter_clear(PCNT_UNIT_0));
|
||||
// for the original control io disable interrupt status
|
||||
event_calculate(&event);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_threshold, 2);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.l_threshold, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_threshold, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.l_threshold, 2);
|
||||
TEST_ASSERT(event.l_limit == 0);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_limit, 2);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.zero_times, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.filter_time, 4);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_limit, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.zero_times, 2);
|
||||
TEST_ASSERT_INT_WITHIN(4, event.filter_time, 4);
|
||||
|
||||
// enable the intr
|
||||
TEST_ESP_OK(pcnt_intr_enable(PCNT_UNIT_0));
|
||||
@@ -546,24 +546,24 @@ TEST_CASE("PCNT_interrupt_method_test_control_IO_high", "[pcnt][timeout=120]")
|
||||
TEST_ESP_OK(pcnt_counter_clear(PCNT_UNIT_0));
|
||||
TEST_ESP_OK(pcnt_counter_resume(PCNT_UNIT_0));
|
||||
event_calculate(&event);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_threshold, 4);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.l_threshold, 4);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_threshold, 4);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.l_threshold, 4);
|
||||
TEST_ASSERT(event.l_limit == 0);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_limit, 4);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.zero_times, 4);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.filter_time, 10);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_limit, 4);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.zero_times, 4);
|
||||
TEST_ASSERT_INT_WITHIN(4, event.filter_time, 10);
|
||||
|
||||
// disable part of events
|
||||
TEST_ESP_OK(pcnt_event_disable(PCNT_UNIT_0, PCNT_EVT_ZERO));
|
||||
TEST_ESP_OK(pcnt_event_disable(PCNT_UNIT_0, PCNT_EVT_L_LIM));
|
||||
TEST_ESP_OK(pcnt_event_disable(PCNT_UNIT_0, PCNT_EVT_THRES_0));
|
||||
event_calculate(&event);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_threshold, 5);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.l_threshold, 4);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_threshold, 5);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.l_threshold, 4);
|
||||
TEST_ASSERT(event.l_limit == 0);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_limit, 6);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.zero_times, 4);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.filter_time, 14);
|
||||
TEST_ASSERT_INT_WITHIN(4, event.h_limit, 6);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.zero_times, 4);
|
||||
TEST_ASSERT_INT_WITHIN(4, event.filter_time, 14);
|
||||
|
||||
// Because this test uses its own ISR, we need to release it with `pcnt_isr_unregister` instead of `pcnt_isr_service_uninstall`
|
||||
TEST_ESP_OK(pcnt_isr_unregister(pcnt_isr_service));
|
||||
@@ -621,24 +621,24 @@ TEST_CASE("PCNT_interrupt_method_test_control_IO_low", "[pcnt][timeout=120]")
|
||||
|
||||
// test event
|
||||
event_calculate(&event);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_threshold, 1);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.l_threshold, 1);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.l_limit, 1);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_limit, 0);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.zero_times, 1);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.filter_time, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_threshold, 1);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.l_threshold, 1);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.l_limit, 1);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_limit, 0);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.zero_times, 1);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.filter_time, 2);
|
||||
|
||||
// test interrupt disable
|
||||
TEST_ESP_OK(pcnt_intr_disable(PCNT_UNIT_0));
|
||||
TEST_ESP_OK(pcnt_counter_clear(PCNT_UNIT_0));
|
||||
// for the original control io disable interrupt status
|
||||
event_calculate(&event);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_threshold, 1);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.l_threshold, 1);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.l_limit, 1);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_limit, 0);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.zero_times, 1);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.filter_time, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_threshold, 1);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.l_threshold, 1);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.l_limit, 1);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_limit, 0);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.zero_times, 1);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.filter_time, 2);
|
||||
|
||||
// enable the intr
|
||||
pcnt_unit_config(&config);
|
||||
@@ -648,24 +648,24 @@ TEST_CASE("PCNT_interrupt_method_test_control_IO_low", "[pcnt][timeout=120]")
|
||||
TEST_ESP_OK(pcnt_counter_clear(PCNT_UNIT_0));
|
||||
TEST_ESP_OK(pcnt_counter_resume(PCNT_UNIT_0));
|
||||
event_calculate(&event);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_threshold, 2);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.l_threshold, 3);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.l_limit, 2);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_limit, 0);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.zero_times, 2);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.filter_time, 6);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_threshold, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.l_threshold, 3);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.l_limit, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_limit, 0);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.zero_times, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.filter_time, 6);
|
||||
|
||||
// disable part of events
|
||||
TEST_ESP_OK(pcnt_event_disable(PCNT_UNIT_0, PCNT_EVT_ZERO));
|
||||
TEST_ESP_OK(pcnt_event_disable(PCNT_UNIT_0, PCNT_EVT_L_LIM));
|
||||
TEST_ESP_OK(pcnt_event_disable(PCNT_UNIT_0, PCNT_EVT_THRES_0));
|
||||
event_calculate(&event);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_threshold, 4);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.l_threshold, 3);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.l_limit, 2);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.h_limit, 0);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.zero_times, 2);
|
||||
TEST_ASSERT_INT_WITHIN(2, event.filter_time, 8);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_threshold, 4);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.l_threshold, 3);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.l_limit, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.h_limit, 0);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.zero_times, 2);
|
||||
TEST_ASSERT_INT_WITHIN(3, event.filter_time, 8);
|
||||
|
||||
// Because this test uses its own ISR, we need to release it with `pcnt_isr_unregister` instead of `pcnt_isr_service_uninstall`
|
||||
TEST_ESP_OK(pcnt_isr_unregister(pcnt_isr_service));
|
||||
|
||||
Reference in New Issue
Block a user