test_compressed_enum_table.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include "catch.hpp"
  7. #include "compressed_enum_table.hpp"
  8. #include <cstring>
  9. TEST_CASE("test if CompressedEnumTable works as expected", "[enumtable]")
  10. {
  11. enum class TEnum1 : uint32_t {
  12. ZERO = 0,
  13. ONE = 1,
  14. TWO = 2,
  15. THREE = 3,
  16. };
  17. CompressedEnumTable<TEnum1, 2, 252> table;
  18. memset(table.data(), 0xff, table.byteSize());
  19. TEnum1 tmp;
  20. for (size_t i = 0; i < table.count(); ++i) {
  21. CHECK(table.get(i, &tmp) == ESP_OK);
  22. CHECK(tmp == TEnum1::THREE);
  23. }
  24. CHECK(table.set(0, TEnum1::ONE) == ESP_OK);
  25. CHECK(table.set(1, TEnum1::TWO) == ESP_OK);
  26. CHECK(table.set(2, TEnum1::ZERO) == ESP_OK);
  27. CHECK(table.set(3, TEnum1::ONE) == ESP_OK);
  28. CHECK(table.set(4, TEnum1::TWO) == ESP_OK);
  29. CHECK(table.set(5, TEnum1::ZERO) == ESP_OK);
  30. CHECK(table.set(6, TEnum1::ONE) == ESP_OK);
  31. CHECK(table.set(7, TEnum1::TWO) == ESP_OK);
  32. CHECK(table.set(8, TEnum1::ZERO) == ESP_OK);
  33. CHECK(table.set(9, TEnum1::ZERO) == ESP_OK);
  34. CHECK(table.set(10, TEnum1::ONE) == ESP_OK);
  35. CHECK(table.set(11, TEnum1::TWO) == ESP_OK);
  36. // table.set(12, ...
  37. CHECK(table.set(13, TEnum1::ZERO) == ESP_OK);
  38. CHECK(table.set(14, TEnum1::ONE) == ESP_OK);
  39. CHECK(table.set(15, TEnum1::TWO) == ESP_OK);
  40. // b10010011100100001001001001001001
  41. // h 9 3 9 0 9 2 4 9
  42. CHECK(table.data()[0] == 0x93909249);
  43. }