OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/logging.h" | 5 #include "base/logging.h" |
6 #include "base/port.h" | 6 #include "base/port.h" |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 #include "chrome/browser/sync/syncable/path_name_cmp.h" | 8 #include "chrome/browser/sync/syncable/path_name_cmp.h" |
9 #include "chrome/browser/sync/util/path_helpers.h" | 9 #include "chrome/browser/sync/util/path_helpers.h" |
10 #include "chrome/browser/sync/util/sync_types.h" | 10 #include "chrome/browser/sync/util/sync_types.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
12 | 12 |
13 namespace syncable { | 13 namespace syncable { |
14 | 14 |
15 class PathHelpersTest : public testing::Test { | 15 class PathHelpersTest : public testing::Test { |
16 }; | 16 }; |
17 | 17 |
18 TEST(PathHelpersTest, TruncatePathStringTest) { | |
19 // Simple case. | |
20 PathString str = PSTR("12345"); | |
21 EXPECT_EQ(PSTR("123"), TruncatePathString(str, 3)); | |
22 EXPECT_EQ(str, TruncatePathString(str, str.size())); | |
23 | |
24 // abcg is "abc" + musical g clef U+1D11E | |
25 #if PATHSTRING_IS_STD_STRING | |
26 // UTF-8 | |
27 PathChar abcg[] = {'a', 'b', 'c', 0xF0, 0x9D, 0x84, 0x9E, '\0'}; | |
28 #else // PATHSTRING_IS_STD_STRING | |
29 // UTF-16 | |
30 PathChar abcg[] = {'a', 'b', 'c', 0xD834, 0xDD1E, '\0'}; | |
31 #endif // PATHSTRING_IS_STD_STRING | |
32 | |
33 EXPECT_EQ(PSTR("abc"), TruncatePathString(abcg, 4)); | |
34 | |
35 // Further utf-8 tests. | |
36 #if PATHSTRING_IS_STD_STRING | |
37 // UTF-8 | |
38 | |
39 EXPECT_EQ(PSTR("abc"), TruncatePathString(abcg, 4)); | |
40 EXPECT_EQ(PSTR("abc"), TruncatePathString(abcg, 5)); | |
41 EXPECT_EQ(PSTR("abc"), TruncatePathString(abcg, 6)); | |
42 EXPECT_EQ(PathString(abcg), TruncatePathString(abcg, 7)); | |
43 | |
44 PathChar abc2[] = {'a', 'b', 'c', 0xC3, 0xB1, '\0'}; // abc(n w/ tilde) | |
45 EXPECT_EQ(PSTR("abc"), TruncatePathString(abc2, 3)); | |
46 EXPECT_EQ(PSTR("abc"), TruncatePathString(abc2, 4)); | |
47 EXPECT_EQ(PathString(abc2), TruncatePathString(abc2, 5)); | |
48 | |
49 PathChar abc3[] = {'a', 'b', 'c', 0xE2, 0x82, 0xAC, '\0'}; // abc(euro) | |
50 EXPECT_EQ(PSTR("abc"), TruncatePathString(abc3, 3)); | |
51 EXPECT_EQ(PSTR("abc"), TruncatePathString(abc3, 4)); | |
52 EXPECT_EQ(PSTR("abc"), TruncatePathString(abc3, 5)); | |
53 EXPECT_EQ(PathString(abc3), TruncatePathString(abc3, 6)); | |
54 #endif | |
55 } | |
56 | |
57 TEST(PathHelpersTest, PathStrutil) { | |
58 PathString big = PSTR("abcdef"); | |
59 PathString suffix = PSTR("def"); | |
60 PathString other = PSTR("x"); | |
61 EXPECT_TRUE(HasSuffixPathString(big, suffix)); | |
62 EXPECT_FALSE(HasSuffixPathString(suffix, big)); | |
63 EXPECT_FALSE(HasSuffixPathString(big, other)); | |
64 EXPECT_EQ(PSTR("abc"), StripSuffixPathString(big, suffix)); | |
65 } | |
66 | |
67 TEST(PathHelpersTest, SanitizePathComponent) { | 18 TEST(PathHelpersTest, SanitizePathComponent) { |
68 #if defined(OS_WIN) | 19 #if defined(OS_WIN) |
69 EXPECT_EQ(MakePathComponentOSLegal(L"bar"), L""); | 20 EXPECT_EQ(MakePathComponentOSLegal("bar"), ""); |
70 EXPECT_EQ(MakePathComponentOSLegal(L"bar <"), L"bar"); | 21 EXPECT_EQ(MakePathComponentOSLegal("bar <"), "bar"); |
71 EXPECT_EQ(MakePathComponentOSLegal(L"bar.<"), L"bar"); | 22 EXPECT_EQ(MakePathComponentOSLegal("bar.<"), "bar"); |
72 EXPECT_EQ(MakePathComponentOSLegal(L"prn"), L"prn~1"); | 23 EXPECT_EQ(MakePathComponentOSLegal("prn"), "prn~1"); |
73 EXPECT_EQ(MakePathComponentOSLegal(L"pr>n"), L"prn~1"); | 24 EXPECT_EQ(MakePathComponentOSLegal("pr>n"), "prn~1"); |
74 EXPECT_EQ(MakePathComponentOSLegal(L"ab:c"), L"abc"); | 25 EXPECT_EQ(MakePathComponentOSLegal("ab:c"), "abc"); |
75 EXPECT_EQ(MakePathComponentOSLegal(L"a|bc"), L"abc"); | 26 EXPECT_EQ(MakePathComponentOSLegal("a|bc"), "abc"); |
76 EXPECT_EQ(MakePathComponentOSLegal(L"baz~9"), L""); | 27 EXPECT_EQ(MakePathComponentOSLegal("baz~9"), ""); |
77 EXPECT_EQ(MakePathComponentOSLegal(L"\007"), L"~1"); | 28 EXPECT_EQ(MakePathComponentOSLegal("\007"), "~1"); |
78 EXPECT_EQ(MakePathComponentOSLegal(L"com1.txt.bat"), L"com1~1.txt.bat"); | 29 EXPECT_EQ(MakePathComponentOSLegal("com1.txt.bat"), "com1~1.txt.bat"); |
79 EXPECT_EQ(MakePathComponentOSLegal(L"foo.com1.bat"), L""); | 30 EXPECT_EQ(MakePathComponentOSLegal("foo.com1.bat"), ""); |
80 EXPECT_EQ(MakePathComponentOSLegal(L"\010gg"), L"gg"); | 31 EXPECT_EQ(MakePathComponentOSLegal("\010gg"), "gg"); |
81 EXPECT_EQ(MakePathComponentOSLegal(L"<"), L"~1"); | 32 EXPECT_EQ(MakePathComponentOSLegal("<"), "~1"); |
82 EXPECT_EQ(MakePathComponentOSLegal(L"col:on"), L"colon"); | 33 EXPECT_EQ(MakePathComponentOSLegal("col:on"), "colon"); |
83 EXPECT_EQ(MakePathComponentOSLegal(L"q\""), L"q"); | 34 EXPECT_EQ(MakePathComponentOSLegal("q\""), "q"); |
84 EXPECT_EQ(MakePathComponentOSLegal(L"back\\slAsh"), L"backslAsh"); | 35 EXPECT_EQ(MakePathComponentOSLegal("back\\slAsh"), "backslAsh"); |
85 EXPECT_EQ(MakePathComponentOSLegal(L"sla/sh "), L"slash"); | 36 EXPECT_EQ(MakePathComponentOSLegal("sla/sh "), "slash"); |
86 EXPECT_EQ(MakePathComponentOSLegal(L"s|laSh"), L"slaSh"); | 37 EXPECT_EQ(MakePathComponentOSLegal("s|laSh"), "slaSh"); |
87 EXPECT_EQ(MakePathComponentOSLegal(L"CON"), L"CON~1"); | 38 EXPECT_EQ(MakePathComponentOSLegal("CON"), "CON~1"); |
88 EXPECT_EQ(MakePathComponentOSLegal(L"PRN"), L"PRN~1"); | 39 EXPECT_EQ(MakePathComponentOSLegal("PRN"), "PRN~1"); |
89 EXPECT_EQ(MakePathComponentOSLegal(L"AUX"), L"AUX~1"); | 40 EXPECT_EQ(MakePathComponentOSLegal("AUX"), "AUX~1"); |
90 EXPECT_EQ(MakePathComponentOSLegal(L"NUL"), L"NUL~1"); | 41 EXPECT_EQ(MakePathComponentOSLegal("NUL"), "NUL~1"); |
91 EXPECT_EQ(MakePathComponentOSLegal(L"COM1"), L"COM1~1"); | 42 EXPECT_EQ(MakePathComponentOSLegal("COM1"), "COM1~1"); |
92 EXPECT_EQ(MakePathComponentOSLegal(L"COM2"), L"COM2~1"); | 43 EXPECT_EQ(MakePathComponentOSLegal("COM2"), "COM2~1"); |
93 EXPECT_EQ(MakePathComponentOSLegal(L"COM3"), L"COM3~1"); | 44 EXPECT_EQ(MakePathComponentOSLegal("COM3"), "COM3~1"); |
94 EXPECT_EQ(MakePathComponentOSLegal(L"COM4"), L"COM4~1"); | 45 EXPECT_EQ(MakePathComponentOSLegal("COM4"), "COM4~1"); |
95 EXPECT_EQ(MakePathComponentOSLegal(L"COM5"), L"COM5~1"); | 46 EXPECT_EQ(MakePathComponentOSLegal("COM5"), "COM5~1"); |
96 EXPECT_EQ(MakePathComponentOSLegal(L"COM6"), L"COM6~1"); | 47 EXPECT_EQ(MakePathComponentOSLegal("COM6"), "COM6~1"); |
97 EXPECT_EQ(MakePathComponentOSLegal(L"COM7"), L"COM7~1"); | 48 EXPECT_EQ(MakePathComponentOSLegal("COM7"), "COM7~1"); |
98 EXPECT_EQ(MakePathComponentOSLegal(L"COM8"), L"COM8~1"); | 49 EXPECT_EQ(MakePathComponentOSLegal("COM8"), "COM8~1"); |
99 EXPECT_EQ(MakePathComponentOSLegal(L"COM9"), L"COM9~1"); | 50 EXPECT_EQ(MakePathComponentOSLegal("COM9"), "COM9~1"); |
100 EXPECT_EQ(MakePathComponentOSLegal(L"LPT1"), L"LPT1~1"); | 51 EXPECT_EQ(MakePathComponentOSLegal("LPT1"), "LPT1~1"); |
101 EXPECT_EQ(MakePathComponentOSLegal(L"LPT2"), L"LPT2~1"); | 52 EXPECT_EQ(MakePathComponentOSLegal("LPT2"), "LPT2~1"); |
102 EXPECT_EQ(MakePathComponentOSLegal(L"LPT3"), L"LPT3~1"); | 53 EXPECT_EQ(MakePathComponentOSLegal("LPT3"), "LPT3~1"); |
103 EXPECT_EQ(MakePathComponentOSLegal(L"LPT4"), L"LPT4~1"); | 54 EXPECT_EQ(MakePathComponentOSLegal("LPT4"), "LPT4~1"); |
104 EXPECT_EQ(MakePathComponentOSLegal(L"LPT5"), L"LPT5~1"); | 55 EXPECT_EQ(MakePathComponentOSLegal("LPT5"), "LPT5~1"); |
105 EXPECT_EQ(MakePathComponentOSLegal(L"LPT6"), L"LPT6~1"); | 56 EXPECT_EQ(MakePathComponentOSLegal("LPT6"), "LPT6~1"); |
106 EXPECT_EQ(MakePathComponentOSLegal(L"LPT7"), L"LPT7~1"); | 57 EXPECT_EQ(MakePathComponentOSLegal("LPT7"), "LPT7~1"); |
107 EXPECT_EQ(MakePathComponentOSLegal(L"LPT8"), L"LPT8~1"); | 58 EXPECT_EQ(MakePathComponentOSLegal("LPT8"), "LPT8~1"); |
108 EXPECT_EQ(MakePathComponentOSLegal(L"LPT9"), L"LPT9~1"); | 59 EXPECT_EQ(MakePathComponentOSLegal("LPT9"), "LPT9~1"); |
109 EXPECT_EQ(MakePathComponentOSLegal(L"bar~bar"), L""); | 60 EXPECT_EQ(MakePathComponentOSLegal("bar~bar"), ""); |
110 EXPECT_EQ(MakePathComponentOSLegal(L"adlr~-3"), L""); | 61 EXPECT_EQ(MakePathComponentOSLegal("adlr~-3"), ""); |
111 EXPECT_EQ(MakePathComponentOSLegal(L"tilde~"), L""); | 62 EXPECT_EQ(MakePathComponentOSLegal("tilde~"), ""); |
112 EXPECT_EQ(MakePathComponentOSLegal(L"mytext.txt"), L""); | 63 EXPECT_EQ(MakePathComponentOSLegal("mytext.txt"), ""); |
113 EXPECT_EQ(MakePathComponentOSLegal(L"mytext|.txt"), L"mytext.txt"); | 64 EXPECT_EQ(MakePathComponentOSLegal("mytext|.txt"), "mytext.txt"); |
114 EXPECT_EQ(MakePathComponentOSLegal(L"okay.com1.txt"), L""); | 65 EXPECT_EQ(MakePathComponentOSLegal("okay.com1.txt"), ""); |
115 EXPECT_EQ(MakePathComponentOSLegal(L"software-3.tar.gz"), L""); | 66 EXPECT_EQ(MakePathComponentOSLegal("software-3.tar.gz"), ""); |
116 EXPECT_EQ(MakePathComponentOSLegal(L"<"), L"~1"); | 67 EXPECT_EQ(MakePathComponentOSLegal("<"), "~1"); |
117 EXPECT_EQ(MakePathComponentOSLegal(L"<.<"), L"~1"); | 68 EXPECT_EQ(MakePathComponentOSLegal("<.<"), "~1"); |
118 EXPECT_EQ(MakePathComponentOSLegal(L"<.<txt"), L".txt"); | 69 EXPECT_EQ(MakePathComponentOSLegal("<.<txt"), ".txt"); |
119 EXPECT_EQ(MakePathComponentOSLegal(L"txt<.<"), L"txt"); | 70 EXPECT_EQ(MakePathComponentOSLegal("txt<.<"), "txt"); |
120 #else // !defined(OS_WIN) | 71 #else // !defined(OS_WIN) |
121 | |
122 EXPECT_EQ(MakePathComponentOSLegal("bar"), ""); | 72 EXPECT_EQ(MakePathComponentOSLegal("bar"), ""); |
123 EXPECT_EQ(MakePathComponentOSLegal("b"), ""); | 73 EXPECT_EQ(MakePathComponentOSLegal("b"), ""); |
124 EXPECT_EQ(MakePathComponentOSLegal("A"), ""); | 74 EXPECT_EQ(MakePathComponentOSLegal("A"), ""); |
125 EXPECT_EQ(MakePathComponentOSLegal("<'|"), ""); | 75 EXPECT_EQ(MakePathComponentOSLegal("<'|"), ""); |
126 EXPECT_EQ(MakePathComponentOSLegal("/"), ":"); | 76 EXPECT_EQ(MakePathComponentOSLegal("/"), ":"); |
127 EXPECT_EQ(MakePathComponentOSLegal(":"), ""); | 77 EXPECT_EQ(MakePathComponentOSLegal(":"), ""); |
128 | |
129 #endif // defined(OS_WIN) | 78 #endif // defined(OS_WIN) |
130 } | 79 } |
131 | 80 |
132 } // namespace syncable | 81 } // namespace syncable |
OLD | NEW |