local_file_sync_status_unittest.cc revision 2385ea399aae016c0806a4f9ef3c9cfe3d2a39df
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/local/local_file_sync_status.h" 6 7#include "base/basictypes.h" 8#include "testing/gtest/include/gtest/gtest.h" 9#include "url/gurl.h" 10 11using fileapi::FileSystemURL; 12 13namespace sync_file_system { 14 15namespace { 16 17const char kParent[] = "filesystem:http://foo.com/test/dir a"; 18const char kFile[] = "filesystem:http://foo.com/test/dir a/dir b"; 19const char kChild[] = "filesystem:http://foo.com/test/dir a/dir b/file"; 20 21const char kOther1[] = "filesystem:http://foo.com/test/dir b"; 22const char kOther2[] = "filesystem:http://foo.com/temporary/dir a"; 23 24FileSystemURL URL(const char* spec) { 25 return FileSystemURL::CreateForTest((GURL(spec))); 26} 27 28} // namespace 29 30TEST(LocalFileSyncStatusTest, WritingSimple) { 31 LocalFileSyncStatus status; 32 33 status.StartWriting(URL(kFile)); 34 status.StartWriting(URL(kFile)); 35 status.EndWriting(URL(kFile)); 36 37 EXPECT_TRUE(status.IsWriting(URL(kFile))); 38 EXPECT_TRUE(status.IsWriting(URL(kParent))); 39 EXPECT_TRUE(status.IsWriting(URL(kChild))); 40 EXPECT_FALSE(status.IsWriting(URL(kOther1))); 41 EXPECT_FALSE(status.IsWriting(URL(kOther2))); 42 43 // Adding writers doesn't change the entry's writability. 44 EXPECT_TRUE(status.IsWritable(URL(kFile))); 45 EXPECT_TRUE(status.IsWritable(URL(kParent))); 46 EXPECT_TRUE(status.IsWritable(URL(kChild))); 47 EXPECT_TRUE(status.IsWritable(URL(kOther1))); 48 EXPECT_TRUE(status.IsWritable(URL(kOther2))); 49 50 // Adding writers makes the entry non-syncable. 51 EXPECT_FALSE(status.IsSyncable(URL(kFile))); 52 EXPECT_FALSE(status.IsSyncable(URL(kParent))); 53 EXPECT_FALSE(status.IsSyncable(URL(kChild))); 54 EXPECT_TRUE(status.IsSyncable(URL(kOther1))); 55 EXPECT_TRUE(status.IsSyncable(URL(kOther2))); 56 57 status.EndWriting(URL(kFile)); 58 59 EXPECT_FALSE(status.IsWriting(URL(kFile))); 60 EXPECT_FALSE(status.IsWriting(URL(kParent))); 61 EXPECT_FALSE(status.IsWriting(URL(kChild))); 62} 63 64TEST(LocalFileSyncStatusTest, SyncingSimple) { 65 LocalFileSyncStatus status; 66 67 status.StartSyncing(URL(kFile)); 68 69 EXPECT_FALSE(status.IsWritable(URL(kFile))); 70 EXPECT_FALSE(status.IsWritable(URL(kParent))); 71 EXPECT_FALSE(status.IsWritable(URL(kChild))); 72 EXPECT_TRUE(status.IsWritable(URL(kOther1))); 73 EXPECT_TRUE(status.IsWritable(URL(kOther2))); 74 75 // New sync cannot be started for entries that are already in syncing. 76 EXPECT_FALSE(status.IsSyncable(URL(kFile))); 77 EXPECT_FALSE(status.IsSyncable(URL(kParent))); 78 EXPECT_FALSE(status.IsSyncable(URL(kChild))); 79 EXPECT_TRUE(status.IsSyncable(URL(kOther1))); 80 EXPECT_TRUE(status.IsSyncable(URL(kOther2))); 81 82 status.EndSyncing(URL(kFile)); 83 84 EXPECT_TRUE(status.IsWritable(URL(kFile))); 85 EXPECT_TRUE(status.IsWritable(URL(kParent))); 86 EXPECT_TRUE(status.IsWritable(URL(kChild))); 87} 88 89} // namespace sync_file_system 90