Chromium Code Reviews| Index: sync/protocol/proto_value_conversions_unittest.cc |
| diff --git a/sync/protocol/proto_value_conversions_unittest.cc b/sync/protocol/proto_value_conversions_unittest.cc |
| index 3d96378722f1684a1c95764f69d7f9b35344dd0b..4f9e830a9418fc9bb6f50faf2a3113a9d9124a57 100644 |
| --- a/sync/protocol/proto_value_conversions_unittest.cc |
| +++ b/sync/protocol/proto_value_conversions_unittest.cc |
| @@ -187,5 +187,67 @@ TEST_F(ProtoValueConversionsTest, EntitySpecificsToValue) { |
| static_cast<int>(value->size())); |
| } |
| +namespace { |
| +// Returns whether the given value has specifics under the entries in the given |
| +// path. |
| +bool ValueHasSpecifics(DictionaryValue* value, |
|
akalin
2012/03/20 19:38:34
use a const DictionaryValue&
|
| + const std::string& path) { |
| + ListValue* entities_list = NULL; |
| + DictionaryValue* entry_dictionary = NULL; |
| + DictionaryValue* specifics_dictionary = NULL; |
| + |
| + if (!value->GetList(path, &entities_list)) |
| + return false; |
| + |
| + if (!entities_list->GetDictionary(0, &entry_dictionary)) |
| + return false; |
| + |
| + return entry_dictionary->GetDictionary("specifics", |
| + &specifics_dictionary); |
| +} |
| +} // namespace |
| + |
| +TEST_F(ProtoValueConversionsTest, ClientToServerMessageToValue) { |
| + // Create a ClientToServerMessage with an EntitySpecifics. Converting it to |
|
akalin
2012/03/20 19:38:34
move comment to above TEST_F
|
| + // a value should respect the |include_specifics| flag. |
| + sync_pb::ClientToServerMessage message; |
| + sync_pb::CommitMessage* commit_message = message.mutable_commit(); |
| + sync_pb::SyncEntity* entity = commit_message->add_entries(); |
| + sync_pb::EntitySpecifics* specifics = entity->mutable_specifics(); |
| + |
| + scoped_ptr<DictionaryValue> value_with_specifics( |
| + ClientToServerMessageToValue(message, true /* include_specifics */)); |
| + EXPECT_FALSE(value_with_specifics->empty()); |
| + EXPECT_TRUE(ValueHasSpecifics(value_with_specifics.get(), "commit.entries")); |
| + |
| + scoped_ptr<DictionaryValue> value_without_specifics( |
| + ClientToServerMessageToValue(message, false /* include_specifics */)); |
| + EXPECT_FALSE(value_without_specifics->empty()); |
| + EXPECT_FALSE(ValueHasSpecifics(value_without_specifics.get(), |
| + "commit.entries")); |
| +} |
| + |
| +TEST_F(ProtoValueConversionsTest, ClientToServerResponseToValue) { |
| + // Create a ClientToServerResponse with an EntitySpecifics. Converting it to |
|
akalin
2012/03/20 19:38:34
here, too
|
| + // a value should respect the |include_specifics| flag. |
| + sync_pb::ClientToServerResponse message; |
| + sync_pb::GetUpdatesResponse* response = message.mutable_get_updates(); |
| + sync_pb::SyncEntity* entity = response->add_entries(); |
| + sync_pb::EntitySpecifics* specifics = entity->mutable_specifics(); |
| + |
| + scoped_ptr<DictionaryValue> value_with_specifics( |
| + ClientToServerResponseToValue(message, true /* include_specifics */)); |
| + EXPECT_FALSE(value_with_specifics->empty()); |
| + EXPECT_TRUE(ValueHasSpecifics(value_with_specifics.get(), |
| + "get_updates.entries")); |
| + |
| + |
| + scoped_ptr<DictionaryValue> value_without_specifics( |
| + ClientToServerResponseToValue(message, false /* include_specifics */)); |
| + EXPECT_FALSE(value_without_specifics->empty()); |
| + EXPECT_FALSE(ValueHasSpecifics(value_without_specifics.get(), |
| + "get_updates.entries")); |
| +} |
| + |
| } // namespace |
| } // namespace browser_sync |