jsoncpp_adapter_test.cxx 2.4 KB

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