mirror of
https://github.com/esphome/esphome.git
synced 2025-08-07 10:57:46 +00:00
cover
This commit is contained in:
parent
5dd76966c3
commit
a4d5f39fb6
@ -2,31 +2,73 @@ esphome:
|
|||||||
name: defer-fifo-simple
|
name: defer-fifo-simple
|
||||||
on_boot:
|
on_boot:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
// Simple test: defer 10 items and verify they execute in order
|
// Test 1: Test set_timeout with 0 delay (direct scheduler call)
|
||||||
static int execution_order = 0;
|
static int set_timeout_order = 0;
|
||||||
static bool test_passed = true;
|
static bool set_timeout_passed = true;
|
||||||
|
|
||||||
|
ESP_LOGD("defer_test", "Test 1: Testing set_timeout(0) for FIFO order...");
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
int expected = i;
|
int expected = i;
|
||||||
App.scheduler.set_timeout((Component*)nullptr, nullptr, 0, [expected]() {
|
App.scheduler.set_timeout((Component*)nullptr, nullptr, 0, [expected]() {
|
||||||
ESP_LOGD("defer_test", "Deferred item %d executed, order %d", expected, execution_order);
|
ESP_LOGD("defer_test", "set_timeout(0) item %d executed, order %d", expected, set_timeout_order);
|
||||||
if (execution_order != expected) {
|
if (set_timeout_order != expected) {
|
||||||
ESP_LOGE("defer_test", "FIFO violation: expected %d but got execution order %d", expected, execution_order);
|
ESP_LOGE("defer_test", "FIFO violation in set_timeout: expected %d but got execution order %d", expected, set_timeout_order);
|
||||||
test_passed = false;
|
set_timeout_passed = false;
|
||||||
}
|
}
|
||||||
execution_order++;
|
set_timeout_order++;
|
||||||
|
|
||||||
if (execution_order == 10) {
|
if (set_timeout_order == 10) {
|
||||||
if (test_passed) {
|
if (set_timeout_passed) {
|
||||||
ESP_LOGI("defer_test", "✓ FIFO order test PASSED - all 10 items executed in correct order");
|
ESP_LOGI("defer_test", "✓ Test 1 PASSED - set_timeout(0) maintains FIFO order");
|
||||||
} else {
|
} else {
|
||||||
ESP_LOGE("defer_test", "✗ FIFO order test FAILED - items executed out of order");
|
ESP_LOGE("defer_test", "✗ Test 1 FAILED - set_timeout(0) executed out of order");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Start Test 2 after Test 1 completes
|
||||||
|
App.scheduler.set_timeout((Component*)nullptr, nullptr, 100, []() {
|
||||||
|
// Test 2: Test defer() method (component method)
|
||||||
|
static int defer_order = 0;
|
||||||
|
static bool defer_passed = true;
|
||||||
|
|
||||||
|
ESP_LOGD("defer_test", "Test 2: Testing defer() for FIFO order...");
|
||||||
|
|
||||||
|
// Create a test component class that exposes defer()
|
||||||
|
class TestComponent : public Component {
|
||||||
|
public:
|
||||||
|
void test_defer() {
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
int expected = i;
|
||||||
|
this->defer([expected]() {
|
||||||
|
ESP_LOGD("defer_test", "defer() item %d executed, order %d", expected, defer_order);
|
||||||
|
if (defer_order != expected) {
|
||||||
|
ESP_LOGE("defer_test", "FIFO violation in defer: expected %d but got execution order %d", expected, defer_order);
|
||||||
|
defer_passed = false;
|
||||||
|
}
|
||||||
|
defer_order++;
|
||||||
|
|
||||||
|
if (defer_order == 10) {
|
||||||
|
if (defer_passed) {
|
||||||
|
ESP_LOGI("defer_test", "✓ Test 2 PASSED - defer() maintains FIFO order");
|
||||||
|
ESP_LOGI("defer_test", "✓ ALL TESTS PASSED - Both set_timeout(0) and defer() maintain FIFO order");
|
||||||
|
} else {
|
||||||
|
ESP_LOGE("defer_test", "✗ Test 2 FAILED - defer() executed out of order");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
TestComponent test_component;
|
||||||
|
test_component.test_defer();
|
||||||
|
|
||||||
|
ESP_LOGD("defer_test", "Deferred 10 items using defer(), waiting for execution...");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ESP_LOGD("defer_test", "Deferred 10 items, waiting for execution...");
|
ESP_LOGD("defer_test", "Deferred 10 items using set_timeout(0), waiting for execution...");
|
||||||
|
|
||||||
host:
|
host:
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user