JsonVariant_PrintTo_Tests.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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 <gtest/gtest.h>
  8. #include <ArduinoJson.h>
  9. #include <limits>
  10. class JsonVariant_PrintTo_Tests : public testing::Test {
  11. protected:
  12. JsonVariant variant;
  13. void outputMustBe(const char *expected) {
  14. char buffer[256] = "";
  15. size_t n = variant.printTo(buffer, sizeof(buffer));
  16. ASSERT_STREQ(expected, buffer);
  17. ASSERT_EQ(strlen(expected), n);
  18. }
  19. };
  20. TEST_F(JsonVariant_PrintTo_Tests, Empty) { outputMustBe(""); }
  21. TEST_F(JsonVariant_PrintTo_Tests, Null) {
  22. variant = static_cast<char *>(0);
  23. outputMustBe("null");
  24. }
  25. TEST_F(JsonVariant_PrintTo_Tests, String) {
  26. variant = "hello";
  27. outputMustBe("\"hello\"");
  28. }
  29. TEST_F(JsonVariant_PrintTo_Tests, DoubleZero) {
  30. variant = 0.0;
  31. outputMustBe("0.00");
  32. }
  33. TEST_F(JsonVariant_PrintTo_Tests, DoubleDefaultDigits) {
  34. variant = 3.14159265358979323846;
  35. outputMustBe("3.14");
  36. }
  37. TEST_F(JsonVariant_PrintTo_Tests, DoubleFourDigits) {
  38. variant = JsonVariant(3.14159265358979323846, 4);
  39. outputMustBe("3.1416");
  40. }
  41. TEST_F(JsonVariant_PrintTo_Tests, Infinity) {
  42. variant = std::numeric_limits<double>::infinity();
  43. outputMustBe("Infinity");
  44. }
  45. TEST_F(JsonVariant_PrintTo_Tests, MinusInfinity) {
  46. variant = -std::numeric_limits<double>::infinity();
  47. outputMustBe("-Infinity");
  48. }
  49. TEST_F(JsonVariant_PrintTo_Tests, SignalingNaN) {
  50. variant = std::numeric_limits<double>::signaling_NaN();
  51. outputMustBe("NaN");
  52. }
  53. TEST_F(JsonVariant_PrintTo_Tests, QuietNaN) {
  54. variant = std::numeric_limits<double>::quiet_NaN();
  55. outputMustBe("NaN");
  56. }
  57. TEST_F(JsonVariant_PrintTo_Tests, VeryBigPositiveDouble) {
  58. variant = JsonVariant(3.14159265358979323846e42, 4);
  59. outputMustBe("3.1416e42");
  60. }
  61. TEST_F(JsonVariant_PrintTo_Tests, VeryBigNegativeDouble) {
  62. variant = JsonVariant(-3.14159265358979323846e42, 4);
  63. outputMustBe("-3.1416e42");
  64. }
  65. TEST_F(JsonVariant_PrintTo_Tests, VerySmallPositiveDouble) {
  66. variant = JsonVariant(3.14159265358979323846e-42, 4);
  67. outputMustBe("3.1416e-42");
  68. }
  69. TEST_F(JsonVariant_PrintTo_Tests, VerySmallNegativeDouble) {
  70. variant = JsonVariant(-3.14159265358979323846e-42, 4);
  71. outputMustBe("-3.1416e-42");
  72. }
  73. TEST_F(JsonVariant_PrintTo_Tests, Integer) {
  74. variant = 42;
  75. outputMustBe("42");
  76. }
  77. TEST_F(JsonVariant_PrintTo_Tests, NegativeLong) {
  78. variant = -42;
  79. outputMustBe("-42");
  80. }
  81. TEST_F(JsonVariant_PrintTo_Tests, UnsignedLong) {
  82. variant = 4294967295UL;
  83. outputMustBe("4294967295");
  84. }
  85. TEST_F(JsonVariant_PrintTo_Tests, True) {
  86. variant = true;
  87. outputMustBe("true");
  88. }
  89. TEST_F(JsonVariant_PrintTo_Tests, OneFalse) {
  90. variant = false;
  91. outputMustBe("false");
  92. }
  93. #if ARDUINOJSON_USE_LONG_LONG || ARDUINOJSON_USE_INT64
  94. TEST_F(JsonVariant_PrintTo_Tests, NegativeInt64) {
  95. variant = -9223372036854775807 - 1;
  96. outputMustBe("-9223372036854775808");
  97. }
  98. TEST_F(JsonVariant_PrintTo_Tests, PositiveInt64) {
  99. variant = 9223372036854775807;
  100. outputMustBe("9223372036854775807");
  101. }
  102. TEST_F(JsonVariant_PrintTo_Tests, UInt64) {
  103. variant = 18446744073709551615;
  104. outputMustBe("18446744073709551615");
  105. }
  106. #endif