StringBuilderTests.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Copyright Benoit Blanchon 2014
  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() { sb = new StringBuilder(buffer, sizeof(buffer)); }
  12. void print(const char *value) { returnValue = sb->print(value); }
  13. void outputMustBe(const char *expected) { EXPECT_STREQ(expected, buffer); }
  14. void resultMustBe(size_t expected) { EXPECT_EQ(expected, returnValue); }
  15. private:
  16. char buffer[20];
  17. Print *sb;
  18. size_t returnValue;
  19. };
  20. TEST_F(StringBuilderTests, InitialState) { outputMustBe(""); }
  21. TEST_F(StringBuilderTests, OverCapacity) {
  22. print("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
  23. resultMustBe(19);
  24. print("ABC");
  25. resultMustBe(0);
  26. outputMustBe("ABCDEFGHIJKLMNOPQRS");
  27. }
  28. TEST_F(StringBuilderTests, EmptyString) {
  29. print("");
  30. resultMustBe(0);
  31. outputMustBe("");
  32. }
  33. TEST_F(StringBuilderTests, OneString) {
  34. print("ABCD");
  35. resultMustBe(4);
  36. outputMustBe("ABCD");
  37. }
  38. TEST_F(StringBuilderTests, TwoStrings) {
  39. print("ABCD");
  40. resultMustBe(4);
  41. print("EFGH");
  42. resultMustBe(4);
  43. outputMustBe("ABCDEFGH");
  44. }