aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/OSPathTest.cpp
diff options
context:
space:
mode:
authorGravatar Cary Clark <caryclark@skia.org>2018-01-05 10:55:28 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-01-05 17:53:15 +0000
commit7a600416e131b33610b1c96a367b3cb2569f458e (patch)
tree5f283eb22f84d9057123e36169e643bd3af3e906 /tests/OSPathTest.cpp
parent18eafd922d911606dfe991efad8ec5eaafbc2704 (diff)
allow both slash types
Windows allows forwards and backwards slashes for path directory delimiters. R=halcanary@google.com Change-Id: Ie6f1257c98ac8e2468d9297b5dc391fd17f4ae82 Reviewed-on: https://skia-review.googlesource.com/90821 Reviewed-by: Hal Canary <halcanary@google.com> Commit-Queue: Cary Clark <caryclark@google.com>
Diffstat (limited to 'tests/OSPathTest.cpp')
-rw-r--r--tests/OSPathTest.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/tests/OSPathTest.cpp b/tests/OSPathTest.cpp
index 22deff80a5..74ca802304 100644
--- a/tests/OSPathTest.cpp
+++ b/tests/OSPathTest.cpp
@@ -32,7 +32,8 @@ static void test_dir_with_file(skiatest::Reporter* reporter, SkString dir,
// fullName should be the combined size of dir and file, plus one if
// dir did not include the final path separator.
size_t expectedSize = dir.size() + filename.size();
- if (!dir.endsWith(SkOSPath::SEPARATOR) && !dir.isEmpty()) {
+ if (!dir.endsWith(SkOSPath::SEPARATOR) && ('\\' != SkOSPath::SEPARATOR ||
+ !dir.endsWith('/')) && !dir.isEmpty()) {
expectedSize++;
}
REPORTER_ASSERT(reporter, fullName.size() == expectedSize);
@@ -46,7 +47,10 @@ static void test_dir_with_file(skiatest::Reporter* reporter, SkString dir,
// dirname should be the same as dir with any trailing seperators removed.
// Except when the the string is just "/".
SkString strippedDir = dir;
- while (strippedDir.size() > 2 && strippedDir[strippedDir.size() - 1] == SkOSPath::SEPARATOR) {
+ while (strippedDir.size() > 2 &&
+ (strippedDir[strippedDir.size() - 1] == SkOSPath::SEPARATOR ||
+ ('\\' == SkOSPath::SEPARATOR &&
+ strippedDir[strippedDir.size() - 1] == '/'))) {
strippedDir.remove(strippedDir.size() - 1, 1);
}
if (!dirname.equals(strippedDir)) {
@@ -102,4 +106,13 @@ DEF_TEST(OSPath, reporter) {
// Test that nullptr can be used for the directory and filename.
SkString emptyPath = SkOSPath::Join(nullptr, nullptr);
REPORTER_ASSERT(reporter, emptyPath.isEmpty());
+
+#ifdef SK_BUILD_FOR_WIN
+ test_dir_with_file(reporter, SkString("dir/"), filename);
+ test_dir_with_file(reporter, SkString("dir/dir"), filename);
+ test_dir_with_file(reporter, SkString("dir\\dir/"), filename);
+ test_dir_with_file(reporter, SkString("dir/dir\\"), filename);
+ test_dir_with_file(reporter, SkString("dir\\dir/dir"), filename);
+ test_dir_with_file(reporter, SkString("dir/dir\\dir"), filename);
+#endif
}