123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- // Copyright (c) 2012 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 <memory>
- #include <set>
- #include <string>
- #include "base/strings/string_util.h"
- #include "base/test/values_test_util.h"
- #include "base/values.h"
- #include "components/sync/base/model_type.h"
- #include "components/sync/protocol/entity_specifics.pb.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace syncer {
- namespace {
- class ModelTypeTest : public testing::Test {};
- TEST_F(ModelTypeTest, ModelTypeToValue) {
- for (int i = 0; i < GetNumModelTypes(); ++i) {
- ModelType model_type = ModelTypeFromInt(i);
- base::ExpectStringValue(ModelTypeToDebugString(model_type),
- *ModelTypeToValue(model_type));
- }
- }
- TEST_F(ModelTypeTest, ModelTypeSetToValue) {
- const ModelTypeSet model_types(BOOKMARKS, APPS);
- std::unique_ptr<base::ListValue> value(ModelTypeSetToValue(model_types));
- ASSERT_TRUE(value->is_list());
- base::Value::ConstListView value_list = value->GetListDeprecated();
- ASSERT_EQ(2u, value_list.size());
- ASSERT_TRUE(value_list[0].is_string());
- EXPECT_EQ("Bookmarks", value_list[0].GetString());
- ASSERT_TRUE(value_list[1].is_string());
- EXPECT_EQ("Apps", value_list[1].GetString());
- }
- TEST_F(ModelTypeTest, IsRealDataType) {
- EXPECT_FALSE(IsRealDataType(UNSPECIFIED));
- EXPECT_TRUE(IsRealDataType(FIRST_REAL_MODEL_TYPE));
- EXPECT_TRUE(IsRealDataType(LAST_REAL_MODEL_TYPE));
- EXPECT_TRUE(IsRealDataType(BOOKMARKS));
- EXPECT_TRUE(IsRealDataType(APPS));
- EXPECT_TRUE(IsRealDataType(ARC_PACKAGE));
- EXPECT_TRUE(IsRealDataType(PRINTERS));
- EXPECT_TRUE(IsRealDataType(PRINTERS_AUTHORIZATION_SERVERS));
- EXPECT_TRUE(IsRealDataType(READING_LIST));
- }
- // Make sure we can convert ModelTypes to and from specifics field
- // numbers.
- TEST_F(ModelTypeTest, ModelTypeToFromSpecificsFieldNumber) {
- ModelTypeSet protocol_types = ProtocolTypes();
- for (ModelType type : protocol_types) {
- int field_number = GetSpecificsFieldNumberFromModelType(type);
- EXPECT_EQ(type, GetModelTypeFromSpecificsFieldNumber(field_number));
- }
- }
- TEST_F(ModelTypeTest, ModelTypeOfInvalidSpecificsFieldNumber) {
- EXPECT_EQ(UNSPECIFIED, GetModelTypeFromSpecificsFieldNumber(0));
- }
- TEST_F(ModelTypeTest, ModelTypeHistogramMapping) {
- std::set<ModelTypeForHistograms> histogram_values;
- ModelTypeSet all_types = ModelTypeSet::All();
- for (ModelType type : all_types) {
- SCOPED_TRACE(ModelTypeToDebugString(type));
- ModelTypeForHistograms histogram_value = ModelTypeHistogramValue(type);
- EXPECT_TRUE(histogram_values.insert(histogram_value).second)
- << "Expected histogram values to be unique";
- EXPECT_LE(static_cast<int>(histogram_value),
- static_cast<int>(ModelTypeForHistograms::kMaxValue));
- }
- }
- TEST_F(ModelTypeTest, ModelTypeToStableIdentifier) {
- std::set<int> identifiers;
- ModelTypeSet all_types = ModelTypeSet::All();
- for (ModelType type : all_types) {
- SCOPED_TRACE(ModelTypeToDebugString(type));
- int stable_identifier = ModelTypeToStableIdentifier(type);
- EXPECT_GT(stable_identifier, 0);
- EXPECT_TRUE(identifiers.insert(stable_identifier).second)
- << "Expected identifier values to be unique";
- }
- // Hard code a few example model_types to make it harder to break that the
- // identifiers are stable.
- EXPECT_EQ(3, ModelTypeToStableIdentifier(BOOKMARKS));
- EXPECT_EQ(7, ModelTypeToStableIdentifier(AUTOFILL));
- EXPECT_EQ(9, ModelTypeToStableIdentifier(TYPED_URLS));
- }
- TEST_F(ModelTypeTest, DefaultFieldValues) {
- ModelTypeSet types = ProtocolTypes();
- for (ModelType type : types) {
- SCOPED_TRACE(ModelTypeToDebugString(type));
- sync_pb::EntitySpecifics specifics;
- AddDefaultFieldValue(type, &specifics);
- EXPECT_TRUE(specifics.IsInitialized());
- std::string tmp;
- EXPECT_TRUE(specifics.SerializeToString(&tmp));
- sync_pb::EntitySpecifics from_string;
- EXPECT_TRUE(from_string.ParseFromString(tmp));
- EXPECT_TRUE(from_string.IsInitialized());
- EXPECT_EQ(type, GetModelTypeFromSpecifics(from_string));
- }
- }
- TEST_F(ModelTypeTest, ModelTypeToRootTagValues) {
- for (ModelType model_type : ProtocolTypes()) {
- std::string root_tag = ModelTypeToRootTag(model_type);
- if (IsRealDataType(model_type)) {
- EXPECT_TRUE(base::StartsWith(root_tag, "google_chrome_",
- base::CompareCase::INSENSITIVE_ASCII));
- } else {
- EXPECT_EQ(root_tag, "INVALID");
- }
- }
- }
- TEST_F(ModelTypeTest, ModelTypeDebugStringIsNotEmpty) {
- for (ModelType model_type : ModelTypeSet::All()) {
- EXPECT_NE("", ModelTypeToDebugString(model_type));
- }
- }
- TEST_F(ModelTypeTest, ModelTypeNotificationTypeMapping) {
- ModelTypeSet all_types = ModelTypeSet::All();
- for (ModelType model_type : all_types) {
- std::string notification_type;
- bool ret = RealModelTypeToNotificationType(model_type, ¬ification_type);
- if (ret) {
- auto notified_model_type = ModelType::UNSPECIFIED;
- ASSERT_NE(model_type, notified_model_type);
- EXPECT_TRUE(NotificationTypeToRealModelType(notification_type,
- ¬ified_model_type));
- EXPECT_EQ(model_type, notified_model_type);
- } else {
- EXPECT_FALSE(ProtocolTypes().Has(model_type));
- EXPECT_TRUE(notification_type.empty());
- }
- }
- }
- } // namespace
- } // namespace syncer
|