Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync_file_system / drive_backend / drive_backend_test_util.cc
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
18 namespace sync_file_system {
19 namespace drive_backend {
20 namespace test_util {
21
22 void 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
42 void 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
48 void 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
61 scoped_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
75 scoped_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
91 scoped_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
110 scoped_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