StaticJsonBuffer_Basic_Tests.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Copyright Benoit Blanchon 2014-2016
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://github.com/bblanchon/ArduinoJson
  6. // If you like this project, please add a star!
  7. #include <gtest/gtest.h>
  8. #include <ArduinoJson.h>
  9. class StaticJsonBuffer_Basic_Tests : public testing::Test {
  10. protected:
  11. StaticJsonBuffer<64> buffer;
  12. };
  13. TEST_F(StaticJsonBuffer_Basic_Tests, CapacityMatchTemplateParameter) {
  14. ASSERT_EQ(64, buffer.capacity());
  15. }
  16. TEST_F(StaticJsonBuffer_Basic_Tests, InitialSizeIsZero) {
  17. ASSERT_EQ(0, buffer.size());
  18. }
  19. TEST_F(StaticJsonBuffer_Basic_Tests, GrowsAfterAlloc) {
  20. buffer.alloc(1);
  21. ASSERT_LE(1U, buffer.size());
  22. buffer.alloc(1);
  23. ASSERT_LE(2U, buffer.size());
  24. }
  25. TEST_F(StaticJsonBuffer_Basic_Tests, DoesntGrowWhenFull) {
  26. buffer.alloc(64);
  27. buffer.alloc(1);
  28. ASSERT_EQ(64, buffer.size());
  29. }
  30. TEST_F(StaticJsonBuffer_Basic_Tests, DoesntGrowWhenTooSmall) {
  31. buffer.alloc(65);
  32. ASSERT_EQ(0, buffer.size());
  33. }
  34. TEST_F(StaticJsonBuffer_Basic_Tests, ReturnsNonNull) {
  35. void *p = buffer.alloc(64);
  36. ASSERT_NE(static_cast<void *>(0), p);
  37. }
  38. TEST_F(StaticJsonBuffer_Basic_Tests, ReturnsNullWhenFull) {
  39. buffer.alloc(64);
  40. void *p = buffer.alloc(1);
  41. ASSERT_EQ(NULL, p);
  42. }
  43. TEST_F(StaticJsonBuffer_Basic_Tests, ReturnsNullWhenTooSmall) {
  44. void *p = buffer.alloc(65);
  45. ASSERT_EQ(NULL, p);
  46. }
  47. TEST_F(StaticJsonBuffer_Basic_Tests, Alignment) {
  48. size_t mask = sizeof(void *) - 1;
  49. for (size_t size = 1; size <= sizeof(void *); size++) {
  50. size_t addr = reinterpret_cast<size_t>(buffer.alloc(1));
  51. ASSERT_EQ(0, addr & mask);
  52. }
  53. }