StringBuilderTests.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include <gtest/gtest.h>
  2. #include <ArduinoJson/Internals/StringBuilder.hpp>
  3. using namespace ArduinoJson::Internals;
  4. class StringBuilderTests : public testing::Test {
  5. protected:
  6. virtual void SetUp() { sb = new StringBuilder(buffer, sizeof(buffer)); }
  7. void print(const char *value) { returnValue = sb->print(value); }
  8. void outputMustBe(const char *expected) { EXPECT_STREQ(expected, buffer); }
  9. void resultMustBe(size_t expected) { EXPECT_EQ(expected, returnValue); }
  10. private:
  11. char buffer[20];
  12. Print *sb;
  13. size_t returnValue;
  14. };
  15. TEST_F(StringBuilderTests, InitialState) { outputMustBe(""); }
  16. TEST_F(StringBuilderTests, OverCapacity) {
  17. print("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
  18. resultMustBe(19);
  19. print("ABC");
  20. resultMustBe(0);
  21. outputMustBe("ABCDEFGHIJKLMNOPQRS");
  22. }
  23. TEST_F(StringBuilderTests, EmptyString) {
  24. print("");
  25. resultMustBe(0);
  26. outputMustBe("");
  27. }
  28. TEST_F(StringBuilderTests, OneString) {
  29. print("ABCD");
  30. resultMustBe(4);
  31. outputMustBe("ABCD");
  32. }
  33. TEST_F(StringBuilderTests, TwoStrings) {
  34. print("ABCD");
  35. resultMustBe(4);
  36. print("EFGH");
  37. resultMustBe(4);
  38. outputMustBe("ABCDEFGH");
  39. }