StringBuilderTests.cpp 1.4 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 <ArduinoJson.h>
  8. #include <gtest/gtest.h>
  9. using namespace ArduinoJson::Internals;
  10. class StringBuilderTests : public testing::Test {
  11. protected:
  12. virtual void SetUp() {
  13. _stringBuilder = new StaticStringBuilder(_buffer, sizeof(_buffer));
  14. }
  15. virtual void TearDown() { delete _stringBuilder; }
  16. void print(const char *value) { _returnValue = _stringBuilder->print(value); }
  17. void outputMustBe(const char *expected) { EXPECT_STREQ(expected, _buffer); }
  18. void resultMustBe(size_t expected) { EXPECT_EQ(expected, _returnValue); }
  19. private:
  20. char _buffer[20];
  21. Print *_stringBuilder;
  22. size_t _returnValue;
  23. };
  24. TEST_F(StringBuilderTests, InitialState) { outputMustBe(""); }
  25. TEST_F(StringBuilderTests, OverCapacity) {
  26. print("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
  27. resultMustBe(19);
  28. print("ABC");
  29. resultMustBe(0);
  30. outputMustBe("ABCDEFGHIJKLMNOPQRS");
  31. }
  32. TEST_F(StringBuilderTests, EmptyString) {
  33. print("");
  34. resultMustBe(0);
  35. outputMustBe("");
  36. }
  37. TEST_F(StringBuilderTests, OneString) {
  38. print("ABCD");
  39. resultMustBe(4);
  40. outputMustBe("ABCD");
  41. }
  42. TEST_F(StringBuilderTests, TwoStrings) {
  43. print("ABCD");
  44. resultMustBe(4);
  45. print("EFGH");
  46. resultMustBe(4);
  47. outputMustBe("ABCDEFGH");
  48. }