StringBuilder.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // Copyright Benoit Blanchon 2014-2017
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://bblanchon.github.io/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() {
  16. delete _stringBuilder;
  17. }
  18. void print(const char *value) {
  19. _returnValue = _stringBuilder->print(value);
  20. }
  21. void outputMustBe(const char *expected) {
  22. EXPECT_STREQ(expected, _buffer);
  23. }
  24. void resultMustBe(size_t expected) {
  25. EXPECT_EQ(expected, _returnValue);
  26. }
  27. private:
  28. char _buffer[20];
  29. Print *_stringBuilder;
  30. size_t _returnValue;
  31. };
  32. TEST_F(StringBuilderTests, InitialState) {
  33. outputMustBe("");
  34. }
  35. TEST_F(StringBuilderTests, OverCapacity) {
  36. print("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
  37. resultMustBe(19);
  38. print("ABC");
  39. resultMustBe(0);
  40. outputMustBe("ABCDEFGHIJKLMNOPQRS");
  41. }
  42. TEST_F(StringBuilderTests, EmptyString) {
  43. print("");
  44. resultMustBe(0);
  45. outputMustBe("");
  46. }
  47. TEST_F(StringBuilderTests, OneString) {
  48. print("ABCD");
  49. resultMustBe(4);
  50. outputMustBe("ABCD");
  51. }
  52. TEST_F(StringBuilderTests, TwoStrings) {
  53. print("ABCD");
  54. resultMustBe(4);
  55. print("EFGH");
  56. resultMustBe(4);
  57. outputMustBe("ABCDEFGH");
  58. }