StringBuilderTests.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright Benoit Blanchon 2014-2015
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://github.com/bblanchon/ArduinoJson
  6. #include <gtest/gtest.h>
  7. #include <ArduinoJson/Internals/StringBuilder.hpp>
  8. using namespace ArduinoJson::Internals;
  9. class StringBuilderTests : public testing::Test {
  10. protected:
  11. virtual void SetUp() {
  12. _stringBuilder = new StringBuilder(_buffer, sizeof(_buffer));
  13. }
  14. virtual void TearDown() { delete _stringBuilder; }
  15. void print(const char *value) { _returnValue = _stringBuilder->print(value); }
  16. void outputMustBe(const char *expected) { EXPECT_STREQ(expected, _buffer); }
  17. void resultMustBe(size_t expected) { EXPECT_EQ(expected, _returnValue); }
  18. private:
  19. char _buffer[20];
  20. Print *_stringBuilder;
  21. size_t _returnValue;
  22. };
  23. TEST_F(StringBuilderTests, InitialState) { outputMustBe(""); }
  24. TEST_F(StringBuilderTests, OverCapacity) {
  25. print("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
  26. resultMustBe(19);
  27. print("ABC");
  28. resultMustBe(0);
  29. outputMustBe("ABCDEFGHIJKLMNOPQRS");
  30. }
  31. TEST_F(StringBuilderTests, EmptyString) {
  32. print("");
  33. resultMustBe(0);
  34. outputMustBe("");
  35. }
  36. TEST_F(StringBuilderTests, OneString) {
  37. print("ABCD");
  38. resultMustBe(4);
  39. outputMustBe("ABCD");
  40. }
  41. TEST_F(StringBuilderTests, TwoStrings) {
  42. print("ABCD");
  43. resultMustBe(4);
  44. print("EFGH");
  45. resultMustBe(4);
  46. outputMustBe("ABCDEFGH");
  47. }