aboutsummaryrefslogtreecommitdiff
path: root/cpp/test/util/json_test.cc
diff options
context:
space:
mode:
authorRouslan Solomakhin <rouslan@chromium.org>2014-07-10 17:58:38 +0000
committerFredrik Roubert <roubert@google.com>2014-09-01 19:20:49 +0200
commitbc335343da0b0364f5245ae270ffdc493e818322 (patch)
tree4007c37bc6732f422ac45c4b34e2cdf1521a7708 /cpp/test/util/json_test.cc
parent769091c77a33efa2b26bd6b0a143e9400ba59617 (diff)
downloadsrc-bc335343da0b0364f5245ae270ffdc493e818322.tar.gz
Avoid string copying in json.cc.
The following two methods: bool Json::HasStringValueForKey(const std::string& key) const; std::string Json::GetStringValueForKey(const std::string& key) const; have been replaced with a single method: bool Json::GetStringValueForKey(const std::string& key, std::string* value) const; to avoid copying possibly large strings. BUG=8 R=roubert@google.com Review URL: https://codereview.appspot.com/112940044
Diffstat (limited to 'cpp/test/util/json_test.cc')
-rw-r--r--cpp/test/util/json_test.cc42
1 files changed, 25 insertions, 17 deletions
diff --git a/cpp/test/util/json_test.cc b/cpp/test/util/json_test.cc
index f6eb389..a3b9f80 100644
--- a/cpp/test/util/json_test.cc
+++ b/cpp/test/util/json_test.cc
@@ -32,8 +32,9 @@ TEST(JsonTest, EmptyStringIsNotValid) {
TEST(JsonTest, EmptyDictionaryContainsNoKeys) {
Json json;
ASSERT_TRUE(json.ParseObject("{}"));
- EXPECT_FALSE(json.HasStringValueForKey("key"));
- EXPECT_FALSE(json.HasStringValueForKey(std::string()));
+ std::string not_checked;
+ EXPECT_FALSE(json.GetStringValueForKey("key", &not_checked));
+ EXPECT_FALSE(json.GetStringValueForKey(std::string(), &not_checked));
}
TEST(JsonTest, InvalidJsonIsNotValid) {
@@ -44,35 +45,40 @@ TEST(JsonTest, InvalidJsonIsNotValid) {
TEST(JsonTest, OneKeyIsValid) {
Json json;
ASSERT_TRUE(json.ParseObject("{\"key\": \"value\"}"));
- ASSERT_TRUE(json.HasStringValueForKey("key"));
- EXPECT_EQ("value", json.GetStringValueForKey("key"));
+ std::string value;
+ EXPECT_TRUE(json.GetStringValueForKey("key", &value));
+ EXPECT_EQ("value", value);
}
TEST(JsonTest, EmptyStringKeyIsNotInObject) {
Json json;
ASSERT_TRUE(json.ParseObject("{\"key\": \"value\"}"));
- EXPECT_FALSE(json.HasStringValueForKey(std::string()));
+ std::string not_checked;
+ EXPECT_FALSE(json.GetStringValueForKey(std::string(), &not_checked));
}
TEST(JsonTest, EmptyKeyIsValid) {
Json json;
ASSERT_TRUE(json.ParseObject("{\"\": \"value\"}"));
- ASSERT_TRUE(json.HasStringValueForKey(std::string()));
- EXPECT_EQ("value", json.GetStringValueForKey(std::string()));
+ std::string value;
+ EXPECT_TRUE(json.GetStringValueForKey(std::string(), &value));
+ EXPECT_EQ("value", value);
}
TEST(JsonTest, EmptyValueIsValid) {
Json json;
ASSERT_TRUE(json.ParseObject("{\"key\": \"\"}"));
- ASSERT_TRUE(json.HasStringValueForKey("key"));
- EXPECT_TRUE(json.GetStringValueForKey("key").empty());
+ std::string value;
+ EXPECT_TRUE(json.GetStringValueForKey("key", &value));
+ EXPECT_TRUE(value.empty());
}
TEST(JsonTest, Utf8EncodingIsValid) {
Json json;
ASSERT_TRUE(json.ParseObject("{\"key\": \"Ü\"}"));
- ASSERT_TRUE(json.HasStringValueForKey("key"));
- EXPECT_EQ("Ü", json.GetStringValueForKey("key"));
+ std::string value;
+ EXPECT_TRUE(json.GetStringValueForKey("key", &value));
+ EXPECT_EQ("Ü", value);
}
TEST(JsonTest, InvalidUtf8IsNotValid) {
@@ -89,11 +95,12 @@ TEST(JsonTest, NullInMiddleIsNotValid) {
TEST(JsonTest, TwoKeysAreValid) {
Json json;
ASSERT_TRUE(json.ParseObject("{\"key1\": \"value1\", \"key2\": \"value2\"}"));
- ASSERT_TRUE(json.HasStringValueForKey("key1"));
- EXPECT_EQ("value1", json.GetStringValueForKey("key1"));
+ std::string value;
+ EXPECT_TRUE(json.GetStringValueForKey("key1", &value));
+ EXPECT_EQ("value1", value);
- ASSERT_TRUE(json.HasStringValueForKey("key2"));
- EXPECT_EQ("value2", json.GetStringValueForKey("key2"));
+ EXPECT_TRUE(json.GetStringValueForKey("key2", &value));
+ EXPECT_EQ("value2", value);
}
TEST(JsonTest, ListIsNotValid) {
@@ -122,8 +129,9 @@ TEST(JsonTest, DictionaryFound) {
ASSERT_TRUE(json.ParseObject("{\"key\":{\"inner_key\":\"value\"}}"));
ASSERT_TRUE(json.HasDictionaryValueForKey("key"));
const Json& sub_json = json.GetDictionaryValueForKey("key");
- ASSERT_TRUE(sub_json.HasStringValueForKey("inner_key"));
- EXPECT_EQ("value", sub_json.GetStringValueForKey("inner_key"));
+ std::string value;
+ EXPECT_TRUE(sub_json.GetStringValueForKey("inner_key", &value));
+ EXPECT_EQ("value", value);
}
TEST(JsonTest, DictionariesHaveKeys) {