diff options
author | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-03-05 04:45:24 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-03-05 04:45:24 +0000 |
commit | c47b5481de3d027efa0975ba7b722003b177b583 (patch) | |
tree | f8cbc802a806455c5fdfeab7f696c63641b9f9f5 /jimfs/src/test/java/com/google/common/jimfs/UnixPathTypeTest.java | |
parent | 68591711a9034281d5fe11fc7a30e535bbce125c (diff) | |
parent | e50b3b756101b544da2b0d62041d91547ce14a00 (diff) | |
download | jimfs-c47b5481de3d027efa0975ba7b722003b177b583.tar.gz |
Initial merge with upstream am: cef92d673c am: c5f71e95df am: e50b3b7561
Change-Id: I9a53b224c320efb500d8a33b41798dd4df5fc78f
Diffstat (limited to 'jimfs/src/test/java/com/google/common/jimfs/UnixPathTypeTest.java')
-rw-r--r-- | jimfs/src/test/java/com/google/common/jimfs/UnixPathTypeTest.java | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/jimfs/src/test/java/com/google/common/jimfs/UnixPathTypeTest.java b/jimfs/src/test/java/com/google/common/jimfs/UnixPathTypeTest.java new file mode 100644 index 0000000..5bc6cb5 --- /dev/null +++ b/jimfs/src/test/java/com/google/common/jimfs/UnixPathTypeTest.java @@ -0,0 +1,108 @@ +/* + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.common.jimfs; + +import static com.google.common.jimfs.PathTypeTest.assertParseResult; +import static com.google.common.jimfs.PathTypeTest.assertUriRoundTripsCorrectly; +import static com.google.common.jimfs.PathTypeTest.fileSystemUri; +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import com.google.common.collect.ImmutableList; +import java.net.URI; +import java.nio.file.InvalidPathException; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** + * Tests for {@link UnixPathType}. + * + * @author Colin Decker + */ +@RunWith(JUnit4.class) +public class UnixPathTypeTest { + + @Test + public void testUnix() { + PathType unix = PathType.unix(); + assertThat(unix.getSeparator()).isEqualTo("/"); + assertThat(unix.getOtherSeparators()).isEqualTo(""); + + // "//foo/bar" is what will be passed to parsePath if "/", "foo", "bar" is passed to getPath + PathType.ParseResult path = unix.parsePath("//foo/bar"); + assertParseResult(path, "/", "foo", "bar"); + assertThat(unix.toString(path.root(), path.names())).isEqualTo("/foo/bar"); + + PathType.ParseResult path2 = unix.parsePath("foo/bar/"); + assertParseResult(path2, null, "foo", "bar"); + assertThat(unix.toString(path2.root(), path2.names())).isEqualTo("foo/bar"); + } + + @Test + public void testUnix_toUri() { + URI fileUri = PathType.unix().toUri(fileSystemUri, "/", ImmutableList.of("foo", "bar"), false); + assertThat(fileUri.toString()).isEqualTo("jimfs://foo/foo/bar"); + assertThat(fileUri.getPath()).isEqualTo("/foo/bar"); + + URI directoryUri = + PathType.unix().toUri(fileSystemUri, "/", ImmutableList.of("foo", "bar"), true); + assertThat(directoryUri.toString()).isEqualTo("jimfs://foo/foo/bar/"); + assertThat(directoryUri.getPath()).isEqualTo("/foo/bar/"); + + URI rootUri = PathType.unix().toUri(fileSystemUri, "/", ImmutableList.<String>of(), true); + assertThat(rootUri.toString()).isEqualTo("jimfs://foo/"); + assertThat(rootUri.getPath()).isEqualTo("/"); + } + + @Test + public void testUnix_toUri_escaping() { + URI uri = PathType.unix().toUri(fileSystemUri, "/", ImmutableList.of("foo bar"), false); + assertThat(uri.toString()).isEqualTo("jimfs://foo/foo%20bar"); + assertThat(uri.getRawPath()).isEqualTo("/foo%20bar"); + assertThat(uri.getPath()).isEqualTo("/foo bar"); + } + + @Test + public void testUnix_uriRoundTrips() { + assertUriRoundTripsCorrectly(PathType.unix(), "/"); + assertUriRoundTripsCorrectly(PathType.unix(), "/foo"); + assertUriRoundTripsCorrectly(PathType.unix(), "/foo/bar/baz"); + assertUriRoundTripsCorrectly(PathType.unix(), "/foo/bar baz/one/two"); + assertUriRoundTripsCorrectly(PathType.unix(), "/foo bar"); + assertUriRoundTripsCorrectly(PathType.unix(), "/foo bar/"); + assertUriRoundTripsCorrectly(PathType.unix(), "/foo bar/baz/one"); + } + + @Test + public void testUnix_illegalCharacters() { + try { + PathType.unix().parsePath("/foo/bar\0"); + fail(); + } catch (InvalidPathException expected) { + assertEquals(8, expected.getIndex()); + } + + try { + PathType.unix().parsePath("/\u00001/foo"); + fail(); + } catch (InvalidPathException expected) { + assertEquals(1, expected.getIndex()); + } + } +} |