#include #include #include #include #include #include #include using namespace jvalidate::adapter; using testing::IsEmpty; TEST(JsonCppAdapterTest, IteratorDefaultCtors) { using ArrayIterator = detail::JsonArrayIterator>; using ObjectIterator = detail::JsonObjectIterator>; EXPECT_THAT(ArrayIterator(), ArrayIterator()); EXPECT_THAT(ObjectIterator(), ObjectIterator()); } TEST(JsonCppAdapterTest, Empty) { EXPECT_THAT(&AdapterTraits::const_empty(), &AdapterTraits::const_empty()); } TEST(JsonCppAdapterTest, NumberThatFitsInIntIsIntType) { Json::Value json = 10.0; EXPECT_THAT(JsonCppAdapter(json).type(), Type::Integer); } TEST(JsonCppAdapterTest, NumberThatDoesFitsInIntIsNumberType) { Json::Value json = 10.5; EXPECT_THAT(JsonCppAdapter(json).type(), Type::Number); } TEST(JsonCppAdapterTest, UIntThatFitsInIntIsIntType) { Json::Value json = 10ULL; EXPECT_THAT(JsonCppAdapter(json).type(), Type::Integer); } TEST(JsonCppAdapterTest, UIntThatDoesNotFitInIntIsNumberType) { Json::Value json = 9223372036854775808ULL; EXPECT_THAT(JsonCppAdapter(json).type(), Type::Number); } TEST(JsonCppAdapterTest, ObjectAdapterIsNullSafe) { JsonCppObjectAdapter object(nullptr); EXPECT_THAT(object.size(), 0); EXPECT_THAT(*object, IsEmpty()); EXPECT_NO_THROW(object.find("A")); EXPECT_THAT(object.begin(), object.end()); EXPECT_THAT(object.find("A"), object.end()); EXPECT_FALSE(object.contains("A")); EXPECT_NO_THROW(object["A"]); EXPECT_THAT(object["A"].type(), Type::Null); } TEST(JsonCppAdapterTest, ArrayAdapterIsNullSafe) { jvalidate::adapter::detail::SimpleArrayAdapter array(nullptr); EXPECT_THAT(array.size(), 0); EXPECT_THAT(*array, IsEmpty()); EXPECT_THAT(array.begin(), array.end()); EXPECT_NO_THROW(array[0]); EXPECT_THAT(array[0].type(), Type::Null); } #if !defined(JVALIDATE_MONOTEST) int main(int argc, char ** argv) { testing::InitGoogleMock(&argc, argv); return RUN_ALL_TESTS(); } #endif