size.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2018
  3. // MIT License
  4. #include <ArduinoJson/Memory/DynamicMemoryPool.hpp>
  5. #include <catch.hpp>
  6. using namespace ARDUINOJSON_NAMESPACE;
  7. TEST_CASE("DynamicMemoryPool::size()") {
  8. DynamicMemoryPool memoryPool;
  9. SECTION("Initial size is 0") {
  10. REQUIRE(0 == memoryPool.size());
  11. }
  12. SECTION("Increases after allocExpandableString()") {
  13. StringSlot* a = memoryPool.allocExpandableString();
  14. memoryPool.freezeString(a, 1);
  15. REQUIRE(memoryPool.size() == JSON_STRING_SIZE(1));
  16. StringSlot* b = memoryPool.allocExpandableString();
  17. memoryPool.freezeString(b, 1);
  18. REQUIRE(memoryPool.size() == 2 * JSON_STRING_SIZE(1));
  19. }
  20. SECTION("Increases after allocVariant()") {
  21. memoryPool.allocVariant();
  22. REQUIRE(sizeof(VariantSlot) == memoryPool.size());
  23. memoryPool.allocVariant();
  24. REQUIRE(2 * sizeof(VariantSlot) == memoryPool.size());
  25. }
  26. SECTION("Decreases after freeVariant()") {
  27. VariantSlot* a = memoryPool.allocVariant();
  28. VariantSlot* b = memoryPool.allocVariant();
  29. memoryPool.freeVariant(b);
  30. REQUIRE(sizeof(VariantSlot) == memoryPool.size());
  31. memoryPool.freeVariant(a);
  32. REQUIRE(0 == memoryPool.size());
  33. }
  34. SECTION("Decreases after freeString()") {
  35. StringSlot* a = memoryPool.allocFrozenString(5);
  36. StringSlot* b = memoryPool.allocFrozenString(6);
  37. memoryPool.freeString(b);
  38. REQUIRE(memoryPool.size() == JSON_STRING_SIZE(5));
  39. memoryPool.freeString(a);
  40. REQUIRE(memoryPool.size() == 0);
  41. }
  42. }