jsoncpp_adapter_test.cxx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include <gmock/gmock.h>
  2. #include <gtest/gtest.h>
  3. #include <json/value.h>
  4. #include <jvalidate/adapter.h>
  5. #include <jvalidate/adapters/jsoncpp.h>
  6. #include <jvalidate/detail/array_iterator.h>
  7. #include <jvalidate/detail/object_iterator.h>
  8. using namespace jvalidate::adapter;
  9. using testing::IsEmpty;
  10. TEST(JsonCppAdapterTest, IteratorDefaultCtors) {
  11. using ArrayIterator =
  12. detail::JsonArrayIterator<Json::ValueConstIterator, JsonCppAdapter<Json::Value const>>;
  13. using ObjectIterator =
  14. detail::JsonObjectIterator<Json::ValueConstIterator, JsonCppAdapter<Json::Value const>>;
  15. EXPECT_THAT(ArrayIterator(), ArrayIterator());
  16. EXPECT_THAT(ObjectIterator(), ObjectIterator());
  17. }
  18. TEST(JsonCppAdapterTest, Empty) {
  19. EXPECT_THAT(&AdapterTraits<Json::Value>::const_empty(),
  20. &AdapterTraits<Json::Value const>::const_empty());
  21. }
  22. TEST(JsonCppAdapterTest, NumberThatFitsInIntIsIntType) {
  23. Json::Value json = 10.0;
  24. EXPECT_THAT(JsonCppAdapter(json).type(), Type::Integer);
  25. }
  26. TEST(JsonCppAdapterTest, NumberThatDoesFitsInIntIsNumberType) {
  27. Json::Value json = 10.5;
  28. EXPECT_THAT(JsonCppAdapter(json).type(), Type::Number);
  29. }
  30. TEST(JsonCppAdapterTest, UIntThatFitsInIntIsIntType) {
  31. Json::Value json = 10ULL;
  32. EXPECT_THAT(JsonCppAdapter(json).type(), Type::Integer);
  33. }
  34. TEST(JsonCppAdapterTest, UIntThatDoesNotFitInIntIsNumberType) {
  35. Json::Value json = 9223372036854775808ULL;
  36. EXPECT_THAT(JsonCppAdapter(json).type(), Type::Number);
  37. }
  38. TEST(JsonCppAdapterTest, ObjectAdapterIsNullSafe) {
  39. JsonCppObjectAdapter<Json::Value const> object(nullptr);
  40. EXPECT_THAT(object.size(), 0);
  41. EXPECT_THAT(*object, IsEmpty());
  42. EXPECT_NO_THROW(object.find("A"));
  43. EXPECT_THAT(object.begin(), object.end());
  44. EXPECT_THAT(object.find("A"), object.end());
  45. EXPECT_FALSE(object.contains("A"));
  46. EXPECT_NO_THROW(object["A"]);
  47. EXPECT_THAT(object["A"].type(), Type::Null);
  48. }
  49. TEST(JsonCppAdapterTest, ArrayAdapterIsNullSafe) {
  50. jvalidate::adapter::detail::SimpleArrayAdapter<Json::Value const> array(nullptr);
  51. EXPECT_THAT(array.size(), 0);
  52. EXPECT_THAT(*array, IsEmpty());
  53. EXPECT_THAT(array.begin(), array.end());
  54. EXPECT_NO_THROW(array[0]);
  55. EXPECT_THAT(array[0].type(), Type::Null);
  56. }
  57. #if !defined(JVALIDATE_MONOTEST)
  58. int main(int argc, char ** argv) {
  59. testing::InitGoogleMock(&argc, argv);
  60. return RUN_ALL_TESTS();
  61. }
  62. #endif