drive_backend_test_util.cc revision 58537e28ecd584eab876aee8be7156509866d23a
1e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver// Copyright 2013 The Chromium Authors. All rights reserved. 2e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver// Use of this source code is governed by a BSD-style license that can be 3e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver// found in the LICENSE file. 4e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 5e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver#include "chrome/browser/sync_file_system/drive_backend/drive_backend_test_util.h" 6e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 7e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver#include <set> 8e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 9e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver#include "chrome/browser/google_apis/drive_api_parser.h" 10e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver#include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 11e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver#include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 12e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver#include "testing/gtest/include/gtest/gtest.h" 13e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 14e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvernamespace sync_file_system { 15e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvernamespace drive_backend { 16e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvernamespace test_util { 17e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 18e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvervoid ExpectEquivalentServiceMetadata(const ServiceMetadata& left, 19e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver const ServiceMetadata& right) { 20e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.largest_change_id(), right.largest_change_id()); 21e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.sync_root_tracker_id(), right.sync_root_tracker_id()); 22e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.next_tracker_id(), right.next_tracker_id()); 23e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver} 24e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 25e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvervoid ExpectEquivalentDetails(const FileDetails& left, 26e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver const FileDetails& right) { 27e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver std::set<std::string> parents; 28e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver for (int i = 0; i < left.parent_folder_ids_size(); ++i) 29e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_TRUE(parents.insert(left.parent_folder_ids(i)).second); 30e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 31e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver for (int i = 0; i < right.parent_folder_ids_size(); ++i) 32e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(1u, parents.erase(left.parent_folder_ids(i))); 33e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_TRUE(parents.empty()); 34e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 35e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.title(), right.title()); 36e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.file_kind(), right.file_kind()); 37e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.md5(), right.md5()); 38e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.etag(), right.etag()); 39e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.creation_time(), right.creation_time()); 40e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.modification_time(), right.modification_time()); 41e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.deleted(), right.deleted()); 42e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.change_id(), right.change_id()); 43e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver} 44e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 45e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvervoid ExpectEquivalentMetadata(const FileMetadata& left, 46e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver const FileMetadata& right) { 47e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.file_id(), right.file_id()); 48e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver ExpectEquivalentDetails(left.details(), right.details()); 49e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver} 50e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver 51e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvervoid ExpectEquivalentTrackers(const FileTracker& left, 52e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver const FileTracker& right) { 53e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.tracker_id(), right.tracker_id()); 54e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.parent_tracker_id(), right.parent_tracker_id()); 55e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.file_id(), right.file_id()); 56e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.app_id(), right.app_id()); 57e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.tracker_kind(), right.tracker_kind()); 58e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver ExpectEquivalentDetails(left.synced_details(), right.synced_details()); 59e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.dirty(), right.dirty()); 60e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver EXPECT_EQ(left.active(), right.active()); 61 EXPECT_EQ(left.needs_folder_listing(), right.needs_folder_listing()); 62} 63 64void ExpectCompatibleResourceAndMetadata( 65 const google_apis::FileResource& resource, 66 const FileMetadata& metadata) { 67 EXPECT_EQ(resource.file_id(), metadata.file_id()); 68 const FileDetails& details = metadata.details(); 69 EXPECT_EQ(resource.title(), details.title()); 70 71 google_apis::DriveEntryKind resource_kind = resource.GetKind(); 72 switch (details.file_kind()) { 73 case FILE_KIND_UNSUPPORTED: 74 EXPECT_NE(google_apis::ENTRY_KIND_FILE, resource_kind); 75 EXPECT_NE(google_apis::ENTRY_KIND_FOLDER, resource_kind); 76 break; 77 case FILE_KIND_FILE: 78 EXPECT_EQ(google_apis::ENTRY_KIND_FILE, resource_kind); 79 break; 80 case FILE_KIND_FOLDER: 81 EXPECT_EQ(google_apis::ENTRY_KIND_FOLDER, resource_kind); 82 break; 83 } 84 85 EXPECT_EQ(resource.md5_checksum(), details.md5()); 86 EXPECT_EQ(resource.etag(), details.etag()); 87 EXPECT_EQ(resource.created_date(), 88 base::Time::FromInternalValue(details.creation_time())); 89 EXPECT_EQ(resource.modified_date(), 90 base::Time::FromInternalValue(details.modification_time())); 91 EXPECT_EQ(resource.labels().is_trashed(), details.deleted()); 92} 93 94void ExpectCompatibleMetadataAndTracker(const FileMetadata& metadata, 95 const FileTracker& tracker) { 96 EXPECT_EQ(metadata.file_id(), tracker.file_id()); 97 if (!tracker.dirty()) 98 ExpectEquivalentDetails(metadata.details(), tracker.synced_details()); 99} 100 101void SyncStatusResultCallback(SyncStatusCode* status_out, 102 SyncStatusCode status) { 103 EXPECT_EQ(SYNC_STATUS_UNKNOWN, *status_out); 104 *status_out = status; 105} 106 107void DatabaseCreateResultCallback(SyncStatusCode* status_out, 108 scoped_ptr<MetadataDatabase>* database_out, 109 SyncStatusCode status, 110 scoped_ptr<MetadataDatabase> database) { 111 EXPECT_EQ(SYNC_STATUS_UNKNOWN, *status_out); 112 *status_out = status; 113 *database_out = database.Pass(); 114} 115 116void ResourceEntryResultCallback( 117 google_apis::GDataErrorCode* error_out, 118 scoped_ptr<google_apis::ResourceEntry>* entry_out, 119 google_apis::GDataErrorCode error, 120 scoped_ptr<google_apis::ResourceEntry> entry) { 121 ASSERT_TRUE(error_out); 122 ASSERT_TRUE(entry_out); 123 EXPECT_EQ(google_apis::GDATA_OTHER_ERROR, *error_out); 124 *error_out = error; 125 *entry_out = entry.Pass(); 126} 127 128} // namespace test_util 129} // namespace drive_backend 130} // namespace sync_file_system 131