test_app_desc.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include <string.h>
  2. #include "esp_ota_ops.h"
  3. #include "unity.h"
  4. TEST_CASE("esp_ota_get_app_elf_sha256 test", "[esp_app_desc]")
  5. {
  6. const int sha256_hex_len = CONFIG_APP_RETRIEVE_LEN_ELF_SHA;
  7. char dst[sha256_hex_len + 2];
  8. const char fill = 0xcc;
  9. int res;
  10. size_t len;
  11. char ref_sha256[sha256_hex_len + 1];
  12. const esp_app_desc_t* desc = esp_ota_get_app_description();
  13. for (int i = 0; i < sizeof(ref_sha256) / 2; ++i) {
  14. snprintf(ref_sha256 + 2*i, 3, "%02x", desc->app_elf_sha256[i]);
  15. }
  16. ref_sha256[sha256_hex_len] = 0;
  17. printf("Ref: %s\n", ref_sha256);
  18. memset(dst, fill, sizeof(dst));
  19. len = sizeof(dst);
  20. res = esp_ota_get_app_elf_sha256(dst, len);
  21. printf("%d: %s (%d)\n", len, dst, res);
  22. TEST_ASSERT_EQUAL(sha256_hex_len + 1, res);
  23. TEST_ASSERT_EQUAL(0, memcmp(dst, ref_sha256, res - 1));
  24. TEST_ASSERT_EQUAL_HEX(0, dst[sha256_hex_len]);
  25. TEST_ASSERT_EQUAL_HEX(fill, dst[sha256_hex_len + 1]);
  26. memset(dst, fill, sizeof(dst));
  27. len = 9;
  28. res = esp_ota_get_app_elf_sha256(dst, len);
  29. printf("%d: %s (%d)\n", len, dst, res);
  30. TEST_ASSERT_EQUAL(9, res);
  31. TEST_ASSERT_EQUAL(0, memcmp(dst, ref_sha256, res - 1));
  32. TEST_ASSERT_EQUAL_HEX(0, dst[8]);
  33. TEST_ASSERT_EQUAL_HEX(fill, dst[9]);
  34. memset(dst, fill, sizeof(dst));
  35. len = 8;
  36. res = esp_ota_get_app_elf_sha256(dst, len);
  37. printf("%d: %s (%d)\n", len, dst, res);
  38. // should output even number of characters plus '\0'
  39. TEST_ASSERT_EQUAL(7, res);
  40. TEST_ASSERT_EQUAL(0, memcmp(dst, ref_sha256, res - 1));
  41. TEST_ASSERT_EQUAL_HEX(0, dst[6]);
  42. TEST_ASSERT_EQUAL_HEX(fill, dst[7]);
  43. TEST_ASSERT_EQUAL_HEX(fill, dst[8]);
  44. }