-
Notifications
You must be signed in to change notification settings - Fork 620
/
Copy pathPath.test.ts
35 lines (31 loc) · 1.56 KB
/
Path.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
import * as path from 'path';
import { Path } from '../Path';
function toPosixPath(value: string): string {
return value.replace(/[\\\/]/g, '/');
}
function toNativePath(value: string): string {
return value.replace(/[\\\/]/g, path.sep);
}
function relativeCaseInsensitive(from: string, to: string): string {
return toPosixPath(Path['_relativeCaseInsensitive'](toNativePath(from), toNativePath(to)));
}
describe(Path.name, () => {
test('_detectCaseSensitive()', () => {
// NOTE: To ensure these tests are deterministic, only use absolute paths
expect(relativeCaseInsensitive('/', '/')).toEqual('');
expect(relativeCaseInsensitive('/', '/a')).toEqual('a');
expect(relativeCaseInsensitive('/', '/a/')).toEqual('a');
expect(relativeCaseInsensitive('/', '/a//')).toEqual('a');
expect(relativeCaseInsensitive('/', '/a/b')).toEqual('a/b');
expect(relativeCaseInsensitive('/', '/a/b/c')).toEqual('a/b/c');
expect(relativeCaseInsensitive('/A', '/a/b/c')).toEqual('b/c');
expect(relativeCaseInsensitive('/A/', '/a/b/c')).toEqual('b/c');
expect(relativeCaseInsensitive('/A/B', '/a/b/c')).toEqual('c');
expect(relativeCaseInsensitive('/A/b/C', '/a/b/c')).toEqual('');
expect(relativeCaseInsensitive('/a/B/c', '/a/b/c')).toEqual('');
expect(relativeCaseInsensitive('/a/B/c/D', '/a/b/c')).toEqual('..');
expect(relativeCaseInsensitive('/a/B/c/D', '/a/b/c/e')).toEqual('../e');
});
});