// // json_binder_test_terminate.t.h // json // // Created by Sam Jaffe on 2/26/17. // #include "json/json_binder.hpp" #include using namespace json::binder; using namespace json::parser; TEST(JsonBinderEndOfStreamTest, WhitespaceDelimitsTokens) { char data[] = "10 0"; int out = 0; value_binder binder{}; EXPECT_NO_THROW(parse(bind(out, binder), data, allow_all)); EXPECT_THAT(out, 10); } TEST(JsonBinderEndOfStreamTest, ExpectsEoBToOccurAfterAllParsed) { char data[] = "10 0"; int out = 0; value_binder binder{}; EXPECT_THROW(parse(bind(out, binder), data, disable_concatenated_json_bodies), json::malformed_json_exception); } TEST(JsonBinderEndOfStreamTest, QuotationFormsEndOfStringToken) { char data[] = "\"This is a \"string"; std::string out = ""; value_binder binder{}; EXPECT_NO_THROW(parse(json::binder::bind(out, binder), data, allow_all)); EXPECT_THAT(out, "This is a "); } TEST(JsonBinderEndOfStreamTest, ExpectsEoBToOccurAfterAllParsedString) { char data[] = "\"This is a \"string"; std::string out = ""; value_binder binder{}; EXPECT_THROW(parse(json::binder::bind(out, binder), data, disable_concatenated_json_bodies), json::malformed_json_exception); } TEST(JsonBinderEndOfStreamTest, WhitespaceCountsAsSuccessfulEoB) { char data[] = "\"This is a \" "; std::string out = ""; value_binder binder{}; EXPECT_NO_THROW(parse(json::binder::bind(out, binder), data, disable_concatenated_json_bodies)); } TEST(JsonBinderEndOfStreamTest, NoAmountOfWhitespaceHidesConcatToken) { char data[] = "\"This is a \" string"; std::string out = ""; value_binder binder{}; EXPECT_THROW(parse(json::binder::bind(out, binder), data, disable_concatenated_json_bodies), json::malformed_json_exception); }