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