|
|
@@ -0,0 +1,73 @@
|
|
|
+//
|
|
|
+// 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 <gmock/gmock.h>
|
|
|
+
|
|
|
+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);
|
|
|
+}
|