jdk/test/jdk/internal/jrtfs/PathOps.java
author sherman
Fri, 15 Apr 2016 13:05:52 -0700
changeset 37365 9cc4eb4d7491
parent 27565 729f9700483a
permissions -rw-r--r--
8147460: Clean-up jrtfs implementation Reviewed-by: alanb, jlaskey, sundar
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
     1
/*
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
     2
 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
     4
 *
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
     7
 * published by the Free Software Foundation.
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
     8
 *
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    13
 * accompanied this code).
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    14
 *
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    18
 *
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    21
 * questions.
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    22
 */
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    23
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    24
import java.nio.file.FileSystem;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    25
import java.nio.file.FileSystems;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    26
import java.nio.file.Files;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    27
import java.nio.file.Path;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    28
import java.nio.file.InvalidPathException;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    29
import java.net.URI;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    30
import java.io.IOException;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    31
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    32
/**
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    33
 * @test
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    34
 * @summary Tests jrt path operations
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    35
 */
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    36
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    37
public class PathOps {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    38
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    39
    static final java.io.PrintStream out = System.out;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    40
    static FileSystem fs;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    41
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    42
    private String input;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    43
    private Path path;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    44
    private Exception exc;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    45
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
    46
    private PathOps(String first, String... more) {
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    47
        out.println();
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
    48
        input = first;
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    49
        try {
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
    50
            path = fs.getPath(first, more);
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
    51
            out.format("%s -> %s", first, path);
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    52
        } catch (Exception x) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    53
            exc = x;
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
    54
            out.format("%s -> %s", first, x);
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    55
        }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    56
        out.println();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    57
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    58
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    59
    Path path() {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    60
        return path;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    61
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    62
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    63
    void fail() {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    64
        throw new RuntimeException("PathOps failed");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    65
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    66
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    67
    void checkPath() {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    68
        if (path == null) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    69
            throw new InternalError("path is null");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    70
        }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    71
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    72
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    73
    void check(Object result, String expected) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    74
        out.format("\tExpected: %s\n", expected);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    75
        out.format("\tActual: %s\n",  result);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    76
        if (result == null) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    77
            if (expected == null) return;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    78
        } else {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    79
            // compare string representations
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    80
            if (expected != null && result.toString().equals(expected.toString()))
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    81
                return;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    82
        }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    83
        fail();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    84
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    85
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    86
    void check(Object result, boolean expected) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    87
        check(result, Boolean.toString(expected));
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    88
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    89
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    90
    PathOps root(String expected) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    91
        out.println("check root");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    92
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    93
        check(path.getRoot(), expected);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    94
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    95
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    96
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    97
    PathOps parent(String expected) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    98
        out.println("check parent");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
    99
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   100
        check(path.getParent(), expected);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   101
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   102
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   103
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   104
    PathOps name(String expected) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   105
        out.println("check name");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   106
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   107
        check(path.getFileName(), expected);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   108
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   109
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   110
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   111
    PathOps element(int index, String expected) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   112
        out.format("check element %d\n", index);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   113
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   114
        check(path.getName(index), expected);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   115
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   116
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   117
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   118
    PathOps subpath(int startIndex, int endIndex, String expected) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   119
        out.format("test subpath(%d,%d)\n", startIndex, endIndex);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   120
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   121
        check(path.subpath(startIndex, endIndex), expected);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   122
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   123
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   124
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   125
    PathOps starts(String prefix) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   126
        out.format("test startsWith with %s\n", prefix);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   127
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   128
        Path s = fs.getPath(prefix);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   129
        check(path.startsWith(s), true);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   130
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   131
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   132
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   133
    PathOps notStarts(String prefix) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   134
        out.format("test not startsWith with %s\n", prefix);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   135
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   136
        Path s = fs.getPath(prefix);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   137
        check(path.startsWith(s), false);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   138
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   139
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   140
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   141
    PathOps ends(String suffix) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   142
        out.format("test endsWith %s\n", suffix);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   143
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   144
        Path s = fs.getPath(suffix);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   145
        check(path.endsWith(s), true);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   146
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   147
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   148
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   149
    PathOps notEnds(String suffix) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   150
        out.format("test not endsWith %s\n", suffix);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   151
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   152
        Path s = fs.getPath(suffix);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   153
        check(path.endsWith(s), false);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   154
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   155
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   156
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   157
    PathOps absolute() {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   158
        out.println("check path is absolute");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   159
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   160
        check(path.isAbsolute(), true);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   161
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   162
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   163
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   164
    PathOps notAbsolute() {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   165
        out.println("check path is not absolute");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   166
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   167
        check(path.isAbsolute(), false);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   168
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   169
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   170
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   171
    PathOps resolve(String other, String expected) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   172
        out.format("test resolve %s\n", other);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   173
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   174
        check(path.resolve(other), expected);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   175
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   176
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   177
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   178
    PathOps resolveSibling(String other, String expected) {
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   179
        out.format("test resolveSibling %s\n", other);
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   180
        checkPath();
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   181
        check(path.resolveSibling(other), expected);
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   182
        return this;
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   183
    }
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   184
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   185
    PathOps relativize(String other, String expected) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   186
        out.format("test relativize %s\n", other);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   187
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   188
        Path that = fs.getPath(other);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   189
        check(path.relativize(that), expected);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   190
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   191
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   192
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   193
    PathOps normalize(String expected) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   194
        out.println("check normalized path");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   195
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   196
        check(path.normalize(), expected);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   197
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   198
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   199
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   200
    PathOps string(String expected) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   201
        out.println("check string representation");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   202
        checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   203
        check(path, expected);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   204
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   205
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   206
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   207
    PathOps isSameFile(String target) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   208
        try {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   209
            out.println("check two paths are same");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   210
            checkPath();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   211
            check(Files.isSameFile(path, test(target).path()), true);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   212
        } catch (IOException ioe) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   213
            fail();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   214
        }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   215
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   216
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   217
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   218
    PathOps invalid() {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   219
        if (!(exc instanceof InvalidPathException)) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   220
            out.println("InvalidPathException not thrown as expected");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   221
            fail();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   222
        }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   223
        return this;
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   224
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   225
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   226
    static PathOps test(String s) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   227
        return new PathOps(s);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   228
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   229
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   230
    static PathOps test(String first, String... more) {
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   231
        return new PathOps(first, more);
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   232
    }
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   233
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   234
    // -- PathOpss --
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   235
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   236
    static void header(String s) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   237
        out.println();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   238
        out.println();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   239
        out.println("-- " + s + " --");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   240
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   241
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   242
    static void doPathOpTests() {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   243
        header("Path operations");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   244
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   245
        // construction
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   246
        test("/")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   247
            .string("/");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   248
        test("/", "")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   249
            .string("/");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   250
        test("/", "foo")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   251
            .string("/foo");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   252
        test("/", "/foo")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   253
            .string("/foo");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   254
        test("/", "foo/")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   255
            .string("/foo");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   256
        test("foo", "bar", "gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   257
            .string("foo/bar/gus");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   258
        test("")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   259
            .string("");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   260
        test("", "/")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   261
            .string("/");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   262
        test("", "foo", "", "bar", "", "/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   263
            .string("foo/bar/gus");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   264
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   265
        // all components
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   266
        test("/a/b/c")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   267
            .root("/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   268
            .parent("/a/b")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   269
            .name("c");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   270
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   271
        // root component only
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   272
        test("/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   273
            .root("/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   274
            .parent(null)
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   275
            .name(null);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   276
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   277
        // no root component
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   278
        test("a/b")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   279
            .root(null)
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   280
            .parent("a")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   281
            .name("b");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   282
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   283
        // name component only
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   284
        test("foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   285
             .root(null)
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   286
             .parent(null)
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   287
             .name("foo");
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   288
        test("")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   289
             .root(null)
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   290
             .parent(null)
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   291
             .name("");
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   292
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   293
        // startsWith
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   294
        test("")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   295
            .starts("")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   296
            .notStarts("/");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   297
        test("/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   298
            .starts("/")
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   299
            .notStarts("")
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   300
            .notStarts("/foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   301
        test("/foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   302
            .starts("/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   303
            .starts("/foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   304
            .notStarts("/f")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   305
            .notStarts("");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   306
        test("/foo/bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   307
            .starts("/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   308
            .starts("/foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   309
            .starts("/foo/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   310
            .starts("/foo/bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   311
            .notStarts("/f")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   312
            .notStarts("foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   313
            .notStarts("foo/bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   314
            .notStarts("");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   315
        test("foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   316
            .starts("foo")
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   317
            .notStarts("")
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   318
            .notStarts("f");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   319
        test("foo/bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   320
            .starts("foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   321
            .starts("foo/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   322
            .starts("foo/bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   323
            .notStarts("f")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   324
            .notStarts("/foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   325
            .notStarts("/foo/bar");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   326
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   327
        // endsWith
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   328
        test("")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   329
            .ends("")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   330
            .notEnds("/");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   331
        test("/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   332
            .ends("/")
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   333
            .notEnds("")
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   334
            .notEnds("foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   335
            .notEnds("/foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   336
        test("/foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   337
            .ends("foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   338
            .ends("/foo")
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   339
            .notEnds("/")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   340
            .notEnds("fool");
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   341
        test("/foo/bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   342
            .ends("bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   343
            .ends("foo/bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   344
            .ends("foo/bar/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   345
            .ends("/foo/bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   346
            .notEnds("/bar");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   347
        test("/foo/bar/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   348
            .ends("bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   349
            .ends("foo/bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   350
            .ends("foo/bar/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   351
            .ends("/foo/bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   352
            .notEnds("/bar");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   353
        test("foo")
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   354
            .ends("foo")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   355
            .notEnds("")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   356
            .notEnds("oo")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   357
            .notEnds("oola");
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   358
        test("foo/bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   359
            .ends("bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   360
            .ends("bar/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   361
            .ends("foo/bar/")
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   362
            .ends("foo/bar")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   363
            .notEnds("r")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   364
            .notEnds("barmaid")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   365
            .notEnds("/bar")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   366
            .notEnds("ar")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   367
            .notEnds("barack")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   368
            .notEnds("/bar")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   369
            .notEnds("o/bar");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   370
        test("foo/bar/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   371
            .ends("gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   372
            .ends("bar/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   373
            .ends("foo/bar/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   374
            .notEnds("g")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   375
            .notEnds("/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   376
            .notEnds("r/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   377
            .notEnds("barack/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   378
            .notEnds("bar/gust");
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   379
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   380
        // elements
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   381
        test("a/b/c")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   382
            .element(0,"a")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   383
            .element(1,"b")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   384
            .element(2,"c");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   385
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   386
        // isAbsolute
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   387
        test("/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   388
            .absolute();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   389
        test("/tmp")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   390
            .absolute();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   391
        test("tmp")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   392
            .notAbsolute();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   393
        test("")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   394
            .notAbsolute();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   395
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   396
        // resolve
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   397
        test("/tmp")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   398
            .resolve("foo", "/tmp/foo")
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   399
            .resolve("/foo", "/foo")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   400
            .resolve("", "/tmp");
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   401
        test("tmp")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   402
            .resolve("foo", "tmp/foo")
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   403
            .resolve("/foo", "/foo")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   404
            .resolve("", "tmp");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   405
        test("")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   406
            .resolve("", "")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   407
            .resolve("foo", "foo")
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   408
            .resolve("/foo", "/foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   409
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   410
        // resolveSibling
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   411
        test("foo")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   412
            .resolveSibling("bar", "bar")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   413
            .resolveSibling("/bar", "/bar")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   414
            .resolveSibling("", "");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   415
        test("foo/bar")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   416
            .resolveSibling("gus", "foo/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   417
            .resolveSibling("/gus", "/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   418
            .resolveSibling("", "foo");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   419
        test("/foo")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   420
            .resolveSibling("gus", "/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   421
            .resolveSibling("/gus", "/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   422
            .resolveSibling("", "/");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   423
        test("/foo/bar")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   424
            .resolveSibling("gus", "/foo/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   425
            .resolveSibling("/gus", "/gus")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   426
            .resolveSibling("", "/foo");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   427
        test("")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   428
            .resolveSibling("foo", "foo")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   429
            .resolveSibling("/foo", "/foo")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   430
            .resolve("", "");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   431
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   432
        // relativize
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   433
        test("/a/b/c")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   434
            .relativize("/a/b/c", "")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   435
            .relativize("/a/b/c/d/e", "d/e")
37365
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   436
            .relativize("/a/x", "../../x")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   437
            .relativize("/x", "../../../x");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   438
        test("a/b/c")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   439
            .relativize("a/b/c/d", "d")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   440
            .relativize("a/x", "../../x")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   441
            .relativize("x", "../../../x")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   442
            .relativize("", "../../..");
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   443
        test("")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   444
            .relativize("a", "a")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   445
            .relativize("a/b/c", "a/b/c")
9cc4eb4d7491 8147460: Clean-up jrtfs implementation
sherman
parents: 27565
diff changeset
   446
            .relativize("", "");
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   447
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   448
        // normalize
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   449
        test("/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   450
            .normalize("/");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   451
        test("foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   452
            .normalize("foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   453
        test("/foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   454
            .normalize("/foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   455
        test(".")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   456
            .normalize("");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   457
        test("..")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   458
            .normalize("..");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   459
        test("/..")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   460
            .normalize("/");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   461
        test("/../..")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   462
            .normalize("/");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   463
        test("foo/.")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   464
            .normalize("foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   465
        test("./foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   466
            .normalize("foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   467
        test("foo/..")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   468
            .normalize("");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   469
        test("../foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   470
            .normalize("../foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   471
        test("../../foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   472
            .normalize("../../foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   473
        test("foo/bar/..")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   474
            .normalize("foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   475
        test("foo/bar/gus/../..")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   476
            .normalize("foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   477
        test("/foo/bar/gus/../..")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   478
            .normalize("/foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   479
        test("/./.")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   480
            .normalize("/");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   481
        test("/.")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   482
            .normalize("/");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   483
        test("/./abc")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   484
            .normalize("/abc");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   485
        // invalid
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   486
        test("foo\u0000bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   487
            .invalid();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   488
        test("\u0000foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   489
            .invalid();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   490
        test("bar\u0000")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   491
            .invalid();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   492
        test("//foo\u0000bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   493
            .invalid();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   494
        test("//\u0000foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   495
            .invalid();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   496
        test("//bar\u0000")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   497
            .invalid();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   498
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   499
        // normalization
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   500
        test("//foo//bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   501
            .string("/foo/bar")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   502
            .root("/")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   503
            .parent("/foo")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   504
            .name("bar");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   505
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   506
        // isSameFile
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   507
        test("/fileDoesNotExist")
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   508
            .isSameFile("/fileDoesNotExist");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   509
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   510
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   511
    static void npes() {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   512
        header("NullPointerException");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   513
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   514
        Path path = fs.getPath("foo");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   515
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   516
        try {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   517
            path.resolve((String)null);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   518
            throw new RuntimeException("NullPointerException not thrown");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   519
        } catch (NullPointerException npe) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   520
        }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   521
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   522
        try {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   523
            path.relativize(null);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   524
            throw new RuntimeException("NullPointerException not thrown");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   525
        } catch (NullPointerException npe) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   526
        }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   527
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   528
        try {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   529
            path.compareTo(null);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   530
            throw new RuntimeException("NullPointerException not thrown");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   531
        } catch (NullPointerException npe) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   532
        }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   533
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   534
        try {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   535
            path.startsWith((Path)null);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   536
            throw new RuntimeException("NullPointerException not thrown");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   537
        } catch (NullPointerException npe) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   538
        }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   539
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   540
        try {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   541
            path.endsWith((Path)null);
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   542
            throw new RuntimeException("NullPointerException not thrown");
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   543
        } catch (NullPointerException npe) {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   544
        }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   545
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   546
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   547
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   548
    public static void main(String[] args) throws Throwable {
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   549
        fs = FileSystems.getFileSystem(URI.create("jrt:/"));
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   550
        npes();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   551
        doPathOpTests();
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   552
    }
729f9700483a 8049367: Modular Run-Time Images
chegar
parents:
diff changeset
   553
}