JsonVariant_As_Tests.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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. #define ARDUINOJSON_ENABLE_STD_STREAM
  8. #include <ArduinoJson.h>
  9. static const char* null = 0;
  10. TEST(JsonVariant_As_Tests, DoubleAsBool) {
  11. JsonVariant variant = 4.2;
  12. ASSERT_TRUE(variant.as<bool>());
  13. }
  14. TEST(JsonVariant_As_Tests, DoubleAsCstr) {
  15. JsonVariant variant = 4.2;
  16. ASSERT_FALSE(variant.as<const char*>());
  17. }
  18. TEST(JsonVariant_As_Tests, DoubleAsString) {
  19. JsonVariant variant = 4.2;
  20. ASSERT_EQ(String("4.20"), variant.as<String>());
  21. }
  22. TEST(JsonVariant_As_Tests, DoubleAsLong) {
  23. JsonVariant variant = 4.2;
  24. ASSERT_EQ(4L, variant.as<long>());
  25. }
  26. TEST(JsonVariant_As_Tests, DoubleZeroAsBool) {
  27. JsonVariant variant = 0.0;
  28. ASSERT_FALSE(variant.as<bool>());
  29. }
  30. TEST(JsonVariant_As_Tests, DoubleZeroAsLong) {
  31. JsonVariant variant = 0.0;
  32. ASSERT_EQ(0L, variant.as<long>());
  33. }
  34. TEST(JsonVariant_As_Tests, FalseAsBool) {
  35. JsonVariant variant = false;
  36. ASSERT_FALSE(variant.as<bool>());
  37. }
  38. TEST(JsonVariant_As_Tests, FalseAsDouble) {
  39. JsonVariant variant = false;
  40. ASSERT_EQ(0.0, variant.as<double>());
  41. }
  42. TEST(JsonVariant_As_Tests, FalseAsLong) {
  43. JsonVariant variant = false;
  44. ASSERT_EQ(0L, variant.as<long>());
  45. }
  46. TEST(JsonVariant_As_Tests, FalseAsString) {
  47. JsonVariant variant = false;
  48. ASSERT_EQ(String("0"), variant.as<String>());
  49. }
  50. TEST(JsonVariant_As_Tests, TrueAsBool) {
  51. JsonVariant variant = true;
  52. ASSERT_TRUE(variant.as<bool>());
  53. }
  54. TEST(JsonVariant_As_Tests, TrueAsDouble) {
  55. JsonVariant variant = true;
  56. ASSERT_EQ(1.0, variant.as<double>());
  57. }
  58. TEST(JsonVariant_As_Tests, TrueAsLong) {
  59. JsonVariant variant = true;
  60. ASSERT_EQ(1L, variant.as<long>());
  61. }
  62. TEST(JsonVariant_As_Tests, TrueAsString) {
  63. JsonVariant variant = true;
  64. ASSERT_EQ(String("1"), variant.as<String>());
  65. }
  66. TEST(JsonVariant_As_Tests, LongAsBool) {
  67. JsonVariant variant = 42L;
  68. ASSERT_TRUE(variant.as<bool>());
  69. }
  70. TEST(JsonVariant_As_Tests, LongZeroAsBool) {
  71. JsonVariant variant = 0L;
  72. ASSERT_FALSE(variant.as<bool>());
  73. }
  74. TEST(JsonVariant_As_Tests, LongAsDouble) {
  75. JsonVariant variant = 42L;
  76. ASSERT_EQ(42.0, variant.as<double>());
  77. }
  78. TEST(JsonVariant_As_Tests, LongAsString) {
  79. JsonVariant variant = 42L;
  80. ASSERT_EQ(String("42"), variant.as<String>());
  81. }
  82. TEST(JsonVariant_As_Tests, LongZeroAsDouble) {
  83. JsonVariant variant = 0L;
  84. ASSERT_EQ(0.0, variant.as<double>());
  85. }
  86. TEST(JsonVariant_As_Tests, NullAsBool) {
  87. JsonVariant variant = null;
  88. ASSERT_FALSE(variant.as<bool>());
  89. }
  90. TEST(JsonVariant_As_Tests, NullAsDouble) {
  91. JsonVariant variant = null;
  92. ASSERT_EQ(0.0, variant.as<double>());
  93. }
  94. TEST(JsonVariant_As_Tests, NullAsLong) {
  95. JsonVariant variant = null;
  96. ASSERT_EQ(0L, variant.as<long>());
  97. }
  98. TEST(JsonVariant_As_Tests, NullAsString) {
  99. JsonVariant variant = null;
  100. ASSERT_EQ(String("null"), variant.as<String>());
  101. }
  102. TEST(JsonVariant_As_Tests, NumberStringAsBool) {
  103. JsonVariant variant = "42";
  104. ASSERT_TRUE(variant.as<bool>());
  105. }
  106. TEST(JsonVariant_As_Tests, NumberStringAsLong) {
  107. JsonVariant variant = "42";
  108. ASSERT_EQ(42L, variant.as<long>());
  109. }
  110. TEST(JsonVariant_As_Tests, RandomStringAsBool) {
  111. JsonVariant variant = "hello";
  112. ASSERT_FALSE(variant.as<bool>());
  113. }
  114. TEST(JsonVariant_As_Tests, RandomStringAsLong) {
  115. JsonVariant variant = "hello";
  116. ASSERT_EQ(0L, variant.as<long>());
  117. }
  118. TEST(JsonVariant_As_Tests, RandomStringAsString) {
  119. JsonVariant variant = "hello";
  120. ASSERT_EQ(String("hello"), variant.as<String>());
  121. }
  122. TEST(JsonVariant_As_Tests, TrueStringAsBool) {
  123. JsonVariant variant = "true";
  124. ASSERT_TRUE(variant.as<bool>());
  125. }
  126. TEST(JsonVariant_As_Tests, TrueStringAsLong) {
  127. JsonVariant variant = "true";
  128. ASSERT_EQ(1L, variant.as<long>());
  129. }
  130. TEST(JsonVariant_As_Tests, ObjectAsString) {
  131. DynamicJsonBuffer buffer;
  132. JsonObject& obj = buffer.createObject();
  133. obj["key"] = "value";
  134. JsonVariant variant = obj;
  135. ASSERT_EQ(String("{\"key\":\"value\"}"), variant.as<String>());
  136. }
  137. TEST(JsonVariant_As_Tests, ArrayAsString) {
  138. DynamicJsonBuffer buffer;
  139. JsonArray& arr = buffer.createArray();
  140. arr.add(4);
  141. arr.add(2);
  142. JsonVariant variant = arr;
  143. ASSERT_EQ(String("[4,2]"), variant.as<String>());
  144. }