// Copyright 2019 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "util/json/json_value.h" #include "gtest/gtest.h" #include "platform/base/error.h" #include "util/json/json_serialization.h" namespace openscreen { TEST(JsonValueTest, GetInt) { absl::string_view obj(R"!({"key1": 17, "key2": 32.3, "key3": "asdf"})!"); ErrorOr value_or_error = json::Parse(obj); ASSERT_TRUE(value_or_error); Json::Value& value = value_or_error.value(); absl::optional result1 = MaybeGetInt(value, JSON_EXPAND_FIND_CONSTANT_ARGS("key1")); absl::optional result2 = MaybeGetInt(value, JSON_EXPAND_FIND_CONSTANT_ARGS("key2")); absl::optional result3 = MaybeGetInt(value, JSON_EXPAND_FIND_CONSTANT_ARGS("key42")); EXPECT_FALSE(result2); EXPECT_FALSE(result3); ASSERT_TRUE(result1); EXPECT_EQ(result1.value(), 17); } TEST(JsonValueTest, GetString) { absl::string_view obj( R"!({"key1": 17, "key2": 32.3, "key3": "asdf", "key4": ""})!"); ErrorOr value_or_error = json::Parse(obj); ASSERT_TRUE(value_or_error); Json::Value& value = value_or_error.value(); absl::optional result1 = MaybeGetString(value, JSON_EXPAND_FIND_CONSTANT_ARGS("key3")); absl::optional result2 = MaybeGetString(value, JSON_EXPAND_FIND_CONSTANT_ARGS("key2")); absl::optional result3 = MaybeGetString(value, JSON_EXPAND_FIND_CONSTANT_ARGS("key42")); absl::optional result4 = MaybeGetString(value, JSON_EXPAND_FIND_CONSTANT_ARGS("key4")); EXPECT_FALSE(result2); EXPECT_FALSE(result3); ASSERT_TRUE(result1); EXPECT_EQ(result1.value(), "asdf"); ASSERT_TRUE(result4); EXPECT_EQ(result4.value(), ""); } } // namespace openscreen