1
0
mirror of https://github.com/esphome/esphome.git synced 2026-02-08 00:31:58 +00:00
Files
esphome/tests/integration/fixtures/fnv1a_hash.yaml
2025-12-15 20:23:54 +00:00

61 lines
1.8 KiB
YAML

esphome:
name: fnv1a-hash-test
platformio_options:
build_flags:
- "-DDEBUG"
on_boot:
- lambda: |-
using esphome::fnv1a_hash;
using esphome::fnv1a_hash_extend;
// Test empty string (should return offset basis)
uint32_t hash_empty = fnv1a_hash("");
if (hash_empty == 0x811c9dc5) {
ESP_LOGI("FNV1A", "empty PASSED");
} else {
ESP_LOGE("FNV1A", "empty FAILED: 0x%08x != 0x811c9dc5", hash_empty);
}
// Test known FNV-1a hashes
uint32_t hash_hello = fnv1a_hash("hello");
if (hash_hello == 0x4f9f2cab) {
ESP_LOGI("FNV1A", "known_hello PASSED");
} else {
ESP_LOGE("FNV1A", "known_hello FAILED: 0x%08x != 0x4f9f2cab", hash_hello);
}
uint32_t hash_helloworld = fnv1a_hash("helloworld");
if (hash_helloworld == 0x3b9f5c61) {
ESP_LOGI("FNV1A", "known_helloworld PASSED");
} else {
ESP_LOGE("FNV1A", "known_helloworld FAILED: 0x%08x != 0x3b9f5c61", hash_helloworld);
}
// Test fnv1a_hash_extend consistency
uint32_t hash1 = fnv1a_hash("hello");
hash1 = fnv1a_hash_extend(hash1, "world");
uint32_t hash2 = fnv1a_hash("helloworld");
if (hash1 == hash2) {
ESP_LOGI("FNV1A", "extend PASSED");
} else {
ESP_LOGE("FNV1A", "extend FAILED: 0x%08x != 0x%08x", hash1, hash2);
}
// Test with std::string
std::string str1 = "foo";
std::string str2 = "bar";
uint32_t hash3 = fnv1a_hash(str1);
hash3 = fnv1a_hash_extend(hash3, str2);
uint32_t hash4 = fnv1a_hash("foobar");
if (hash3 == hash4) {
ESP_LOGI("FNV1A", "string PASSED");
} else {
ESP_LOGE("FNV1A", "string FAILED: 0x%08x != 0x%08x", hash3, hash4);
}
host:
api:
logger: