// // json_binder_discard_test.cpp // json-direct-test // // Created by Sam Jaffe on 11/17/18. // Copyright © 2018 Sam Jaffe. All rights reserved. // #include "json/json_binder.hpp" #include using namespace json::binder; using namespace json::parser; TEST(JsonBinderDiscardTest, ParsesLargeNumberSuccessfully) { char data[] = R"(10000000000)"; char const * ptr = data; EXPECT_NO_THROW(json::parse_discard_token(ptr)); EXPECT_THAT(ptr, data + strlen(data)); EXPECT_THAT(*ptr, '\0'); } TEST(JsonBinderDiscardTest, ParsesObjectSuccessfully) { char data[] = R"({"key": "value"})"; char const * ptr = data; EXPECT_NO_THROW(json::parse_discard_token(ptr)); EXPECT_THAT(ptr, data + strlen(data)); EXPECT_THAT(*ptr, '\0'); } TEST(JsonBinderDiscardTest, ParsesArraySuccessfully) { char data[] = R"([ 1.0 ])"; char const * ptr = data; EXPECT_NO_THROW(json::parse_discard_token(ptr)); EXPECT_THAT(ptr, data + strlen(data)); EXPECT_THAT(*ptr, '\0'); } TEST(JsonBinderDiscardTest, ParsesNullSuccessfully) { char data[] = R"(null)"; char const * ptr = data; EXPECT_NO_THROW(json::parse_discard_token(ptr)); EXPECT_THAT(ptr, data + strlen(data)); EXPECT_THAT(*ptr, '\0'); } TEST(JsonBinderDiscardTest, ThrowsOnMissingValueForKey) { char data[] = R"({"key": })"; char const * ptr = data; EXPECT_THROW(json::parse_discard_token(ptr), json::malformed_json_exception); } TEST(JsonBinderDiscardTest, ThrowsOnMissingAssoc) { char data[] = R"({"key"="value"})"; char const * ptr = data; EXPECT_THROW(json::parse_discard_token(ptr), json::malformed_json_exception); } TEST(JsonBinderDiscardTest, ThrowsOnMissingArrayEndToken) { char data[] = R"([1.0 )"; char const * ptr = data; EXPECT_THROW(json::parse_discard_token(ptr), json::unterminated_json_exception); } TEST(JsonBinderDiscardTest, ThrowsOnMissingObjectEndToken) { char data[] = R"({"key": "value")"; char const * ptr = data; EXPECT_THROW(json::parse_discard_token(ptr), json::unterminated_json_exception); }