test/jdk/jdk/nio/zipfs/PathOps.java
author lancea
Tue, 29 Oct 2019 14:22:18 -0400
changeset 58845 e492513d3630
parent 54693 d890ba18f64b
permissions -rw-r--r--
8231766: Files.copy and Files.move do not honor requested compression method when copying or moving within the same zip file Reviewed-by: clanger, bpb, alanb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
     1
/*
54641
ff0a691901c9 8223015: Cleanups for zipfs tests
clanger
parents: 48768
diff changeset
     2
 * Copyright (c) 2009, 2019, Oracle and/or its affiliates. All rights reserved.
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
     4
 *
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
     7
 * published by the Free Software Foundation.
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
     8
 *
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    13
 * accompanied this code).
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    14
 *
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    18
 *
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    21
 * questions.
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    22
 */
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    23
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    24
import java.io.IOException;
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27260
diff changeset
    25
import java.nio.file.FileSystem;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27260
diff changeset
    26
import java.nio.file.FileSystems;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27260
diff changeset
    27
import java.nio.file.Files;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27260
diff changeset
    28
import java.nio.file.InvalidPathException;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27260
diff changeset
    29
import java.nio.file.Path;
46901
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
    30
import java.nio.file.Paths;
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
    31
import java.nio.file.ProviderMismatchException;
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    32
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    33
/**
23925
0d5f2d863262 8038500: (zipfs) Upgrade ZIP provider to be a supported provider
sherman
parents: 9035
diff changeset
    34
 *
0d5f2d863262 8038500: (zipfs) Upgrade ZIP provider to be a supported provider
sherman
parents: 9035
diff changeset
    35
 * @test
46901
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
    36
 * @bug 8038500 8040059 8139956 8146754 8172921 8186142
23925
0d5f2d863262 8038500: (zipfs) Upgrade ZIP provider to be a supported provider
sherman
parents: 9035
diff changeset
    37
 * @summary Tests path operations for zip provider.
24364
da8afb112f5d 8040059: Change default policy for extensions to no permission
mchung
parents: 23925
diff changeset
    38
 *
48768
ac007e4bbf4b 8178342: Missing @modules in jdk/jdk/nio/zipfs
shurailine
parents: 47216
diff changeset
    39
 * @modules jdk.zipfs
24364
da8afb112f5d 8040059: Change default policy for extensions to no permission
mchung
parents: 23925
diff changeset
    40
 * @run main PathOps
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27260
diff changeset
    41
 * @run main/othervm/java.security.policy=test.policy PathOps
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    42
 */
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    43
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    44
public class PathOps {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    45
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    46
    static final java.io.PrintStream out = System.out;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    47
    static FileSystem fs;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    48
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    49
    private Path path;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    50
    private Exception exc;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    51
37803
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
    52
    private PathOps(String first, String... more) {
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    53
        out.println();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    54
        try {
37803
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
    55
            path = fs.getPath(first, more);
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
    56
            out.format("%s -> %s", first, path);
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    57
        } catch (Exception x) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    58
            exc = x;
37803
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
    59
            out.format("%s -> %s", first, x);
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    60
        }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    61
        out.println();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    62
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    63
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    64
    Path path() {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    65
        return path;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    66
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    67
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    68
    void fail() {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    69
        throw new RuntimeException("PathOps failed");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    70
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    71
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    72
    void checkPath() {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    73
        if (path == null) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    74
            throw new InternalError("path is null");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    75
        }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    76
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    77
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    78
    void check(Object result, String expected) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    79
        out.format("\tExpected: %s\n", expected);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    80
        out.format("\tActual: %s\n",  result);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    81
        if (result == null) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    82
            if (expected == null) return;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    83
        } else {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    84
            // compare string representations
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    85
            if (expected != null && result.toString().equals(expected.toString()))
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    86
                return;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    87
        }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    88
        fail();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    89
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    90
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    91
    void check(Object result, boolean expected) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    92
        check(result, Boolean.toString(expected));
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    93
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    94
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    95
    PathOps root(String expected) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    96
        out.println("check root");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    97
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    98
        check(path.getRoot(), expected);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
    99
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   100
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   101
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   102
    PathOps parent(String expected) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   103
        out.println("check parent");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   104
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   105
        check(path.getParent(), expected);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   106
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   107
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   108
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   109
    PathOps name(String expected) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   110
        out.println("check name");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   111
        checkPath();
8165
b67d8b1f4e46 7015391: (zipfs) Update zip provider for 1/2011 changes
sherman
parents: 8005
diff changeset
   112
        check(path.getFileName(), expected);
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   113
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   114
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   115
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   116
    PathOps element(int index, String expected) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   117
        out.format("check element %d\n", index);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   118
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   119
        check(path.getName(index), expected);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   120
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   121
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   122
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   123
    PathOps subpath(int startIndex, int endIndex, String expected) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   124
        out.format("test subpath(%d,%d)\n", startIndex, endIndex);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   125
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   126
        check(path.subpath(startIndex, endIndex), expected);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   127
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   128
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   129
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   130
    PathOps starts(String prefix) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   131
        out.format("test startsWith with %s\n", prefix);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   132
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   133
        Path s = fs.getPath(prefix);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   134
        check(path.startsWith(s), true);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   135
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   136
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   137
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   138
    PathOps notStarts(String prefix) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   139
        out.format("test not startsWith with %s\n", prefix);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   140
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   141
        Path s = fs.getPath(prefix);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   142
        check(path.startsWith(s), false);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   143
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   144
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   145
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   146
    PathOps ends(String suffix) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   147
        out.format("test endsWith %s\n", suffix);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   148
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   149
        Path s = fs.getPath(suffix);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   150
        check(path.endsWith(s), true);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   151
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   152
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   153
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   154
    PathOps notEnds(String suffix) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   155
        out.format("test not endsWith %s\n", suffix);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   156
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   157
        Path s = fs.getPath(suffix);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   158
        check(path.endsWith(s), false);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   159
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   160
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   161
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   162
    PathOps absolute() {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   163
        out.println("check path is absolute");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   164
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   165
        check(path.isAbsolute(), true);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   166
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   167
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   168
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   169
    PathOps notAbsolute() {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   170
        out.println("check path is not absolute");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   171
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   172
        check(path.isAbsolute(), false);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   173
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   174
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   175
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   176
    PathOps resolve(String other, String expected) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   177
        out.format("test resolve %s\n", other);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   178
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   179
        check(path.resolve(other), expected);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   180
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   181
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   182
43193
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   183
    PathOps resolvePath(String other, String expected) {
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   184
        out.format("test resolve %s\n", other);
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   185
        checkPath();
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   186
        check(path.resolve(fs.getPath(other)), expected);
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   187
        return this;
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   188
    }
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   189
37803
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   190
    PathOps resolveSibling(String other, String expected) {
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   191
        out.format("test resolveSibling %s\n", other);
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   192
        checkPath();
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   193
        check(path.resolveSibling(other), expected);
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   194
        return this;
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   195
    }
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   196
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   197
    PathOps relativize(String other, String expected) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   198
        out.format("test relativize %s\n", other);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   199
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   200
        Path that = fs.getPath(other);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   201
        check(path.relativize(that), expected);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   202
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   203
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   204
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   205
    PathOps normalize(String expected) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   206
        out.println("check normalized path");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   207
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   208
        check(path.normalize(), expected);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   209
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   210
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   211
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   212
    PathOps string(String expected) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   213
        out.println("check string representation");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   214
        checkPath();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   215
        check(path, expected);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   216
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   217
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   218
8005
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   219
    PathOps isSameFile(String target) {
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   220
        try {
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   221
            out.println("check two paths are same");
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   222
            checkPath();
8165
b67d8b1f4e46 7015391: (zipfs) Update zip provider for 1/2011 changes
sherman
parents: 8005
diff changeset
   223
            check(Files.isSameFile(path, test(target).path()), true);
8005
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   224
        } catch (IOException ioe) {
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   225
            fail();
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   226
        }
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   227
        return this;
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   228
    }
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   229
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   230
    PathOps invalid() {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   231
        if (!(exc instanceof InvalidPathException)) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   232
            out.println("InvalidPathException not thrown as expected");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   233
            fail();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   234
        }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   235
        return this;
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   236
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   237
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   238
    static PathOps test(String s) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   239
        return new PathOps(s);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   240
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   241
37803
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   242
    static PathOps test(String first, String... more) {
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   243
        return new PathOps(first, more);
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   244
    }
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   245
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   246
    // -- PathOpss --
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   247
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   248
    static void header(String s) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   249
        out.println();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   250
        out.println();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   251
        out.println("-- " + s + " --");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   252
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   253
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   254
    static void doPathOpTests() {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   255
        header("Path operations");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   256
37803
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   257
        // construction
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   258
        test("/")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   259
            .string("/");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   260
        test("/", "")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   261
            .string("/");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   262
        test("/", "foo")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   263
            .string("/foo");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   264
        test("/", "/foo")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   265
            .string("/foo");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   266
        test("/", "foo/")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   267
            .string("/foo");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   268
        test("foo", "bar", "gus")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   269
            .string("foo/bar/gus");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   270
        test("")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   271
            .string("");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   272
        test("", "/")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   273
            .string("/");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   274
        test("", "foo", "", "bar", "", "/gus")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   275
            .string("foo/bar/gus");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   276
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   277
        // all components
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   278
        test("/a/b/c")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   279
            .root("/")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   280
            .parent("/a/b")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   281
            .name("c");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   282
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   283
        // root component only
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   284
        test("/")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   285
            .root("/")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   286
            .parent(null)
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   287
            .name(null);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   288
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   289
        // no root component
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   290
        test("a/b")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   291
            .root(null)
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   292
            .parent("a")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   293
            .name("b");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   294
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   295
        // name component only
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   296
        test("foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   297
            .root(null)
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   298
            .parent(null)
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   299
            .name("foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   300
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   301
        // startsWith
8180
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   302
        test("")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   303
            .starts("")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   304
            .notStarts("/");
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   305
        test("/")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   306
            .starts("/")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   307
            .notStarts("/foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   308
        test("/foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   309
            .starts("/")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   310
            .starts("/foo")
8180
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   311
            .notStarts("/f")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   312
            .notStarts("");
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   313
        test("/foo/bar")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   314
            .starts("/")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   315
            .starts("/foo")
8180
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   316
            .starts("/foo/")
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   317
            .starts("/foo/bar")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   318
            .notStarts("/f")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   319
            .notStarts("foo")
8180
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   320
            .notStarts("foo/bar")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   321
            .notStarts("");
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   322
        test("foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   323
            .starts("foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   324
            .notStarts("f");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   325
        test("foo/bar")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   326
            .starts("foo")
8180
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   327
            .starts("foo/")
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   328
            .starts("foo/bar")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   329
            .notStarts("f")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   330
            .notStarts("/foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   331
            .notStarts("/foo/bar");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   332
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   333
        // endsWith
8180
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   334
        test("")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   335
            .ends("")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   336
            .notEnds("/");
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   337
        test("/")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   338
            .ends("/")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   339
            .notEnds("foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   340
            .notEnds("/foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   341
        test("/foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   342
            .ends("foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   343
            .ends("/foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   344
            .notEnds("/");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   345
        test("/foo/bar")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   346
            .ends("bar")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   347
            .ends("foo/bar")
8180
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   348
            .ends("foo/bar/")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   349
            .ends("/foo/bar")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   350
            .notEnds("/bar");
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   351
        test("/foo/bar/")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   352
            .ends("bar")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   353
            .ends("foo/bar")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   354
            .ends("foo/bar/")
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   355
            .ends("/foo/bar")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   356
            .notEnds("/bar");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   357
        test("foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   358
            .ends("foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   359
        test("foo/bar")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   360
            .ends("bar")
8180
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   361
            .ends("bar/")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   362
            .ends("foo/bar/")
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   363
            .ends("foo/bar");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   364
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   365
        // elements
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   366
        test("a/b/c")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   367
            .element(0,"a")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   368
            .element(1,"b")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   369
            .element(2,"c");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   370
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   371
        // isAbsolute
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   372
        test("/")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   373
            .absolute();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   374
        test("/tmp")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   375
            .absolute();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   376
        test("tmp")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   377
            .notAbsolute();
8180
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   378
        test("")
ac21bc160e79 7005986: (zipfs) ZipPath.startsWith() fails because of the implementation of getName(index)
sherman
parents: 8165
diff changeset
   379
            .notAbsolute();
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   380
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   381
        // resolve
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   382
        test("/tmp")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   383
            .resolve("foo", "/tmp/foo")
37803
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   384
            .resolve("/foo", "/foo")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   385
            .resolve("", "/tmp");
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   386
        test("tmp")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   387
            .resolve("foo", "tmp/foo")
37803
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   388
            .resolve("/foo", "/foo")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   389
            .resolve("", "tmp");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   390
        test("")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   391
            .resolve("", "")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   392
            .resolve("foo", "foo")
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   393
            .resolve("/foo", "/foo");
43193
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   394
        test("/")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   395
            .resolve("", "/")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   396
            .resolve("foo", "/foo")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   397
            .resolve("/foo", "/foo")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   398
            .resolve("/foo/", "/foo");
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   399
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   400
        // resolve(Path)
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   401
        test("/tmp")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   402
            .resolvePath("foo", "/tmp/foo")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   403
            .resolvePath("/foo", "/foo")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   404
            .resolvePath("", "/tmp");
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   405
        test("tmp")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   406
            .resolvePath("foo", "tmp/foo")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   407
            .resolvePath("/foo", "/foo")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   408
            .resolvePath("", "tmp");
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   409
        test("")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   410
            .resolvePath("", "")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   411
            .resolvePath("foo", "foo")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   412
            .resolvePath("/foo", "/foo");
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   413
        test("/")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   414
            .resolvePath("", "/")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   415
            .resolvePath("foo", "/foo")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   416
            .resolvePath("/foo", "/foo")
a8e490921d20 8172921: Zip filesystem performance improvement and code cleanup
sherman
parents: 38568
diff changeset
   417
            .resolvePath("/foo/", "/foo");
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   418
37803
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   419
        // resolveSibling
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   420
        test("foo")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   421
            .resolveSibling("bar", "bar")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   422
            .resolveSibling("/bar", "/bar")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   423
            .resolveSibling("", "");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   424
        test("foo/bar")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   425
            .resolveSibling("gus", "foo/gus")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   426
            .resolveSibling("/gus", "/gus")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   427
            .resolveSibling("", "foo");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   428
        test("/foo")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   429
            .resolveSibling("gus", "/gus")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   430
            .resolveSibling("/gus", "/gus")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   431
            .resolveSibling("", "/");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   432
        test("/foo/bar")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   433
            .resolveSibling("gus", "/foo/gus")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   434
            .resolveSibling("/gus", "/gus")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   435
            .resolveSibling("", "/foo");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   436
        test("")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   437
            .resolveSibling("foo", "foo")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   438
            .resolveSibling("/foo", "/foo")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   439
            .resolve("", "");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   440
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   441
        // relativize
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   442
        test("/a/b/c")
8165
b67d8b1f4e46 7015391: (zipfs) Update zip provider for 1/2011 changes
sherman
parents: 8005
diff changeset
   443
            .relativize("/a/b/c", "")
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   444
            .relativize("/a/b/c/d/e", "d/e")
37803
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   445
            .relativize("/a/x", "../../x")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   446
            .relativize("/x", "../../../x");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   447
        test("a/b/c")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   448
            .relativize("a/b/c/d", "d")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   449
            .relativize("a/x", "../../x")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   450
            .relativize("x", "../../../x")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   451
            .relativize("", "../../..");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   452
        test("")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   453
            .relativize("a", "a")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   454
            .relativize("a/b/c", "a/b/c")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   455
            .relativize("", "");
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   456
        test("/")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   457
            .relativize("/a", "a")
ac955d7f5271 8150496: (zipfs) Fix performance issues in zip-fs
sherman
parents: 27565
diff changeset
   458
            .relativize("/a/c", "a/c");
38568
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   459
        // 8146754
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   460
        test("/tmp/path")
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   461
            .relativize("/tmp/path/a.txt", "a.txt");
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   462
        test("/tmp/path/")
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   463
            .relativize("/tmp/path/a.txt", "a.txt");
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   464
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   465
        // normalize
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   466
        test("/")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   467
            .normalize("/");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   468
        test("foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   469
            .normalize("foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   470
        test("/foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   471
            .normalize("/foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   472
        test(".")
8165
b67d8b1f4e46 7015391: (zipfs) Update zip provider for 1/2011 changes
sherman
parents: 8005
diff changeset
   473
            .normalize("");
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   474
        test("..")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   475
            .normalize("..");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   476
        test("/..")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   477
            .normalize("/");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   478
        test("/../..")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   479
            .normalize("/");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   480
        test("foo/.")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   481
            .normalize("foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   482
        test("./foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   483
            .normalize("foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   484
        test("foo/..")
8165
b67d8b1f4e46 7015391: (zipfs) Update zip provider for 1/2011 changes
sherman
parents: 8005
diff changeset
   485
            .normalize("");
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   486
        test("../foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   487
            .normalize("../foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   488
        test("../../foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   489
            .normalize("../../foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   490
        test("foo/bar/..")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   491
            .normalize("foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   492
        test("foo/bar/gus/../..")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   493
            .normalize("foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   494
        test("/foo/bar/gus/../..")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   495
            .normalize("/foo");
8005
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   496
        test("/./.")
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   497
            .normalize("/");
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   498
        test("/.")
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   499
            .normalize("/");
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   500
        test("/./abc")
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   501
            .normalize("/abc");
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   502
        // invalid
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   503
        test("foo\u0000bar")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   504
            .invalid();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   505
        test("\u0000foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   506
            .invalid();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   507
        test("bar\u0000")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   508
            .invalid();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   509
        test("//foo\u0000bar")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   510
            .invalid();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   511
        test("//\u0000foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   512
            .invalid();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   513
        test("//bar\u0000")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   514
            .invalid();
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   515
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   516
        // normalization
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   517
        test("//foo//bar")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   518
            .string("/foo/bar")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   519
            .root("/")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   520
            .parent("/foo")
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   521
            .name("bar");
8005
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   522
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   523
        // isSameFile
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   524
        test("/fileDoesNotExist")
5bc99c45810a 7006576: (zipfs) Path.exists() always returns false on dirs when zip/JAR file built without dirs
sherman
parents: 6699
diff changeset
   525
            .isSameFile("/fileDoesNotExist");
38568
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   526
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   527
        // 8139956
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   528
        out.println("check getNameCount");
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   529
        int nc = fs.getPath("/").relativize(fs.getPath("/")).getNameCount();
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   530
        if (nc != 1) {
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   531
            out.format("\tExpected: 1\n");
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   532
            out.format("\tActual: %d\n",  nc);
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   533
            throw new RuntimeException("getNameCount of empty path failed");
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   534
        }
f992c34c85b3 8147539: (zipfs) ZipPath should throw ProviderMismatchException when invoking register()
sherman
parents: 37803
diff changeset
   535
     }
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   536
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   537
    static void npes() {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   538
        header("NullPointerException");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   539
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   540
        Path path = fs.getPath("foo");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   541
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   542
        try {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   543
            path.resolve((String)null);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   544
            throw new RuntimeException("NullPointerException not thrown");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   545
        } catch (NullPointerException npe) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   546
        }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   547
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   548
        try {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   549
            path.relativize(null);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   550
            throw new RuntimeException("NullPointerException not thrown");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   551
        } catch (NullPointerException npe) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   552
        }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   553
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   554
        try {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   555
            path.compareTo(null);
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   556
            throw new RuntimeException("NullPointerException not thrown");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   557
        } catch (NullPointerException npe) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   558
        }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   559
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   560
        try {
8165
b67d8b1f4e46 7015391: (zipfs) Update zip provider for 1/2011 changes
sherman
parents: 8005
diff changeset
   561
            path.startsWith((Path)null);
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   562
            throw new RuntimeException("NullPointerException not thrown");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   563
        } catch (NullPointerException npe) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   564
        }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   565
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   566
        try {
8165
b67d8b1f4e46 7015391: (zipfs) Update zip provider for 1/2011 changes
sherman
parents: 8005
diff changeset
   567
            path.endsWith((Path)null);
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   568
            throw new RuntimeException("NullPointerException not thrown");
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   569
        } catch (NullPointerException npe) {
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   570
        }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   571
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   572
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   573
46901
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   574
    static void mismatchedProviders() {
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   575
        header("ProviderMismatchException");
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   576
        Path path = fs.getPath("foo");
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   577
        Path other = Paths.get("foo");
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   578
        try {
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   579
            path.compareTo(other);
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   580
            throw new RuntimeException("ProviderMismatchException not thrown");
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   581
        } catch (ProviderMismatchException pme) {}
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   582
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   583
        try {
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   584
            path.resolve(other);
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   585
            throw new RuntimeException("ProviderMismatchException not thrown");
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   586
        } catch (ProviderMismatchException pme) {}
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   587
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   588
        try {
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   589
            path.relativize(other);
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   590
            throw new RuntimeException("ProviderMismatchException not thrown");
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   591
        } catch (ProviderMismatchException pme) {}
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   592
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   593
        try {
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   594
            if (path.startsWith(other))
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   595
                throw new RuntimeException("providerMismatched startsWith() returns true ");
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   596
            if (path.endsWith(other))
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   597
                throw new RuntimeException("providerMismatched endsWith() returns true ");
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   598
        } catch (ProviderMismatchException pme) {
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   599
            throw new RuntimeException("ProviderMismatchException is thrown for starts/endsWith()");
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   600
        }
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   601
    }
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   602
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27260
diff changeset
   603
    public static void main(String[] args) throws IOException {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27260
diff changeset
   604
        // create empty JAR file, test doesn't require any contents
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27260
diff changeset
   605
        Path emptyJar = Utils.createJarFile("empty.jar");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27260
diff changeset
   606
54693
d890ba18f64b 8218875: Add new FileSystems.newFileSystem methods
lancea
parents: 54641
diff changeset
   607
        fs = FileSystems.newFileSystem(emptyJar);
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27260
diff changeset
   608
        try {
46901
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   609
            npes();
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   610
            mismatchedProviders();
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   611
            doPathOpTests();
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27260
diff changeset
   612
        } finally {
46901
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   613
            fs.close();
f63587417ae6 8186142: ZipPath.{starts,ends}With(nonZipPath) throws an exception, but should return false
sherman
parents: 43193
diff changeset
   614
        }
6699
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   615
    }
d8229570529d 6990846: Demo: NIO.2 filesystem provider for zip/jar archives
sherman
parents:
diff changeset
   616
}