1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/sync_file_system/drive_backend/drive_backend_test_util.h" 6 7#include <set> 8#include <string> 9 10#include "chrome/browser/drive/drive_api_util.h" 11#include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h" 12#include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 13#include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 14#include "google_apis/drive/drive_api_parser.h" 15#include "google_apis/drive/gdata_wapi_parser.h" 16#include "testing/gtest/include/gtest/gtest.h" 17 18namespace sync_file_system { 19namespace drive_backend { 20namespace test_util { 21 22void ExpectEquivalentDetails(const FileDetails& left, 23 const FileDetails& right) { 24 std::set<std::string> parents; 25 for (int i = 0; i < left.parent_folder_ids_size(); ++i) 26 EXPECT_TRUE(parents.insert(left.parent_folder_ids(i)).second); 27 28 for (int i = 0; i < right.parent_folder_ids_size(); ++i) 29 EXPECT_EQ(1u, parents.erase(left.parent_folder_ids(i))); 30 EXPECT_TRUE(parents.empty()); 31 32 EXPECT_EQ(left.title(), right.title()); 33 EXPECT_EQ(left.file_kind(), right.file_kind()); 34 EXPECT_EQ(left.md5(), right.md5()); 35 EXPECT_EQ(left.etag(), right.etag()); 36 EXPECT_EQ(left.creation_time(), right.creation_time()); 37 EXPECT_EQ(left.modification_time(), right.modification_time()); 38 EXPECT_EQ(left.missing(), right.missing()); 39 EXPECT_EQ(left.change_id(), right.change_id()); 40} 41 42void ExpectEquivalentMetadata(const FileMetadata& left, 43 const FileMetadata& right) { 44 EXPECT_EQ(left.file_id(), right.file_id()); 45 ExpectEquivalentDetails(left.details(), right.details()); 46} 47 48void ExpectEquivalentTrackers(const FileTracker& left, 49 const FileTracker& right) { 50 EXPECT_EQ(left.tracker_id(), right.tracker_id()); 51 EXPECT_EQ(left.parent_tracker_id(), right.parent_tracker_id()); 52 EXPECT_EQ(left.file_id(), right.file_id()); 53 EXPECT_EQ(left.app_id(), right.app_id()); 54 EXPECT_EQ(left.tracker_kind(), right.tracker_kind()); 55 ExpectEquivalentDetails(left.synced_details(), right.synced_details()); 56 EXPECT_EQ(left.dirty(), right.dirty()); 57 EXPECT_EQ(left.active(), right.active()); 58 EXPECT_EQ(left.needs_folder_listing(), right.needs_folder_listing()); 59} 60 61scoped_ptr<FileMetadata> CreateFolderMetadata(const std::string& file_id, 62 const std::string& title) { 63 FileDetails details; 64 details.set_title(title); 65 details.set_file_kind(FILE_KIND_FOLDER); 66 details.set_missing(false); 67 68 scoped_ptr<FileMetadata> metadata(new FileMetadata); 69 metadata->set_file_id(file_id); 70 *metadata->mutable_details() = details; 71 72 return metadata.Pass(); 73} 74 75scoped_ptr<FileMetadata> CreateFileMetadata(const std::string& file_id, 76 const std::string& title, 77 const std::string& md5) { 78 FileDetails details; 79 details.set_title(title); 80 details.set_file_kind(FILE_KIND_FILE); 81 details.set_missing(false); 82 details.set_md5(md5); 83 84 scoped_ptr<FileMetadata> metadata(new FileMetadata); 85 metadata->set_file_id(file_id); 86 *metadata->mutable_details() = details; 87 88 return metadata.Pass(); 89} 90 91scoped_ptr<FileTracker> CreateTracker(const FileMetadata& metadata, 92 int64 tracker_id, 93 const FileTracker* parent_tracker) { 94 scoped_ptr<FileTracker> tracker(new FileTracker); 95 tracker->set_tracker_id(tracker_id); 96 int64 parent_id = parent_tracker ? 97 parent_tracker->tracker_id() : kInvalidTrackerID; 98 tracker->set_parent_tracker_id(parent_id); 99 tracker->set_file_id(metadata.file_id()); 100 if (parent_tracker) 101 tracker->set_app_id(parent_tracker->app_id()); 102 tracker->set_tracker_kind(TRACKER_KIND_REGULAR); 103 *tracker->mutable_synced_details() = metadata.details(); 104 tracker->set_dirty(false); 105 tracker->set_active(true); 106 tracker->set_needs_folder_listing(false); 107 return tracker.Pass(); 108} 109 110scoped_ptr<FileTracker> CreatePlaceholderTracker( 111 const std::string& file_id, 112 int64 tracker_id, 113 const FileTracker* parent_tracker) { 114 scoped_ptr<FileTracker> tracker(new FileTracker); 115 tracker->set_tracker_id(tracker_id); 116 if (parent_tracker) 117 tracker->set_parent_tracker_id(parent_tracker->tracker_id()); 118 tracker->set_file_id(file_id); 119 if (parent_tracker) 120 tracker->set_app_id(parent_tracker->app_id()); 121 tracker->set_tracker_kind(TRACKER_KIND_REGULAR); 122 tracker->set_dirty(true); 123 tracker->set_active(false); 124 tracker->set_needs_folder_listing(false); 125 return tracker.Pass(); 126} 127 128} // namespace test_util 129} // namespace drive_backend 130} // namespace sync_file_system 131